CarPlay — Показать экран «Воспроизведение» в iOS 13
Мое приложение уже является текущим «приложением, которое сейчас воспроизводится» на телефоне (т. е. вся необходимая информация предоставляется ), и оно правильно отображается на экране блокировки с именем исполнителя, названием трека, изображением обложки и т. д.
Согласно документам, заселение
MPNowPlayingInfoCenter.default().nowPlayingInfo
и добавления правильной цели/действий должно быть достаточно, чтобы убедиться, что ваше приложение вызывается в CarPlay, когда пользователь нажимает на кнопку
Now Playing
значок.
В iOS 14 мне удалось добиться вышеперечисленного, нажав
CPNowPlayingTemplate
в стек, благодаря некоторым хитростям, которые я нашел в этой статье .
Однако на iOS 13, где все основано на ужасном
MPPlayableContentManager
API и нет
CPTemplateApplicationSceneDelegate
методы вызываются для аудиоприложений, я просто не могу найти способ определить, будет ли/когда отображаться экран «Сейчас исполняется».
MPNowPlayingInfoCenter
а также
MPRemoteCommandCenter
настроены правильно, как сказано выше, но мое приложение не запускается при нажатии значка «Исполняется» в CarPlay на iOS 13.
Я думал , что этот API поможет мне, но я не мог понять, как (он всегда возвращает пустой массив).
Единственный обходной путь, кажется, добавляет
<key>UIBrowsableContentSupportsImmediatePlayback</key><true/>
на ваш
Info.plist
: теперь Воспроизведение отображается правильно, но сразу начинается воспроизведение, чего я не хочу.
Может ли кто-нибудь предоставить рабочее решение?
1 ответ
В CarPlay до iOS 14 мы устанавливаем идентификаторы текущего воспроизведения (в нашем случае только один, поскольку у нас нет списка воспроизведения) после запуска воспроизведения:
-
MPPlayableContentManager.shared().nowPlayingIdentifiers = ["Some Id"]
- Этот идентификатор должен совпадать с идентификатором
MPContentItem
который инициировал воспроизведение (иisPlayable
установлен вtrue