# iOS Embedded Lock Screen Seek Документ фиксирует эксперимент с перемоткой во встроенном плеере Lampa на iPhone. Это относится к режиму `currentExternalPlayer() === 'inner'`, где музыка играет через обычный `Lampa.PlayerVideo`, а не к standalone iOS-плееру модуля Music. ## Что хотели получить - На заблокированном экране iOS должны работать play/pause, next/prev и скраббер перемотки. - Встроенный плеер внутри Lampa должен оставаться обычным: звук, прогресс и кнопки не должны расходиться между интерфейсом Lampa и lock screen. ## Что уже работает - Media Session metadata: название, артист, обложка. - Play/pause на lock screen. - Next/prev на lock screen, когда очередь Lampa доступна. - Keep-alive для iOS-аудиосессии. ## Что пробовали ### 1. Прямой `seekto` на stock media Регистрировали `navigator.mediaSession.setActionHandler('seekto', ...)`, заранее вызывали `setPositionState`, прогревали Media Session в пользовательском жесте. Результат: - В видимом плеере данные duration/currentTime были корректные. - `seekable` у media-элемента был заполнен, значит серверный stream/range был рабочий. - На lock screen iOS либо не активировал скраббер, либо двигал его без стабильного события `seekto`. Вывод: для встроенного video/audio Lampa одного Media Session API недостаточно. iOS не гарантирует, что lock-screen scrubber будет вызывать наш JS-handler. ### 2. `seekforward` / `seekbackward` Проверяли обработчики `seekforward` и `seekbackward`, чтобы вместо скраббера хотя бы работали шаги. Результат: - iOS заменял кнопки next/prev на `+10/-10`. - Это ломало более важный сценарий переключения треков. Вывод: в embedded-режиме эти handlers держать нельзя, пока next/prev важнее перемотки. ### 3. Скрытый real audio driver Добавляли отдельный `