iOS Admob 广告开始播放锁屏按钮 - BUG?

Posted

技术标签:

【中文标题】iOS Admob 广告开始播放锁屏按钮 - BUG?【英文标题】:iOS Admob ad starts playing with lock screen buttons - BUG? 【发布时间】:2016-06-21 21:42:27 【问题描述】:

我有一个音乐流媒体应用,我在其中使用锁定屏幕控件来播放/暂停/下一首歌曲。

我的应用中有 Admob 插页式广告。

但是,当我使用锁屏控件时,它也会传递给视频广告,因此视频广告开始与我的应用程序的音乐一起播放。有什么办法可以预防吗?

以下是我处理锁定屏幕控件的方式。我不与任何这段代码中的广告进行交互,但控件仍然传递给 admob 的视频播放器:

- (void)remoteControlReceivedWithEvent:(UIEvent *)event 

    ////NSLog(@"CustomApp:remoteControlReceivedWithEvent:%@", event.description);
    if (event.type == UIEventTypeRemoteControl)
    
        switch (event.subtype)
        
            case UIEventSubtypeRemoteControlPlay:
                //  play the video
                dispatch_async(dispatch_get_main_queue(), ^
                    [[[SoundEngine sharedInstance] audioPlayer] resume];
                    //[[SoundEngine sharedInstance] setLockScreenElapsedTime];
                );

                break;

            case  UIEventSubtypeRemoteControlPause:
                // pause the video
                dispatch_async(dispatch_get_main_queue(), ^
                    [[[SoundEngine sharedInstance] audioPlayer] pause];
                    //[[SoundEngine sharedInstance] setLockScreenElapsedTime];
                );

                break;

            case  UIEventSubtypeRemoteControlNextTrack:
                // to change the video
                dispatch_async(dispatch_get_main_queue(), ^
                    [[SoundEngine sharedInstance] nextClicked];
                    //[[SoundEngine sharedInstance] setLockScreenElapsedTime];
                );

                break;

            case  UIEventSubtypeRemoteControlPreviousTrack:
                // to play the privious video
                dispatch_async(dispatch_get_main_queue(), ^
                    [[SoundEngine sharedInstance] prevClicked];
                    //[[SoundEngine sharedInstance] setLockScreenElapsedTime];
                );

                break;

            default:
                break;
        
    

【问题讨论】:

当您的应用在后台时,您为什么不禁用 admob? 禁用admob是什么意思?基本上不是这个概念,当我准备好时,我使用“presentFromRootViewController”方法来实际呈现它?否则广告会在后台保持就绪状态。 您的视图层次结构中必须有一个活动的视频播放器正在接收事件 别这么认为,我用的是只有音频的streamingkit。 您从 AdMob 视频播放器中获取声音,因此某处必须有 AdMob 视频播放器;如果没有,那么它就无法播放任何东西。 【参考方案1】:

我最近还遇到了一个 AdMob 插页式视频广告,在我调用 load 后播放,但从未调用 present。此外,当我展示广告时,切换静音开关不起作用。 AdMob SDK 的版本为 7.19.1 和 7.20.0。

最后我确定这是一个 AdMob 问题,但不是很明显。导致错误的部分是为 UserDefauts 注册 UserAgent。特别是以下几行会导致问题。

let userAgent : String = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/601.3.9 (Khtml, like Gecko) Version/9.0.2 Safari/601.3.9"
UserDefaults.standard.register(defaults: ["UserAgent" : userAgent])

可能 AdMob 在加载广告时会触及存储在 UserDefaults 中的用户代理。但是,我绝对需要那个自定义用户代理,所以我仍然不确定我能做什么,但至少我们知道 AdMob SDK 在这种情况下是如何让我们失败的。

【讨论】:

与其在 Userdefaults 中设置 User-Agent,为什么不在每个请求的标头基础上设置呢? @PranoyC on WKWebView 它曾经是请求的用户代理被 UserDefaults 中的内容覆盖,但在 ios 10 中,这似乎是通过使用 customUserAgent 来处理的。

以上是关于iOS Admob 广告开始播放锁屏按钮 - BUG?的主要内容,如果未能解决你的问题,请参考以下文章

使用 admob 展示广告后,无法在 iOS 设备上的 ionic 应用程序的 iframe 内播放嵌入的 youtube 视频

使用 Milkman Games 的 AdMob ANE 看不到广告 [Adobe AIR]

如何使用PhoneGap程序将AdMob广告嵌入到你的HTML5 iOS游戏中

在广告(Google Admob)Android之后运行一项功能

Admob 广告收入

AdMob 广告未展示但测试广告展示 (iOS)