我已使用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网络,因此使用中介服务进行设置。我不确定如何更改上述方法。
答案 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;