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

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

Вк Шифр

Идея

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

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

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

Честно говоря, затрудняюсь сказать, когда именно это началось, но с какого-то момента всем вдруг стало не наплевать на дополненную реальность. Не то чтобы она стала главной технологией, но почему-то многие разработчики стали применять её в своих приложениях. Особенно отличилась Google, которая перевела в дополненную реальность и навигацию в Google Maps, и онлайн-экскурсии в Arts & Culture, и даже сделала виртуальную AR-рулетку, с помощью которой стало можно замерять габариты разного рода объектов. Но насколько точны эти измерения? Проверил на собственном опыте.

Читать далее
Как хакеры обманывают владельцев Android через «Google Фото»

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

Читать далее
Call of Duty и еще пять игр для Android, в которые лучше играть на геймпаде

Многим недостаточно просто играть на смартфоне и хочется воспользоваться контроллером. Учитывая интерес, который вызвала статья о геймпадах для смартфона, которая выходила на нашем сайте некоторое время назад, хотелось бы остановиться на этой теме подробнее. В игровом процессе с использованием смартфона действительно что-то есть и многие игры с ним раскрываются с новой стороны. Если вы еще не пробовали такие игры, я расскажу о некоторых из них. А заодно напомню, как можно подключить контроллер к смартфону. Можно пользоваться даже теми геймпадами, которые идут в комплекте к консолям.

Читать далее

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

  1. Champion-111

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

  2. Miha_xXx

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

  3. KAKTyC

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

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