Я создаю приложение, которое использует AVPlayer и настроено на работу с элементами управления экрана блокировки, когда приложение находится в фоновом режиме. Я соответственно реализовал следующее:
[[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
[[AVAudioSession sharedInstance] setActive: YES error: &error];
и у меня MPNowPlayingInfoCenter
правильно настроен.
Одна ошибка, с которой я столкнулся, заключается в том, что элементы управления экрана блокировки не работают, когда я хочу возобновить воспроизведение после воспроизведения музыки из другого приложения (например, Spotify).
Чтобы воспроизвести эту ошибку, я начинаю воспроизводить звук из моего приложения, где при воспроизведении моего AVPlayer вызывается setActive
. Затем я переключаюсь на Spotify и играю песню, где мой звук отключается и приостанавливается. Через несколько секунд я снова переключаюсь на свое приложение и возобновляю звук. Когда я блокирую свое устройство и нажимаю кнопки на экране блокировки, я вижу информацию о моем аудио на экране, но ни один из моих элементов управления не работает так, как должен.
beginReceivingRemoteControlEvents
вызывается при запуске в моем appDelegate's applicationDidBecomeActive
У меня есть endReceivingRemoteControlEvents
в методе dealloc из моего appDelegate (это унаследованный код), но в этом сценарии он не вызывается.
РЕДАКТИРОВАТЬ: я забыл отметить, я тестирую на iPad под управлением iOS11.4
РЕДАКТИРОВАТЬ 2: Извините, я не упомянул, что это работало нормально до обновления до iOS11.4
РЕДАКТИРОВАТЬ 3: Я обнаружил проблему, это был логический флаг, скрытый в нашем устаревшем коде, который не был сброшен