导致MPNowPlayingInfoCenter失去状态的广告横幅

时间:2019-06-26 02:03:44

标签: ios avkit

我有一个使用AVPlayer播放音频的应用,并且我触摸了正确的API以获取“正在播放”信息以在Control Center中进行更新。

[[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的值时,正如我期望的那样,它只是不显示。

广告没有播放音频或视频,但是不知何故,它们正在破坏“正在播放” API,并且无法恢复。

我已与Google和Apple联系,寻求如何解决此问题的方法,但与此同时,我想知道是否有人可以提出任何解决方法?

1 个答案:

答案 0 :(得分:0)

我在调查与Google Interactive Media Ads SDK(IMA SDK)类似的问题时发现了这个问题,该问题会自动将“正在播放”状态更改为“广告”。最终在IMAAdsSettings对象disablesNowPlayingInfo Documentation上找到该标志。将此设置为true解决了我的问题。

        let adsLoaderSettings = IMASettings()
        adsLoaderSettings.disableNowPlayingInfo = true
        adsLoader = IMAAdsLoader(settings: adsLoaderSettings)