处理iAd无法在Admob中介设置中接收广告

时间:2013-01-12 22:37:28

标签: ios ios5 ios-simulator admob iad

我已使用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 Progamming指南:iAd Prog Guide

这表明建立一个像这样的方法......

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

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

2 个答案:

答案 0 :(得分: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始终属于GADBannerView类,但它有一个属性mediatedAdView,其中包含要显示的实际广告(可能是iAd横幅广告)。

顺便说一下,您在代码中准备了广告请求,但实际上并没有用它来加载广告。您可能还希望向下移动loadRequest:调用并使用准备好的请求:

[bannerView_ loadRequest:request];

AdMob SDK文档中的GADBannerViewDelegate方法有更多内容:https://developers.google.com/mobile-ads-sdk/docs/admob/intermediate

答案 1 :(得分:1)

我想你错过了添加行:

bannerView_.delegate = self;