Статьи

В к Шифр: історія створення додатка

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

Звідки взагалі беруться ідеї для програми? Одним вони приходять в голову під час поїздки в громадському транспорті, іншим - при використанні інших додатків, третім - при перегляді аналогів для іншої ОС і твердої впевненості в тому, що вони зможуть зробити краще.

Жоден з цих варіантів не підходить для моєї ситуації. Справа в тому, що я мав невеликий студентський досвід створення програмного забезпечення, т. К. Аж надто подобався (і подобається дотепер) мені цей процес - створювати щось з нічого, перетворюючи написані рядки коду в щось «живе» і функціонуюче (думаю, творці додатків мене зрозуміють). Отже, я закінчив університет, влаштувався на роботу і виявив, що у мене залишається досить вільного часу для реалізації свого бажання створювати, яке не зникло за ці роки.

Почалося все з однієї ідеї (в життя я її так і не втілив, так що описувати не стану), для якої потрібно використання відомого VkApi. Жодного разу з ним не працював, тому знайомство відбувалося досить довго.

Жодного разу з ним не працював, тому знайомство відбувалося досить довго

Першою моєю перемогою було рішення проблеми з авторизацією, т. К. Приклад з «ВК-активності» у мене відмовлявся працювати (якщо у вас все запрацювало з 1-го разу, вітаю, ви не криворукий програміст), але методом тику я все- таки зміг її реалізувати. Природно, більшості методів зі списку (https://vk.com/dev/methods) в api для Android не виявилося. І ось я освоїв специфіку request'ов і response'ов, вивів список друзів і їх фото (це 2 послідовних запиту). Це була моя друга маленька перемога! Тут і прийшла в голову думка про створення невеликого месенджера, але не простого (навіщо видирати з програми ВК вже відмінно працює частина?), А шифрувального повідомлення. Від попередньої ідеї довелося відмовитися, але зараз я про це зовсім не шкодую.

Як я вже говорив, в api не так багато працюють методів, так що банально вивести на екран діалоги не представлялося можливим. Довелося дописувати відповідні класи, спираючись на приклади для інших запитів. Було це не так вже й складно, питання стояло лише в часі. За аналогією довелося все робити і для історії листувань. У зв'язку з особливостями response'ов я був змушений розділити діалоги та бесіди, т. К. Подальша їх обробка занадто сильно відрізнялася. Таким чином, початковий варіант навігації містив всього 3 пункту: діалоги, друзі і бесіди.

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

Відмінне почуття

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

І ось десь в середині вересня нинішнього року я підійшов до етапу, на якому моє додаток могло все відобразити, але було мертвим через відсутність сервісів поновлення. З цим я також раніше не стикався, але швидко освоїв та впровадив в проект, після чого постійно модернізував, щоб економити ресурси телефону та інтернет-трафік користувачів.

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

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

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

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

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

Тому було прийнято рішення дати користувачам весь контент, який я зумів реалізувати, щоб моя ж жадібність не згубила весь проект

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

Окрему подяку хочу висловити дизайнеру, яка зі мною працювала, за її поради, ідеї і допомогу. Ми повністю переробляли дизайн 3 рази, а дрібні зміни просто не злічити. І все це було засноване на голому ентузіазмі. Дякую за увагу і вдалого вам шифрування!

Додаток:

Вк Шифр Розробник: SM Solutions Group Категорія: Соціальні Версія: 1.10 Ціна: Безкоштовно Завантажити: Google Play

Звідки взагалі беруться ідеї для програми?
Навіщо видирати з програми ВК вже відмінно працює частина?

Новости