【问题标题】:Ad banners causing MPNowPlayingInfoCenter to lose state导致 MPNowPlayingInfoCenter 丢失状态的广告横幅
【发布时间】:2019-06-26 02:03:44
【问题描述】:

我有一个使用 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 并且无法恢复。

我已联系 Google 和 Apple 询问如何解决此问题,但同时想知道是否有人可以建议任何解决方法?

【问题讨论】:

  • 我想我也有同样的问题。控制中心是否只显示“音乐”?您使用的是哪个 AdMob 版本?
  • @C.Leung 是的!我使用的是最新版本之一,v7.44。您也可以在此处查看/参与此讨论:groups.google.com/forum/…

标签: ios avkit


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-02-09
    • 2021-02-26
    • 1970-01-01
    • 2020-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多