2015-06-12 2 views
2

Я искал и искал и искал разъяснения о том, как это сделать, но я до сих пор не знаю, как это сделать правильно.ADBannerView Confusion (iOS 8)

Мой затруднительное и то, что я хочу, чтобы мой результат будет:

У меня есть ADBannerView добавил к моей раскадровки, и имя переменной, где я реализую это bannerView. Я делаю выбор disable объявлений в игре. Если реклама отключена, объявления не должны загружаться. Если я прав, то метод делегата bannerViewWillLoadWithAd: не следует вызывать, а также метод bannerViewDidLoadAd:. Я использую этот код, заключенный в «если» заявление, чтобы удалить 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; 
} 

код работает, но я в конечном итоге получаю ошибки и нечетные события в журналах, которые обычно включают в себя «обслуживание сессии прекращено», когда объявления должны показать и объявления когда они не должны. Любая идея, как это исправить?

ответ

0

Во-первых, вы используете [self setCanDisplayBannerAds:YES] в дополнение к созданию собственных ADBannerView. Вы должны использовать тот или иной. [self setCanDisplayBannerAds:YES] на самом деле создает ADBannerView для вас в дополнение к одному , которые вы создаете.

Чтобы удалить рекламу, вы не должны дожидаться загрузки объявления, чтобы скрыть их. Вы должны проверить один раз при запуске своего приложения и разобраться с ним. Если вы решили использовать setCanDisplayBannerAds его довольно просто:

-(void)viewDidLoad { 
    [super viewDidLoad]; 
    if (disableAds) { 
     self.canDisplayBannerAds = NO; 
    } 
} 

Если вы решили использовать свой собственный реализованный ADBannerView код может выглядеть следующим образом:

-(void)viewDidLoad { 
    [super viewDidLoad]; 
    if (disableAds) { 
     banner.hidden = YES; 
     banner.delegate = nil; 
    } 
} 
+0

Я никогда не ставил 'canDisplayBannerAds' в' YES' , Однако я могу удалить, где он устанавливает 'canDisplayBannerAds' значение' NO'. – DDPWNAGE

+0

Извините @DDPWNAGE, я предположил, что вы устанавливаете 'canDisplayBannerAds', как вы показали, вы устанавливаете его в« НЕТ ». Нет необходимости устанавливать его в «НЕТ», если вы не устанавливаете его в «YES». Просто удалите 'canDisplayBannerAds' и следуйте второму примеру, который я вам предоставил. –

+0

Когда я получу шанс. Я не знал, что 'canDisplayBannerAds' сделает второй вид баннера в нижней части экрана. Как получить свойства вида _that_ banner (например, делегат, кадр и т. Д.)? – DDPWNAGE

Смежные вопросы