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

Вк Шифр

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

Идея

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

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

Началось все с одной идеи (в жизнь я ее так и не воплотил, так что описывать не стану), для которой требовалось использование известного 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
Теги

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

  1. Champion-111 #

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

  2. Miha_xXx #

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

  3. KAKTyC #

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

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