Я искал, искал, искал и искал разъяснения о том, как это сделать, но я до сих пор не знаю, как это сделать правильно.
Мои затруднения и то, что я хочу, чтобы мой результат был:
У меня есть ADBannerView
, добавленный в мою раскадровку, и имя переменной, в которой я ее реализую, — bannerView
. Я делаю возможность отключить рекламу в игре. Если реклама отключена, то реклама даже не должна загружаться. Если я прав, то метод делегата bannerViewWillLoadWithAd:
не должен вызываться, как и метод bannerViewDidLoadAd:
. Я использую этот код, заключенный в оператор «if», чтобы удалить ADBannerView
из контроллера представления:
[bannerView removeFromSuperview];
[self setCanDisplayBannerAds:NO];
И тогда мои методы делегата выглядят так (мой делегат — это моя игровая сцена, а на контроллер представления ссылается свойство указанной сцены viewController1
):
-(BOOL)bannerViewActionShouldBegin:(ADBannerView *)banner willLeaveApplication:(BOOL)willLeave {
NSLog(@"banner view action will begin.");
self.paused = YES;
return YES;
}
-(void)bannerViewDidLoadAd:(ADBannerView *)banner {
NSLog(@"Ad loaded.");
}
-(void)bannerViewWillLoadAd:(ADBannerView *)banner {
NSLog(@"Ad Banner will load ad.");
if (// ads are disabled) {
viewController1.canDisplayBannerAds = NO;
[banner removeFromSuperview];
NSLog(@"Banner shouldn't load");
}
}
-(void)bannerViewActionDidFinish:(ADBannerView *)banner{
NSLog(@"Ad Banner action did finish");
self.paused = NO;
}
-(void)bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError *)error {
NSLog(@"Ad banner view failed to load. Details about the error: %@", error.debugDescription);
banner.hidden = YES;
}
Код работает, но в итоге я получаю ошибки и странные события в журналах, которые обычно включают «сеанс службы завершен», когда реклама должна отображаться, и загрузка рекламы, когда она не должна показываться. Есть идеи, как это исправить?