3

我遵循了developers.google.com 上的自定义事件示例,但未能从自定义广告网络接收到标题错误的广告。

在我为自定义事件请求广告后,requestBannerAd:parameter:label:request:课堂CustomAd上确实被调用了。但是随后(几秒钟后),它跳到adView:didFailToReceiveAdWithError:了以下错误。而且我的自定义网络广告请求requestBannerAd:parameter:label:request:不起作用。

Error Domain=com.google.ads Code=9 “请求错误:所有配置的广告网络都没有广告可显示。” UserInfo=0x1e8e31a0 {NSLocalizedDescription=请求错误:所有配置的广告网络都没有广告可显示。,NSLocalizedFailureReason=请求错误:所有配置的广告网络都没有广告可显示。}

我尝试添加[self.delegate customEventBanner:self didReceiveAd:bannerView_];requestBannerAd:parameter:label:request:,然后它可以工作。

我的问题是:

我做对了吗?我应该[self.delegate customEventBanner:self didReceiveAd:bannerView_];手动调用吗requestBannerAd:parameter:label:request:,官方文档中没有提到。

对于触发后者的自定义事件广告请求requestBannerAd:parameter:label:request:,我应该为它设置gadBannerView_.delegate吗?当我设置它,然后成功接收自定义事件(requestBannerAd:parameter:label:request:被调用)时,为什么adView:didFailToReceiveAdWithError被调用而不是adViewDidReceiveAd:

4

2 回答 2

2

您确实需要[self.delegate customEventBanner:self didReceiveAd:bannerView_];在自定义事件流中的某个时间点调用。如果您在被调用后的大约 5 秒内没有这样做requestBannerAd:parameter:label:request:,AdMob 中介将在请求您的自定义事件时超时并继续。这就是您看到以下消息的原因:

Error Domain=com.google.ads Code=9 “请求错误:所有配置的广告网络都没有广告可显示。” UserInfo=0x1e8e31a0 {NSLocalizedDescription=请求错误:所有配置的广告网络都没有广告可显示。,NSLocalizedFailureReason=请求错误:所有配置的广告网络都没有广告可显示。}

至于何时调用[self.delegate customEventBanner:self didReceiveAd:bannerView_];,这取决于您的自定义事件。didReceiveAd:如果您的自定义事件只返回一个静态图像,您可以使用该图像直接调用requestBannerAd:parameter:label:request:

但是,如果您正在实施 AdMob 中介尚不支持的某个广告网络,那么他们很可能会有某种监听器来告诉您何时收到广告(在 AdMob 的情况下,这将是GADBannerViewDelegate回调adViewDidReceiveAd)。您应该侦听该网络收到的广告回调,并在该侦听器中调用didReceiveAd:

对于GADRequest最终触发您的自定义事件的 AdMob 主节点,您应该设置一个GADBannerViewDelegateGADBannerView侦听来自您的自定义事件或您在中介流中可能拥有的任何其他网络的回调。如果您得到adViewDidReceiveAd:,您就知道 AdMob 中介从您的一个网络中找到了一个广告。

于 2013-06-25T15:53:38.983 回答
0

我在 Xamarin.iOS 中遇到同样的问题,但现在我已经解决了:

[按照此步骤][对于 Xamarin.iOS]`I. 在这里,我传递了一个广告暴民请求:

  adView.LoadRequest(request);

二、如果 adview 在加载广告请求时失败。

 adView.ReceiveAdFailed += (object sender, BannerViewErrorEventArgs ea) => {
                                        viewOnScreen = false;
                    Console.WriteLine(ea.Error.Description);
                    adView.LoadRequest(request);
                                    };

三、然后我们会在这里得到暴民广告响应。

 adView.AdReceived += (sender, args) =>
                {
                    viewOnScreen = true;
                    if (!viewOnScreen) this.AddSubview(adView);
                };`
于 2018-08-16T11:44:22.103 回答