美文网首页
iOS项目集成Admob [Request Error: No

iOS项目集成Admob [Request Error: No

作者: jeckHao | 来源:发表于2023-01-02 17:55 被阅读0次

一:官方网址

Mobile Ads SDK (iOS)

AdMob 应用 ID: ca-app-pub-3940256099942544~1458002511
横幅广告测试专用广告单元 ID:ca-app-pub-3940256099942544/2934735716
插页式广告测试专用广告单元 ID:ca-app-pub-3940256099942544/4411468910
激励广告专用测试广告单元 ID: ca-app-pub-3940256099942544/1712485313
原生高级广告测试专用广告单元 ID: ca-app-pub-3940256099942544/3986624511

1、使用CocoaPods

pod 'Google-Mobile-Ads-SDK'
pod install --repo-update

2、在info.plist里添加GADApplicationIdentifier键值对

(测试时,可以将AdMob 应用 ID: ca-app-pub-3940256099942544~1458002511放入),
账号申请下来后,可以将真实的ID配置到info.plist里边

3、创建单利manager

GADMobileAds.sharedInstance().start(completionHandler: nil),

然后运行时,会在consolg里打印出你的测试设备,
<Google> To get test ads on this device, set:
GADMobileAds.sharedInstance.requestConfiguration.testDeviceIdentifiers =
@[ @"2077ef9a63d2b398840261c8221a0c9b" ];
将代码添加到start后边,然后就开始load广告

4、开始load广告单元(已插屏广告为说明)
其余的demo可以看一下官方的示例

fileprivate func loadInterstitial() {
    let request = GADRequest()
    GADInterstitialAd.load(
      withAdUnitID: "ca-app-pub-3940256099942544/4411468910", request: request
    ) { (ad, error) in
      if let error = error {
        print("Failed to load interstitial ad with error: \(error.localizedDescription)")
        return
      }
      self.interstitial = ad
      self.interstitial?.fullScreenContentDelegate = self
    }
  }
// MARK: - GADFullScreenContentDelegate

  func adWillPresentFullScreenContent(_ ad: GADFullScreenPresentingAd) {
    print("Ad will present full screen content.")
  }

  func ad(_ ad: GADFullScreenPresentingAd, didFailToPresentFullScreenContentWithError error: Error)
  {
    print("Ad failed to present full screen content with error \(error.localizedDescription).")
  }

  func adDidDismissFullScreenContent(_ ad: GADFullScreenPresentingAd) {
    print("Ad did dismiss full screen content.")
    //重新加载下一个广告
    loadInterstitial()
  }
重新加载下一个广告loadInterstitial()很重要!!!可以保证你的下个广告能够提前加载出来

5、特别说明:测试时,必须使用测试广告单元(利用#if DEBUG区分测试和正式)或者添加测试设备,不可用正式的广告单元进行投放,会被封号
6、遇到的问题
A问题:Failed to load interstitial ad with error: Request Error: No ad to show.

A问题:Failed to load interstitial ad with error: Request Error: No ad to show.
这个问题,搜索了很多地方,最终查到原因是因为在Admob上需要设置app-ads.txt。
image.png
在这里看下是否app-ads.txt验证通过,24小时生效。如果不通过,需要点击“How to set up app-ads.txt”按钮查看如何添加。

B问题:Error Domain=com.google.admob Code=5 "Request Error: The Google Ad request was unable to be fulfilled before a timeout occurred.

这个问题就很诡异,测试广告单元ID是好的,但是用正式的广告单元ID+设置测试设备ID后,就会出现这个错误,我找了很多资料,最后有一段话“多测试几次,多拉几次广告就行了”,确实是这样。

特别说明一下:app-ads.txt

官方解释如下:
授权应用卖方(或 app-ads.txt) 是一项 IAB 计划,可帮助保护你的应用广告资源免遭广告欺诈。你可以创建 app-ads.txt 文件来指明有权销售你的广告资源的卖方。通过指明授权卖方,你可以避免那些原本可能流向欺诈应用的仿冒广告资源的广告客户支出。
app-ads.txt 文件是公开的,可供广告交易平台、供应方平台 (SSP) 以及其他买方和第三方供应商抓取。
授权应用卖方 (app-ads.txt) 是授权数字卖方 (ads.txt) 计划的延伸和扩展,后者最初设计用于保护网络广告资源。app-ads.txt 在 ads.txt 的基础上扩展了兼容性, 使之支持移动应用中展示的广告。
通俗来说,有了app-ads.txt像是有了保障,可以保证广告来源的质量。

相关文章

网友评论

      本文标题:iOS项目集成Admob [Request Error: No

      本文链接:https://www.haomeiwen.com/subject/ifqkcdtx.html