Держите приложение активным в фоновом режиме, когда [MPMusicPlayerApplicationController applicationQueuePlayer] используется для воспроизведения музыки

С iOS 10.3 Apple выпустила новые API-интерфейсы в среде MediaPlayer, которые предоставляют больше контроля / мощности разработчику, который хочет воспроизводить музыку, хранящуюся в Apple Music/iTunes Match. Я говорю о новом applicationQueuePlayer и applicationMusicPlayer из MPMusicPlayerApplicationController. Проблема, конечно, с многозадачностью. Я строю в основном альтернативу собственному музыкальному плееру Apple. Но также мне нужно выполнить некоторый код (в основном, сетевые подключения), когда играет музыка. Этим новым API требуется включить фоновые режимы для приложения (Audio, AirPlay и Картинка в картинке), чтобы музыка воспроизводилась, когда пользователь переходит на домашний экран, но само приложение приостанавливается.
Я понял, что могу воспроизводить тихий звук, чтобы само приложение оставалось в живых, и, возможно, приложение будет одобрено (так как технически оно воспроизводит музыку в фоновом режиме, и в любом случае должна быть включена возможность фонового режима). Но я не хочу потреблять батарею пользователя, когда музыка приостановлена.
Еще смешнее: кажется, что новый API предназначен для приложений, которые остаются живыми в фоновом режиме, потому что в iOS 10.3.3 после изменения трека через Центр управления и нажатия на название песни, вместо моей программы открывается приложение системной музыки. приложение.
Представьте, что пользователь приостанавливает музыку из центра управления до того, как прибудет на работу, а затем возобновляет ее из центра управления. Я не хочу есть батарею пользователя, когда он на работе.
У меня вопрос: есть ли способ сохранить приложение живым и реагировать на действия пользователя?

1 ответ

"Музыкальный проигрыватель не влияет на состояние приложения" Музыка ". Когда приложение переходит в фоновый режим, музыкальный проигрыватель перестает воспроизводить текущее мультимедиа".

https://developer.apple.com/documentation/mediaplayer/mpmusicplayercontroller/2817540-applicationqueueplayer

systemMusicPlayer будет работать в фоновом режиме, НО, у вас нет доступа, или я думаю, что сейчас (iOS11) ограниченный доступ к очереди.

Я думаю, что вам все еще нужно использовать некоторую форму AVPlayer ( https://developer.apple.com/documentation/avfoundation/avplayer), если вы хотите получить детальный контроль над тем, что происходит, но тогда вам нужно будет реализовать все, что обновляет экран блокировки и т. д. самостоятельно.

Другие вопросы по тегам