Вк Шифр: история создания приложения

Всем добрый день, меня зовут Георгий, и, как вы уже догадались, эта статья расскажет вам, как создавалось приложение для шифрования переписки ВКонтакте «Вк Шифр».

Вк Шифр

Идея

Откуда вообще берутся идеи для приложения? Одним они приходят в голову во время поездки в общественном транспорте, другим — при использовании иных приложений, третьим – при просмотре аналогов для другой ОС и твердой уверенности в том, что они смогут сделать лучше.

Ни один из этих вариантов не подходит для моей ситуации. Дело в том, что я имел небольшой студенческий опыт написания приложений, т. к. уж больно нравился (и нравится до сих пор) мне этот процесс — создавать что-то из ничего, превращая написанные строки кода во что-то «живое» и функционирующее (думаю, создатели приложений меня поймут). Итак, я закончил университет, устроился на работу и обнаружил, что у меня остается достаточно свободного времени для реализации своего желания создавать, которое не исчезло за эти годы.

Началось все с одной идеи (в жизнь я ее так и не воплотил, так что описывать не стану), для которой требовалось использование известного VkApi. Ни разу с ним не работал, поэтому знакомство происходило довольно долго.

Screenshot_2015-11-19-10-35-01 Screenshot_2015-11-19-10-35-24

