【问题标题】:GAD adLoader Delegates not get CalledGAD adLoader 代表没有被调用
【发布时间】:2021-10-09 09:01:56
【问题描述】:

我正在尝试实施原生广告,但没有调用 adLoader 代表。更有趣的是,由于某种原因,delegate 变成了 nil。没有错误打印不接收。非常感谢任何建议。

func getAd(){
let adLoader = GADAdLoader(adUnitID: adUnitID, rootViewController: self, adTypes: [.native], options: [options])
    adLoader.delegate = self
    print(adLoader.delegate)
    adLoader.load(GADRequest())
}
extension ViewController:GADNativeAdDelegate, GADAdLoaderDelegate{
func adLoader(_ adLoader: GADAdLoader, didReceive nativeAd: GADNativeAd) {
    print("did receive")
  // A native ad has loaded, and can be displayed.
}

func adLoaderDidFinishLoading(_ adLoader: GADAdLoader) {
    print("finish Loading")
    // The adLoader has finished loading ads, and a new request can be sent.
}


func adLoader(_ adLoader: GADAdLoader, didFailToReceiveAdWithError error: Error) {
  print(error)
}
}

【问题讨论】:

  • 在哪里声明委托并创建对象?
  • @RajaKishan adLoader 在自定义函数中.. 刚刚更新了编码

标签: ios swift delegates admob


【解决方案1】:

发现问题.. 对于将来遇到相同问题的任何人,正确的委托是 GADNativeAdLoaderDelegate 而不是 GADNativeAdDelegate 或 GADAdLoaderDelegate

【讨论】:

    【解决方案2】:

    目前,您的 GADAdLoader 对象范围在 getAd 函数内。一旦函数结束,所有东西都释放。

    尝试在类中设置GADAdLoader对象引用。

    class ViewController: UIViewController {
        
        var adLoader: GADAdLoader!
        
        func getAd(){
            self.adLoader = GADAdLoader(adUnitID: adUnitID, rootViewController: self, adTypes: [.native], options: [options])
            adLoader.delegate = self
            print(adLoader.delegate)
            adLoader.load(GADRequest())
        }
    }
    

    【讨论】:

    • 不,同样的问题.. 不知道为什么会这样,即使我在同一个控制器中有效地使用了 GADBannerView
    • 仍然,delegate print nil?
    • 是的.. 有没有办法在委托方法之外调试问题?
    • 您能发布您的完整代码吗? getAd函数什么时候调用?
    • func getAd(){ 在为特定行调用 cellForRowAtIndexPath 中的单元格时调用。以前用 GADBannerView 来做这件事,但现在我想让它成为原生的暗模式自定义
    猜你喜欢
    • 2015-03-07
    • 1970-01-01
    • 1970-01-01
    • 2019-04-26
    • 2013-02-19
    • 2016-09-05
    • 1970-01-01
    • 2021-06-03
    • 1970-01-01
    相关资源
    最近更新 更多