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游戏中