У меня есть приложение, которое воспроизводит звук с помощью AVPlayer
, и я касаюсь нужных API, чтобы получить информацию о том, что сейчас исполняется, для обновления в Центре управления.
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback withOptions:0 error:&categoryError];
[[AVAudioSession sharedInstance] setMode:AVAudioSessionModeSpokenAudio error:&modeError];
[[AVAudioSession sharedInstance] setActive:YES error:&activeError];
[MPNowPlayingInfoCenter defaultCenter].nowPlayingInfo = {...};
...
MPRemoteCommandCenter * const commandCenter = [MPRemoteCommandCenter sharedCommandCenter];
commandCenter.playCommand.enabled = YES;
...
Этот API работает должным образом до тех пор, пока некоторые объявления не будут отображаться с использованием платформы Google AdMob. Это стандартные МРЭК и баннеры, которые представлены в UIWebView
экземплярах. Как только он появляется, состояние «Сейчас исполняется» возвращается к приложению «Музыка», и возможность использования пультов дистанционного управления исчезает.
Как только это происходит, я даже не могу переустановить информацию «Сейчас исполняется», она как будто застряла. Хотя, когда я распечатываю значение [[MPNowPlayingInfoCenter defaultCenter].nowPlayingInfo
, оно, как я и ожидал, просто не отображается.
Объявления не воспроизводят аудио или видео, но каким-то образом они портят API Now Playing, и он не восстанавливается.
Я связался с Google и Apple, чтобы узнать, как это исправить, но тем временем задавался вопросом, есть ли у кого-нибудь обходные пути?