每当广告加载失败时显示视图而不是广告
Showing a view instead of ads whenever ads fail to load
我最近将我的应用程序送去进行 Beta 测试,并在其中放置了广告 (Google AdMob)。起初,当我的测试人员使用它时,他们常常看到广告,但是当我使用它时,我没有看到它们(在我的 phone 上,而在模拟器上它们工作正常)。
现在他们只是偶尔看到它们(而我在 iPhone 上仍然看不到它们)。我以为是因为我屏蔽了一些广告类别,所以我检查了一下,发现我必须允许我想展示的广告,但一些测试人员仍然看不到它们(或者他们可以看一段时间,几分钟后他们会消失)。
所以我想到了另一个解决方案:我添加了一个仅在广告未加载时才会显示的视图,在模拟器广告上测试一切都很好,将其发送到测试版并出现新错误:现在他们可以看到广告但过了一会儿他们会消失并显示另一个视图,这很好。但一段时间后,广告显示在新视图上,否则它们会随机停止出现(出现后)。
所以,我想知道的是:
- (不是很重要,只是好奇)为什么我在 iPhone 上测试自己的应用时看不到广告?
- (主要问题)当我的广告未加载时,如何显示另一个类似横幅的视图?甚至有没有办法始终显示它们?
我的代码与您在 Google AdMob tutorial 中找到的代码相同,但我编辑添加了另一个类似横幅的视图:
//This is to remove the banners when the user purchases the app or to show them if he has the free version
override func viewWillAppear(_ animated: Bool) {
if defaults.value(forKey: purchaseKey) == nil {
bannerView = GADBannerView(adSize: kGADAdSizeSmartBannerPortrait)
addBannerViewToView(bannerView)
bannerView.delegate = self
bannerView.adUnitID = "myID"
bannerView.rootViewController = self
bannerView.load(GADRequest())
} else {
bannerView.isHidden = true
removeAdsView.isHidden = true
}
}
/// Tells the delegate an ad request loaded an ad.
func adViewDidReceiveAd(_ bannerView: GADBannerView) {
print("adViewDidReceiveAd")
removeAdsView.isHidden = true
addBannerViewToView(bannerView)
bannerView.alpha = 0
UIView.animate(withDuration: 1, animations: {
bannerView.alpha = 1
})
}
/// Tells the delegate an ad request failed.
func adView(_ bannerView: GADBannerView,
didFailToReceiveAdWithError error: GADRequestError) {
print("adView:didFailToReceiveAdWithError: \(error.localizedDescription)")
removeAdsView.isHidden = false
}
阅读你的日志,Google肯定有一些错误描述,在我的情况下,我将我的设备添加为测试
let request = GADRequest()
request.testDevices = ["5bb6d1ce5935f98196d35d9e61ac74f6"]
bannerView?.load(request)
您还应该关闭 iPhone 上的广告过滤器,设置 -> 隐私 -> 广告
我最近将我的应用程序送去进行 Beta 测试,并在其中放置了广告 (Google AdMob)。起初,当我的测试人员使用它时,他们常常看到广告,但是当我使用它时,我没有看到它们(在我的 phone 上,而在模拟器上它们工作正常)。
现在他们只是偶尔看到它们(而我在 iPhone 上仍然看不到它们)。我以为是因为我屏蔽了一些广告类别,所以我检查了一下,发现我必须允许我想展示的广告,但一些测试人员仍然看不到它们(或者他们可以看一段时间,几分钟后他们会消失)。
所以我想到了另一个解决方案:我添加了一个仅在广告未加载时才会显示的视图,在模拟器广告上测试一切都很好,将其发送到测试版并出现新错误:现在他们可以看到广告但过了一会儿他们会消失并显示另一个视图,这很好。但一段时间后,广告显示在新视图上,否则它们会随机停止出现(出现后)。
所以,我想知道的是:
- (不是很重要,只是好奇)为什么我在 iPhone 上测试自己的应用时看不到广告?
- (主要问题)当我的广告未加载时,如何显示另一个类似横幅的视图?甚至有没有办法始终显示它们?
我的代码与您在 Google AdMob tutorial 中找到的代码相同,但我编辑添加了另一个类似横幅的视图:
//This is to remove the banners when the user purchases the app or to show them if he has the free version
override func viewWillAppear(_ animated: Bool) {
if defaults.value(forKey: purchaseKey) == nil {
bannerView = GADBannerView(adSize: kGADAdSizeSmartBannerPortrait)
addBannerViewToView(bannerView)
bannerView.delegate = self
bannerView.adUnitID = "myID"
bannerView.rootViewController = self
bannerView.load(GADRequest())
} else {
bannerView.isHidden = true
removeAdsView.isHidden = true
}
}
/// Tells the delegate an ad request loaded an ad.
func adViewDidReceiveAd(_ bannerView: GADBannerView) {
print("adViewDidReceiveAd")
removeAdsView.isHidden = true
addBannerViewToView(bannerView)
bannerView.alpha = 0
UIView.animate(withDuration: 1, animations: {
bannerView.alpha = 1
})
}
/// Tells the delegate an ad request failed.
func adView(_ bannerView: GADBannerView,
didFailToReceiveAdWithError error: GADRequestError) {
print("adView:didFailToReceiveAdWithError: \(error.localizedDescription)")
removeAdsView.isHidden = false
}
阅读你的日志,Google肯定有一些错误描述,在我的情况下,我将我的设备添加为测试
let request = GADRequest()
request.testDevices = ["5bb6d1ce5935f98196d35d9e61ac74f6"]
bannerView?.load(request)
您还应该关闭 iPhone 上的广告过滤器,设置 -> 隐私 -> 广告