DOU Проектор: мобільний застосунок для читання статей на DOU

У рубриці DOU Проектор всі охочі можуть презентувати свій продукт (як стартап, так і ламповий pet-проект). Якщо вам є про що розповісти — запрошуємо взяти участь. Якщо ні — можливо, серія надихне на створення власного made in Ukraine продукту. Питання і заявки на участь надсилайте на  Данный адрес e-mail защищен от спам-ботов, Вам необходимо включить Javascript для его просмотра. .

Усім привіт. Я Максим, Android-розробник, і в цій статті я хотів би представити вам DOU Reader — мобільний застосунок для читання статей на DOU.

Декілька слів про себе: я займаюсь мобільною розробкою вже понад 4 роки. Із самого початку знайомства з програмуванням я зрозумів, що мене надихає створення своїх проектів, які були б корисними для інших людей. Думка про те, що моя робота може принести комусь задоволення, заощадити час та зусилля, була дуже захопливою.

Крім основної роботи, я завжди виділяв час на реалізацію своїх ідей. Згодом я об’єднався зі своїм товаришем UX-дизайнером Олексієм. І невеликою командою ми почали втілювати наші ідеї у життя.

Ідея

Я, як і більшість сучасних програмістів, читаю доволі багато публікацій на ІТ-теми, щоб дізнаватися про нові технології та підходи. Щодня дорогою на роботу я читаю статті на багатьох ресурсах, зокрема DOU. Одного разу мені стало цікаво: чи існує мобільний застосунок для DOU, адже, переважно, застосунок більш зручний у навігації і має додаткові функції та можливості (як, наприклад, перегляд статей офлайн), що зручніше порівняно з мобільною версією сайту. Пошук застосунку на Google Play та сайті DOU не дав результатів. Тому ми з Олексієм вирішили власноруч реалізувати такий проект.

Реалізація

Передусім нам необхідно було дізнатися, чи існує API для DOU. Звернувшись до працівників DOU, ми одержали список команд для отримання статей з фільтрами по категоріях, автору, даті і т. п. На цьому етапі ми зіткнулися з першими труднощами: у відповідь поверталися тільки короткі описи, проте не тіло статті. Для вирішення цієї проблеми я став отримувати статті напряму з сайту і парсити за допомогою бібліотеки Jsoup.

Визначившись із вхідними даними, ми з Олексієм почали окреслювати концепт застосунку. Зважаючи на особливості наданого API, ми вирішили, що в першій ітерації застосунку зосередимося на найважливіших складових контенту, а саме списку статей, рубриках та закладках зі збереженими публікаціями. Після цього я почав реалізацію технічної сторони проекту, а Олексій — створення прототипів.

Зі своєї сторони, я обрав такий технологічний стек: застосунок побудований із використанням архітектурного патерну MVP і розбитий на прості компоненти, кожен з яких виконує одну логічну функцію. На базі RxJava я реалізував патерн EventBus для спілкування між різними компонентами, а також модулями проекту. Використав Dagger 2 для впровадження та зручного керування залежностями. Для збереження даних використовувався Realm. Вибір цього стеку був зумовлений планами на майбутнє, щоб і надалі вдосконалювати та маштабувати наш проект.

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

Крім базового функціоналу, ми додали декілька цікавих можливостей. Одна з них — обчислення часу читання статті. Така ідея з’явилася спонтанно при перегляді публікацій на Medium. Натрапивши на статтю про те, як у Medium визначають цей час, я зрозумів, що алгоритм розрахунку достатньо простий: необхідно порахувати кількість слів та поділити на середню швидкість читання, котра складає приблизно 275 слів на хвилину. Наче проста в реалізації «feature», а користувачеві приємно :)

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

Отож, у першій ітерації застосунок надає користувачу такі можливості:

  • перегляд статей у Стрічці;
  • сортування статей за рубриками;
  • створення закладок;
  • можливість переглядати закладки офлайн;
  • можливість поділитися статтею;
  • обчислення часу читання статті.

Факап

Не обійшлося і без промахів. Вже при публікації готового, відтестованого застосунку на Play Market, ми отримали відмову з такою причиною: «Issue: Violation of Device and Network Abuse policy».

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

Результати і плани

За три місяці роботи у вільний час ми змогли створити простий і зручний у використанні застосунок для перегляду статей на улюбленому ресурсі. Ми сподіваємось, він стане у пригоді багатьом користувачам.

Плануємо й надалі підтримувати і вдосконалювати проект. Найближчі цілі, яких ми хотіли б досягти:

  • реалізація пошуку;
  • вдосконалення стрічки статей;
  • можливість відкривати посилання зі сторонніх ресурсів у статті через застосунок;
  • реалізація сповіщень про вихід нових статей.

У майбутньому хотілося б зробити повноцінний застосунок із авторизацією та навігацією по ресурсу. Будемо дуже вдячні за ваші зауваження та побажання і будемо їх враховувати.

Також висловлюємо подяку команді DOU за надання API і можливість реалізувати цей проект.

Похожие статьи:
Всем привет! Мы — компания EVO. Рады анонсировать открытие летней школы по web-разработке (Python/JS) для начинающих программистов...
Дмитро Хмара працює програмістом у компанії Infopulse, а у вільний час опікується власним стартапом космічних розробок Space...
21 червня у Microsoft повідомили, що більше не продаватимуть технології, які мають визначати стать, вік та емоції людини....
У рубриці DOU Проектор всі бажаючі можуть презентувати свій продукт (як стартап, так і ламповий pet-проект). Якщо вам...
Мене звати Катерина, я Head of Design в компанії Symphony Solutions, також входжу до складу команди Service Design Network Ukraine....
Яндекс.Метрика