我正在开发一款使用Google Ad SDK的iOS应用。应该显示广告的视图控制器是GADBannerViewDelegate和GADSwipeableBannerViewDelegate的委托。
广告在大多数情况下都很好。然而,有时AdMob似乎挂了,我的代表中没有得到任何回应。
我做错了吗?或者,有没有办法检测这种行为?
我初始化广告横幅,然后在viewWillAppear中重新加载广告(假设它尚未加载)。它通常工作得很好,但有时也没有。
以下是相关代码:
UPDATE :: 我改变了代码但无济于事。这是新代码(摆脱了前两种方法):
-(void)resetAdView:(UIViewController *)rootViewController {
[self.adMob_ActivityIndicator startAnimating];
if (adBanner_ == nil) {
adBanner_ = [[DFPSwipeableBannerView alloc]
initWithFrame:CGRectMake(30, 365, 300, 150)];
}
[adBanner_ setHidden:YES];
if (isLoaded_) {
GADRequest *request = [GADRequest request];
[adBanner_ loadRequest:request];
[self.scrollView addSubview:adBanner_];
} else {
adBanner_.delegate = self;
adBanner_.rootViewController = rootViewController;
adBanner_.adUnitID = AD_UNIT_ID;
GADRequest *request = [GADRequest request];
[adBanner_ loadRequest:request];
[self.scrollView addSubview:adBanner_];
}
}
我的实例变量是:
DFPSwipeableBannerView * adBanner_; BOOL isLoaded _;
答案 0 :(得分:0)
这可能是由于缺少广告资源。
您是否实施了横幅视图的错误捕获代理功能?
如果您的代码中没有实现此委托方法,请实现它并记录错误对象以获取详细的错误说明。
答案 1 :(得分:0)
我最后只是从superview中擦除了横幅视图,并完全重新初始化它和请求。这并不能解决挂起响应的问题,但现在如果您切换到另一个视图并返回到此视图,则广告会重新加载。我可能只是在滚动视图中添加了太多的视图,而不再是这种情况。
-(void)resetAdView:(UIViewController *)rootViewController {
// in reset method
[self.adMob_ActivityIndicator startAnimating];
adBanner_ = nil;
for (UIView *subview in self.scrollView.subviews) {
if (subview.tag == 666) {
// removing banner view from superview
[subview removeFromSuperview];
}
}
// (re) initializing banner view
adBanner_ = [[DFPSwipeableBannerView alloc]
initWithFrame:CGRectMake(30, 365, 300, 150)];
[adBanner_ setHidden:YES];
// setting up and requesting ad
adBanner_.delegate = self;
adBanner_.rootViewController = rootViewController;
adBanner_.adUnitID = AD_UNIT_ID;
GADRequest *request = [GADRequest request];
[adBanner_ loadRequest:request];
adBanner_.tag = 666;
[self.scrollView addSubview:adBanner_];
}