Як працює Booka Radio5 хв читання

Чому Booka Radio не зберігає всі аудіокниги всередині застосунку

Десятки годин аудіо швидко перетворили б невеликий застосунок на гігантський файл. Пояснюємо, чому каталог Booka Radio завантажує звук за потреби, а офлайн-книги зберігаються окремо.
✍️Редакція Booka Radio · Редакційний матеріал

Аудіо займає набагато більше місця, ніж сам застосунок

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

Якби Booka Radio включав усі аудіофайли безпосередньо у встановлюваний пакет, користувачеві довелося б завантажувати величезний обсяг даних ще до першого запуску. При цьому більшість цих книг він, можливо, ніколи не відкриє. Такий підхід витрачає пам'ять і трафік заздалегідь, не створюючи користі.

Каталог і самі аудіофайли мають різний життєвий цикл

Список книг може оновлюватися щодня: з'являються нові обкладинки, описи, автори, глави та релізи. Якщо контент жорстко зашитий у застосунок, кожна така зміна вимагала б нової версії через магазин застосунків.

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

Потокове відтворення завантажує тільки те, що потрібно зараз

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

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

Перемотування також не вимагає отримувати файл з самого початку

Якщо слухач повернувся до 47-ї хвилини глави, немає сенсу спочатку передавати перші 46 хвилин. Сервер і плеєр повинні вміти починати передачу ближче до потрібної позиції. Саме тому для аудіопотоку важлива підтримка часткового отримання даних.

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

Доступ до файлу і місце його зберігання — різні питання

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

Для Booka Radio такий поділ важливий: застосунок відповідає за інтерфейс і відтворення, а сервер — за актуальні дані та правила доступу. Це дозволяє змінювати каталог і права користувача без випуску нової версії клієнта щоразу, коли на сервері відбувається зміна.

Офлайн — це свідомий виняток із потокової моделі

Іноді користувач заздалегідь знає, що мережі не буде. Тоді логіка змінюється: краще один раз повністю завантажити книгу на пристрій і відтворювати її локально. Саме для цього в Booka Radio існує офлайн-режим для Premium.

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

Розділення допомагає каталогу рости без збільшення інсталяції

Сьогодні в сервісі може бути один набір аудіокниг, а через кілька місяців — значно більший. Якщо кожна нова книга автоматично збільшувала розмір застосунку, зростання бібліотеки робило б установлення дедалі важчим для всіх користувачів, навіть для тих, кого новий твір не цікавить.

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

Такий поділ спрощує і оновлення самого сервісу

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

Для Booka Radio це фундаментальна архітектурна логіка: застосунок знає, як показати каталог і відтворити аудіо, а самі книги живуть окремо й завантажуються тоді, коли вони потрібні слухачеві. Саме завдяки цьому бібліотека може рости, не перетворюючи кожне оновлення на багатогігабайтний інсталяційний файл.

Мережевий підхід не означає постійне повторне завантаження одного й того самого

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

Тобто вибір між «усе зберігати в застосунку» і «нічого не зберігати на пристрої» є хибним. Booka Radio поєднує потокову модель із локальними механізмами там, де вони доречні. Постійно на телефоні залишається тільки те, що справді має сенс зберігати, а не весь каталог про всяк випадок.

Інші матеріали Booka Radio

Усі статті →
⏱️
Як працює Booka Radio

Як Booka Radio запам'ятовує місце прослуховування і повертає до потрібної секунди

Аудіокнига може тривати багато годин, тому плеєр має пам'ятати не лише книгу й главу, а й точну позицію. Розповідаємо, як у Booka Radio ми підійшли до збереження прогресу між сесіями.

Читати →
🗂️
Як працює Booka Radio

Чому каталог Booka Radio можна кешувати, а статус профілю — ні

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

Читати →