Я работаю с Google Mobile Ads SDK на iOS и пытаюсь показать некоторые объявления. Мой код:
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
не находится в иерархии представлений, методы делегата вообще не вызываются. Кроме того, я нашел этот ответ, что соответствует тому, что я наблюдаю. С другой стороны, это цитата из заголовка 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>
. - person Daniel Storm   schedule 10.06.2016