В течение октября команда Pure Music Player добилась заметных успехов в синхронизации медиатеки, поддержке новых форм-факторов устройств, оптимизации подключения к сервисам и повышении надёжности базового хранилища. Ниже представлены ключевые темы текущего выпуска.
🔄 Инкрементальная синхронизация Subsonic: Экономия трафика и обновление за секунды
Чтобы сделать синхронизацию удалённых медиатек более быстрой и удобной, мы кардинально переработали механизм взаимодействия с музыкальными источниками Subsonic:
- Инкрементальная загрузка данных: Вместо прежнего полного повторного сканирования теперь применяется инкрементальная синхронизация, запрашивающая только изменившиеся на сервере треки. Это ощутимо экономит сетевой трафик и сокращает время ожидания.
- Отмена в любой момент и единый индикатор прогресса: Синхронизацию можно вручную отменить в любой момент; в центре источников и в строке конкретного источника отображается один и тот же прогресс в реальном времени.
- Автоматическая загрузка обложек и текстов песен: После завершения синхронизации система в фоновом режиме загружает недостающие обложки альбомов и тексты песен; тексты сохраняются локально и доступны даже без подключения к интернету.
- Раздельное хранение одноимённых объектов: Одноимённые альбомы и исполнители из разных источников теперь сохраняются независимо, что исключает их взаимное перезаписывание.
- Наглядные статусы и поддержка 9 языков: На странице информации о треке чётко указано, что метаданные получены из Subsonic; после завершения синхронизации библиотека обновляется автоматически; для состояний «не синхронизировано», «синхронизация», «загрузка обложек и текстов» и «ошибка» предусмотрены понятные описания на 9 языках.
📱 Интерфейс воспроизведения для складного iPhone: Адаптивный холст на 5 положений
В рамках адаптации к новым типам устройств мы создали новый интерфейс воспроизведения для складных iPhone и двухэкранных складных гаджетов:
- Умная компоновка под 5 положений: Адаптивный интерфейс воспроизведения автоматически подстраивается под текущую форму экрана, выбирая один из пяти режимов: «шатёр», портретный, альбомный, раскрытый и книжный.
- Учёт линии сгиба и системных перекрытий: Алгоритмы вёрстки точно определяют положение физической складки и зон системного интерфейса. В полностью раскрытом состоянии обложка и элементы управления располагаются слева, а текст песни или очередь воспроизведения — справа; в книжном положении текст комфортно размещается в нижней половине экрана.
- Продуманная защита и откат: Предусмотрен двухпозиционный переключатель: можно в одно касание вернуться к классическому плееру или отключить только двухколоночную раскладку в раскрытом виде, вернув iPad в альбомной ориентации к привычному виду со стопкой элементов.
- Следование системным безопасным зонам: Устаревшие проверки размеров экрана и типов устройств удалены; интерфейс теперь динамически подстраивается под системные границы безопасной зоны (Safe Area). Тестирование на реальных складных устройствах продолжается, завершаются работы над анимациями и доступностью.
🔗 Упрощение настройки PureStream: Прямое подключение без пароля, чётко и наглядно
Мы полностью обновили процесс настройки подключения к серверу PureStream:
- Наглядный выбор между двумя режимами: До настройки пользователю показывается краткое пояснение и две карточки режимов: «Карточка привязки» с указанием на необходимость подписки PureStream и «Карточка прямого подключения» с пояснением о поддержке собственных серверов PureStream или сторонних серверов Subsonic.
- Прямая авторизация без пароля: После завершения привязки плеер получает временные учётные данные напрямую у домашнего сервера на основе авторизации устройства, поэтому вводить имя пользователя и пароль больше не требуется.
- Понятная визуальная иерархия: С экрана удалены статичные адреса серверов, а также имена хостов и физические пути к файлам в блоке диагностики. В настроенном состоянии элементы упорядочены логично: «Сводка → Подключение/Синхронизация → Прогресс → Главное действие → Качество звука → Диагностика», при этом настройки качества по умолчанию свёрнуты.
⏱ Уверенная работа при загруженной сети: Умные повторы и плавный бэкофф
При нестабильной сети или высокой нагрузке на сервер клиентское приложение ведёт себя значительно надёжнее:
- Повтор по рекомендации сервера: Если сервер возвращает ответ «Повторите попытку позже», приложение ожидает именно столько, сколько рекомендовал сервер, а не выполняет жёсткие попытки каждые 5 секунд с окончательным сбоем после 6 раз.
- Мгновенное уведомление об ограничении частоты: При превышении лимита запросов пользователь сразу получает уведомление с просьбой подождать, без скрытого и неопределённого ожидания.
- Дифференцированная обработка ошибок: При обычных сетевых сбоях применяется плавный экспоненциальный бэкофф с фиксированным верхним пределом; при фатальных ошибках (неактивная подписка, несовпадение домохозяйства или устаревшая авторизация) повторные попытки немедленно прекращаются. Каждому запросу присваивается уникальный идентификатор для удобства отслеживания на сервере.
📚 Переработка страницы настроек режима большой библиотеки: Понятно и наглядно
Для эффективного управления коллекциями объёмом в десятки тысяч треков мы переработали интерфейс настроек режима большой библиотеки (Large Library Mode):
- Единая терминология: Утверждено единое наименование «Режим большой библиотеки / Large Library Mode» с отказом от разрозненных названий вроде «Быстрый индекс списков» и «Высокопроизводительный режим».
- Исключение дублирования данных: Каждый технический параметр указан ровно один раз; размер библиотеки, прогресс индексации и привилегии подписки занимают строго свои блоки без многослойной вложенности карточек.
- Адаптивная отзывчивая вёрстка: Полоса прогресса растягивается на всю ширину строки, предотвращая обрезку на компактных экранах и убирая излишние пустоты на широких дисплеях.
- Точные формулировки статусов: Для состояний паузы, ошибки, восстановления и готовности подготовлены отдельные тексты; диалог подтверждения при очистке индекса учитывает состояние переключателя, исключая расхождения между описанием и фактическим действием.
🛠 Исправления надёжности базового хранилища
В этом месяце устранены две фундаментальные проблемы с надёжностью данных:
- Безопасное распознавание библиотек старых версий: Если база данных старой версии не распознаётся новой версией, приложение при запуске автоматически выполняет безопасную лёгкую миграцию. В случае успеха локальные папки добавляются в обычном режиме, а при неудаче исходная база данных сохраняется в неизменном виде для защиты пользовательских данных.
- Сохранение всех треков при инкрементальной индексации больших библиотек: Ранее индекс большой библиотеки мог пропускать треки, добавленные уже после его первичного построения. Теперь индекс синхронно обновляется при сохранении и проверяется на целостность при старте. При обнаружении несоответствий приложение автоматически откатывается к обычному списку и перестраивает индекс, гарантируя появление новых файлов в разделах альбомов и исполнителей.
📌 Известные вопросы и дальнейшие шаги
В текущей версии ведётся доработка следующих моментов:
- Продолжается полировка некоторых анимаций, позиционирования всплывающих окон и порядка чтения скринридером на складных iPhone; поддержка режима «Уменьшение движения» появится в следующих версиях.
- Интерфейсные подсказки при повторных попытках подключения будут улучшены: сейчас быстрое повторное нажатие «Проверить подключение» может вызывать дублирующие запросы, а таймер обратного отсчёта до следующей попытки пока не отображается.
- В редких случаях для самых ранних версий библиотек может потребоваться ручное восстановление; подавляющее большинство старых баз уже переносится автоматически и безопасно при запуске.
В дальнейшем мы завершим оптимизацию под складные экраны и настройку доступности, добавим индикаторы повторов и таймеры обратного отсчёта, а также расширим охват автоматической миграции для старых версий библиотек.
