【发布时间】:2016-06-10 14:33:20
【问题描述】:
我正在 iOS 上使用 Google 移动广告 SDK 并尝试展示一些广告。我的代码:
GADBannerView* bannerView = [[GADBannerView alloc] initWithAdSize:GADAdSizeFromCGSize(CGSizeMake(300, 250))];
bannerView.adUnitID = @"hidden";
bannerView.rootViewController = self;
bannerView.delegate = self;
GADRequest* request = [GADRequest request];
request.testDevices = @[ kGADSimulatorID ];
[bannerView loadRequest:request];
如果我将bannerView 添加到您在上面看到的代码之后的视图层次结构中,则效果很好。但是,我真的不想在广告加载之前添加它,所以我想延迟它。我注意到如果bannerView 不在视图层次结构中,则根本不会调用委托方法。此外,我找到了this answer,这与我所观察到的一致。另一方面,这是来自 GADBannerViewDelegate 标头的引用:
/// Tells the delegate that an ad request successfully received an ad. The delegate may want to add
/// the banner view to the view hierarchy if it hasn't been added yet.
- (void)adViewDidReceiveAd:(GADBannerView *)bannerView;
这表明即使视图不在层次结构中,也应该可以接收这些委托回调,这正是我想要的。那么,有什么想法可以实现吗?
【问题讨论】:
-
您已将
GADBannerViewDelegate添加到您的ViewController,对吗?例如,@interface ViewController () <GADBannerViewDelegate>。 -
@Daniel 是的,我已经声明了我的视图控制器来实现协议,我没有收到任何警告。
标签: ios objective-c delegates admob gadbannerview