ios - AdMob 实时广告未在真实设备上显示
问题描述
我使用了 AdMob 在他们的页面上提供的带有 ID 的广告来测试连接,这些广告在模拟器和真实设备上都可以使用。
当我使用测试设备进行实时广告尝试时,它们会出现在模拟器上(并非总是用于 iPad 上的横幅广告),但在我的物理设备 (iPad) 上,它们不会出现在横幅广告或插页式广告中?
为什么是这样?
谢谢。
横幅代码:
func initAdMobBanner() {
if UIDevice.current.userInterfaceIdiom == .phone {
// iPhone
adMobBannerView.adSize = GADAdSizeFromCGSize(CGSize(width: 320, height: 50))
adMobBannerView.frame = CGRect(x: (view.frame.size.width/2)-160, y: view.frame.size.height, width: 320, height: 50)
} else {
// iPad
adMobBannerView.adSize = GADAdSizeFromCGSize(CGSize(width: 468, height: 60))
adMobBannerView.frame = CGRect(x: 0, y: view.frame.size.height, width: 468, height: 60)
}
adMobBannerView.adUnitID = ADMOB_BANNER_UNIT_ID
adMobBannerView.rootViewController = self
adMobBannerView.delegate = self
self.navigationController?.view.addSubview(adMobBannerView)
let request = GADRequest()
if PACConsentInformation.sharedInstance.isRequestLocationInEEAOrUnknown || PACConsentInformation.sharedInstance.consentStatus.rawValue == 1 {
if PACConsentInformation.sharedInstance.consentStatus.rawValue == 0 || PACConsentInformation.sharedInstance.consentStatus.rawValue == 1 {
print("no consent (show non-personalised ads) or unknown")
let extras = GADExtras()
extras.additionalParameters = ["npa": "1"]
request.register(extras)
}
}
adMobBannerView.load(request)
}
// Hide the banner
func hideBanner(_ banner: UIView) {
banner.frame = CGRect(x: view.frame.size.width/2 - banner.frame.size.width/2, y: view.frame.size.height, width: banner.frame.size.width, height: banner.frame.size.height)
banner.isHidden = true
}
// Show the banner
func showBanner(_ banner: UIView) {
if #available(iOS 11.0, *) {
banner.frame = CGRect(x: view.frame.size.width/2 - banner.frame.size.width/2, y: view.frame.size.height - view.safeAreaInsets.bottom, width: banner.frame.size.width, height: banner.frame.size.height)
} else {
banner.frame = CGRect(x: view.frame.size.width/2 - banner.frame.size.width/2, y: view.frame.size.height, width: banner.frame.size.width, height: banner.frame.size.height)
}
banner.isHidden = false
}
// AdMob banner available
func adViewDidReceiveAd(_ view: GADBannerView) {
if self.navigationController?.visibleViewController == self {
let translateTransform = CGAffineTransform(translationX: 0, y: adMobBannerView.bounds.size.height)
adMobBannerView.transform = translateTransform
showBanner(adMobBannerView)
UIView.animate(withDuration: 0.5) {
self.adMobBannerView.transform = CGAffineTransform.identity
}
}
}
// NO AdMob banner available
func adView(_ view: GADBannerView, didFailToReceiveAdWithError error: GADRequestError) {
// Reposition the banner ad to create a slide up effect
let translateTransform = CGAffineTransform(translationX: 0, y: adMobBannerView.bounds.size.height)
adMobBannerView.transform = translateTransform
hideBanner(adMobBannerView)
UIView.animate(withDuration: 0.5) {
self.adMobBannerView.transform = CGAffineTransform.identity
}
}
@objc func layoutSubviews() {
if SpeakTimerPro.hasSpeakTimerPro {
}
else {
initAdMobBanner()
}
}
解决方案
确保添加您的测试设备,例如:
let request = GADRequest()
request.testDevices = [ "2077ef9a63d2b398840261c8221a0c9b" ] // Sample device ID
要查找您的设备 ID,请检查控制台输出,该输出应如下所示:
<Google> To get test ads on this device, call:
request.testDevices = @[ @"2077ef9a63d2b398840261c8221a0c9b" ];
推荐阅读
- matlab - 如何在 MATLAB 中显示地面控制点上的误差向量
- javascript - 如何在此计时器中添加暂停功能?反应原生
- c - 有人能解释一下这个状态机程序是如何工作的吗?
- javascript - classList.add() 插入变量而不是字符串
- javascript - 如何在没有任何自省的情况下创建一个纯功能的临时多态镜头?
- android - android 应用程序如何自动更新,无需我在 Playstore 上更新它?
- php - PHP 表单不工作但没有收到任何错误消息
- amazon-web-services - 放大 403 也出现了 CORS 错误
- tfs - 导入导出 Wit TFS17 - 看不到新字段
- gun - 在会话期间保持 Gun DB 用户的身份验证