Я работаю с SDK Google Mobile Ads на iOS и пытаюсь отобразить некоторые объявления. Мой код:GADBannerView методы делегата не вызываются, если представление отсутствует в иерархии представлений
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()'. –
@ Даниэль Да, я объявил, что мой контроллер просмотра реализует протокол, и я не получаю никаких предупреждений. – lawicko