Первой моей победой было решение проблемы с авторизацией, т. к. пример из «ВК-активности» у меня отказывался работать (если у вас все заработало с 1-го раза, поздравляю, вы не криворукий программист), но методом тыка я все-таки смог ее реализовать. Естественно, большинства методов из списка (https://vk.com/dev/methods) в api для Android не оказалось. И вот я освоил специфику request’ов и response’ов, вывел список друзей и их фото (это 2 последовательных запроса). Это была моя вторая маленькая победа! Здесь и пришла в голову мысль о создании небольшого мессенджера, но не простого (зачем выдирать из приложения ВК уже отлично работающую часть?), а шифрующего сообщения. От предыдущей идеи пришлось отказаться, но сейчас я об этом совершенно не жалею.

Реализация

Как я уже говорил, в api не так много работающих методов, так что банально вывести на экран диалоги не представлялось возможным. Пришлось дописывать соответствующие классы, опираясь на примеры для других запросов. Было это не так уж и сложно, вопрос стоял только во времени. По аналогии пришлось все делать и для истории переписок. В связи с особенностями response’ов я был вынужден разделить диалоги и беседы, т. к. дальнейшая их обработка слишком сильно отличалась. Таким образом, начальный вариант навигации содержал всего 3 пункта: диалоги, друзья и беседы.

Отправку сообщений также пришлось реализовывать самостоятельно, и где-то через 2,5 недели после начала работы (в рабочие дни уделял от 2 до 4 часов на приложение, в выходные дел и без этого хватало) я смог отправить первое сообщение «test». Отличное чувство!

Screenshot_2015-11-19-10-35-42 Screenshot_2015-11-19-10-36-08

Отобразить все, что приходит в сообщении, было, пожалуй, самым трудным, а все из-за страшного слова «вложения» (attachments)… До этого момента я и не задумывался, как много разного контента люди пересылают друг другу через ВК! Тут вам и другие сообщения, и посты, и картинки/аудио/видео/ссылки/документы/стикеры/подарки. Половины из этого нет в стандартном api. Для первых двух пришлось использовать рекурсивные методы вытаскивания контента, с остальными все было гораздо проще. До релиза я переписал отображение сообщений где-то 5 раз.

И вот где-то в середине сентября нынешнего года я подошел к этапу, на котором мое приложение могло все отобразить, но было мертвым из-за отсутствия сервисов обновления. С этим я также раньше не сталкивался, но быстро освоил и внедрил в проект, после чего постоянно модернизировал, чтобы экономить ресурсы телефона и интернет-трафик пользователей.

После добавил вкладку с настройками, в которой есть возможность отключения оповещений (некоторых это раздражает) и установки пароля (а это уже для особо скрытных пользователей). Далее к этим опциям присоединились темы оформления (над ними тоже пришлось немного голову поломать), возможность оставаться офлайн и оставлять сообщения непрочитанными после просмотра. В навигацию также попали функции «пригласить друзей» и «выйти из ВК».

Перейдем к главной задумке – шифрованию сообщений. Для этого я использовал пакет org.apache.commons, который использует 2 ключа (первый — для шифрования ваших сообщений и их расшифровки у вас и собеседника, второй – для аналогичных действий со стороны вашего собеседника) для каждой переписки. Таким образом, одно и то же слово в разных переписках будет выглядеть по-разному. Чуть позже я научился шифровать аудио- и видеовложения, и в самом конце — фотографии. Зашифрованные сообщения в ВК отображаются как набор несвязных символов, в духе «gaQOCDp1h7d2kdlEHm5Q3g==».

После длительных тестовых проверок и устранения багов, покупки publish–аккаунта на GooglePlay (все те же 25 долларов), приложение вышло в свет 4 ноября.

Трудности

Их было много, поэтому не буду зацикливаться на каждом, а сделаю список:
— небольшой опыт разработки для подобного проекта;
— VkApi, на дополнение которого ушло много времени;
— вложения;
— emoji, они же всеми любимые смайлы (огромное спасибо этим ребятам за их труды — https://github.com/rockerhieu/emojicon);
— темы оформления (если делали подобное — поймете);
— время (его всегда мало);
— собственно ВК, который отказался рекламировать наш продукт из-за личных соображений (потеря данных);
— финансовое планирование и сами финансы (уделите этому пункту ваше внимание до публикации приложения, т. к. в противном случае медленный старт вам гарантирован).

Заключение

В конце хотелось бы сказать, что изначально планировалась платная версия, в которой была бы возможность шифровать вложения, но подобные приложения крайне быстро ломаются и выкладываются на «черные» маркеты, где у них и будет наибольшее количество скачиваний (особенно если учесть, как «легко» наш народ расстается с деньгами). Поэтому было принято решение дать пользователям весь контент, который я сумел реализовать, чтобы моя же жадность не погубила весь проект.

Screenshot_2015-11-19-10-48-33 Screenshot_2015-11-19-10-57-40

На «Вк Шифр» ушло 2,5 месяца работы и 110 написанных классов, не считая те, которыми я дополнил VkApi. На данный момент это самый большой проект, над которым я когда-либо работал (знаю, что для вас такие цифры могут показаться смешными, но для меня это немалое достижение). Я очень многому научился, но не планирую на этом останавливаться.

Отдельную благодарность хочу высказать дизайнеру, которая со мной работала, за ее советы, идеи и помощь. Мы полностью переделывали дизайн 3 раза, а мелкие изменения просто не счесть. И все это было основано на голом энтузиазме. Спасибо за внимание и удачного вам шифрования!

Приложение: Вк Шифр
Разработчик: SM Solutions Group
Категория: Социальные
Версия: 1.10
Цена: Бесплатно
Скачать: Google Play
Теги
Читайте также
Лучшие приложения для ремонта и стройки на Android

Судя по очередям в магазинах строительных материалов, товаров для ремонта и дома, с такими работами сталкивается плюс-минус каждый. Разработчики приложений тоже это понимают и готовят для пользователей смартфонов приложения, которые отлично помогут в этом. Некоторые являются справочником и сборником советов, другие готовы предложить инструменты, вроде уровня и рулетки, а третьи просто позволяют морально подготовиться к такому непростому делу, как ремонт. Если вы уже начали или только хотите что-то сделать с вашим домом, вам отлично подойдут приложения из этого списка.

Читать далее
Лучше VR и AR. Что такое XR и при чем тут Qualcomm

В последнее время много заговорили о виртуальной реальности. Конечно, ее не только что изобрели, но именно сейчас с выходом нового Half-Life и перехода на виртуальное общение тема как-то вспыхнула с новой силой. Хотя, до идеала этой технологии еще далеко. Далеко до идеала пока и с дополненной реальностью, которую так активно взялись развивать сначала Apple, а затем и Google. Дополненная реальность куда перспективней виртуальной. Ее можно использовать каждый день в любом месте, а виртуальную - только в ограниченном пространстве для погружения в отдельный мир. Но есть еще кое-что более интересное и перспективное - XR. И нет, это не модель iPhone прошлого поколения.

Читать далее
Будет ли работать отслеживание больных коронавирусом между странами?

С тех пор, как заговорили про приложения для отслеживания больных коронавирусом, общество разделилось на тех, кто был рад этому, и тех, кому в очередной раз дали повод поговорить о тотальной слежке. Пока передвижения людей почти во всем мире ограничены, это не так страшно, но представьте, что будет после открытия границ? Приложения или просто не будут работать, или придется делать что-то еще, чтобы система нормально функционировала. Что в этой ситуации должны будут сделать правительства стран и частные компании, которые продвигают идею такой слежки? Смогут ли они справиться не только с локальными, но и с глобальными перемещениями?

Читать далее

3 комментария Оставить свой

  1. Champion-111

    И сколько зарабатываешь в месяц? Я эт тебе создатель ВК!??

  2. Miha_xXx

    Если автор читает:
    Можно добавить в приложение донейт
    Кто захочет — задонатит

  3. KAKTyC

    Спасибо автору за труд, но основная тема не раскрыта. Метод шифрования, длина ключей, метод реализации. Почему взят не OpenSSL за основу? Это проверенный временем исходный код, зачем изобретать велосипеды?

Новый комментарий