MPMusicPlayerControllerNowPlayingItemDidChange в фоновом режиме

Есть ли способ получить уведомление MPMusicPlayerControllerNowPlayingItemDidChange, когда приложение находится в фоновом режиме?

У меня есть приложение, которое должно иметь возможность приостанавливать музыку после того, как песня закончилась в фоновом режиме или когда экран заблокирован. Я использую systemMusicPlayer для воспроизведения музыки.

Я попытался добавить возможность звукового фона и включить вызов beginBackgroundTask в свой applicationDidEnterBackground, но это не работает в течение длительного периода времени.


person Wyetro    schedule 24.09.2016    source источник
comment
как насчет использования наблюдателя?   -  person KennyVB    schedule 23.10.2016
comment
@KennyVB, сможет ли это работать неопределенное время в фоновом режиме или при заблокированном телефоне?   -  person Wyetro    schedule 24.10.2016
comment
он будет работать до тех пор, пока вы не перестанете наблюдать... вы можете поставить наблюдателя, когда он начнет играть, и остановить его, когда он закончится, чтобы не сломать ваше приложение.   -  person KennyVB    schedule 24.10.2016
comment
Я не думаю, что это сработает, поскольку именно это я и пытаюсь сделать с MPMusicPlayerControllerNowPlayingItemDidChange. Вы также видели этот stackoverflow. com/questions/4928207/?   -  person Wyetro    schedule 24.10.2016


Ответы (1)


В фоновом режиме ваше приложение может быть остановлено в любое время, поэтому вы не хотите зависеть от работы в фоновом режиме.

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

MPMusicPlayerController.systemMusicPlayer() воспроизводит очередь песен ("Плейлист"). Так что я бы попытался манипулировать этим queue в applicationWillResignActive() , чтобы не было песни после воспроизводимой в данный момент песни .

Я не проверял это и не уверен, возможно ли это через общедоступный API.

person shallowThought    schedule 29.10.2016
comment
Вы говорите, что когда приложение переходит в фоновый режим (или блокируется устройство), чтобы приостановить/остановить музыку? И сделать так, чтобы приложение оставалось открытым, пока не кончится музыка? И что нет способа сделать это так, как описано в вопросе (что нормально, если это так)? - person Wyetro; 29.10.2016
comment
Обновленный ответ. - person shallowThought; 30.10.2016
comment
Это не помогает. Моему приложению нужно воспроизвести определенное количество песен, а затем остановиться, когда они закончатся. Я хочу иметь возможность получать уведомления, когда приложение находится в фоновом режиме, чтобы оно знало, когда остановиться. - person Wyetro; 31.10.2016
comment
Я понял. Но поскольку ваш подход невозможен, я пытался указать вам другое направление работы. - person shallowThought; 31.10.2016
comment
Возможно, мне потребовался год, чтобы отметить это как правильное, но вы были правы - в конце концов это было невозможно. - person Wyetro; 20.07.2017