我有一个使用播放音频的应用程序,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
实例中呈现的标准 MREC 和横幅。一旦出现,“正在播放”状态将恢复为“音乐”应用程序,并且使用遥控器的能力消失。
一旦发生这种情况,我什至无法重新设置“正在播放”信息,就像卡住了一样。虽然,当我打印出 的值时[[MPNowPlayingInfoCenter defaultCenter].nowPlayingInfo
,正如我所料,它只是没有显示。
广告不播放音频或视频,但不知何故,它们破坏了 Now Playing API 并且无法恢复。
我已经联系了谷歌和苹果来解决这个问题,但同时想知道是否有人有任何解决方法可以建议?