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

У рубриці DOU Проектор всі охочі можуть презентувати свій продукт (як стартап, так і ламповий pet-проект). Якщо вам є про що розповісти — запрошуємо взяти участь. Якщо ні — можливо, серія надихне на створення власного made in Ukraine продукту. Питання і заявки на участь надсилайте на [email protected].

Усім привіт. Я Максим, 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 і можливість реалізувати цей проект.

Все про українське ІТ в телеграмі — підписуйтеся на канал DOU

👍ПодобаєтьсяСподобалось0
До обраногоВ обраному0
LinkedIn



21 коментар

Підписатись на коментаріВідписатись від коментарів Коментарі можуть залишати тільки користувачі з підтвердженими акаунтами.

@Maksym Khobotin Спасибо, классное приложение, было. После смены телефона, больше не обнаружил его в маркете. Почему удалили? Выложите опять?

Статті можна додавати в закладки для перегляду офлайн.

За эту фичу отдельный респект!

цікавий додаток. можливо буде з відкритим кодом?

додайте бан (hide) коментів певних юзерів

Свой DOU с блекджеком и прочим.

Для вирішення цієї проблеми я став отримувати статті напряму з сайту і парсити за допомогою бібліотеки Jsoup.

как смотрят на это владельцы dou?

Дякую за крутий додаток!

От ще би форум додати — було б взагалі ідеально :)

Залогиниться (камментить).

Увеличивать размер шрифта.

Открывать (на весь экран) фотографии из публикаций.

Не позволять ленте с главного экрана быть «бесконечной».

Прикрутить поиск.

// Иначе проще жить на Chrome.

Если мне память не изменяет, то кто-то делал подобное года полтора назад. Но ваше приложение мне нравится больше.

P.S. dou.ua/...​dou-projector-dou-reader

iOS в студию! через Donation!

Так ведь в сафари есть функция ридера!

Установил — приложенька огонь!)

Проект конечно крутой.
Как по мне, Telegram и Instant View легко решает проблемы с закладками, доступом офлайн и удобством чтения на моб устройстве.

с технической точки зрения наверное это было полезно попрактиковатся, с практической точки зрения есть feedly & rss и если каждый новостной ресурс выпустит по приложению... ну Вы поняли ))

крутий проект!
а для iOS буде апка?)

На даний момент iOS версія не планується.

Google Analytics сейчас показывает такую статистику:
Android 63.61%
iOS 35.51%

Думал сделать, но какой смысл если там апи только для чтения статей используется и все?)
Вот полноценную бы запилить — было бы ок, интересно даже

Підписатись на коментарі