1

我使用 AdMob 中介服务设置了一个基本应用程序作为测试。

- (void)viewDidLoad {
      [super viewDidLoad];

      // Create a view of the standard size at the top of the screen.
      // Available AdSize constants are explained in GADAdSize.h.
      bannerView_ = [[GADBannerView alloc] initWithAdSize:kGADAdSizeBanner];

      // Specify the ad's "unit identifier." This is your AdMob Publisher ID.
      bannerView_.adUnitID = kAdMobPublisherID;

      // Let the runtime know which UIViewController to restore after taking
      // the user wherever the ad goes and add it to the view hierarchy.
      bannerView_.rootViewController = self;
      [self.view addSubview:bannerView_];

      // Initiate a generic request to load it with an ad.
      [bannerView_ loadRequest:[GADRequest request]];

      GADRequest *request = [GADRequest request];
      // Make the request for a test ad. Put in an identifier for
      // the simulator as well as any devices you want to receive test ads.
      request.testDevices = [NSArray arrayWithObjects:
                             @"4D047EB9-A3A7-441E-989E-C5437F05DB04",
                             @"YOUR_DEVICE_IDENTIFIER",
                             nil];

 }

当应用程序无法接收广告时,我会收到这些错误。我相信 iAd 在测试 iAd 广告期间会发送相当多的错误。

[AppDeveloper]: ADBannerView: Unhandled error (no delegate or delegate does not implement didFailToReceiveAdWithError:): Error Domain=ADErrorDomain Code=4 "The operation couldn’t be completed. Application has iAd Network configuration error" UserInfo=0x9fd8d20 {ADInternalErrorCode=4, ADInternalErrorDomain=ADErrorDomain, NSLocalizedFailureReason=Application has iAd Network configuration error}

该错误是由于没有实现 didFailToReceiveAdWithError。我的问题是如何实现这个方法。

我查看了 iAd 节目指南:iAd Prog 指南

这建议设置这样的方法......

- (void)bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError *)error

但是,由于我的代码没有直接实现 iAd 网络,它是使用中介服务设置的。我不确定如何将上述方法更改为工作。

4

2 回答 2

3

由于 AdMob 框架处理广告显示(即使中介到 iAd 等其他广告源),您只需要实现对 AdMob 横幅的处理。如果 AdMob 框架通过中介显示 iAd,它会将其封装并像任何常规 AdMob 横幅一样呈现给您。因此,您只需设置bannerView 的委托以接收来自AdMob 框架的事件,例如让您的视图控制器实现GADBannerViewDelegate协议并将其用作委托):

@interface MyViewController : UIViewController <GADBannerViewDelegate>
...

在你的viewDidLoad方法中:

bannerView_.delegate = self;

然后,您可以添加各种方法来处理广告事件,例如

- (void)adView:(GADBannerView *)bannerView didFailToReceiveAdWithError:(GADRequestError *)error;

当没有广告可以请求时调用。也很有用:

- (void)adViewDidReceiveAd:(GADBannerView *)bannerView;

每当成功接收到广告时都会调用它。此方法通常用于在广告横幅中滑动。传递bannerView的总是 class GADBannerView,但它有一个mediatedAdView包含要显示的实际广告的属性(可能是 iAd 横幅)。

顺便说一句,您正在代码中准备广告请求,但实际上并未使用它来加载广告。您可能还想向下loadRequest:调用并使用准备好的请求:

[bannerView_ loadRequest:request];

GADBannerViewDelegate有关AdMob SDK 文档中的方法的更多信息,请访问: https ://developers.google.com/mobile-ads-sdk/docs/admob/intermediate 。

于 2013-03-18T14:45:52.687 回答
1

我认为您错过了添加行:

bannerView_.delegate = self;
于 2013-01-13T08:06:08.447 回答