2015-11-07 5 views
1

Привет, пользователи Stackoverflow, я снова возвращаюсь с другой проблемой с моими межстраничными объявлениями. Это код, который я использую для показа рекламы:Interstitial iAd не работает в ландшафтном/горизонтальном (Spritekit)

-(void) loadInterstitialAd { 
    NSLog(@"loadInterstitialAd"); 
    _interstitialAd = [[ADInterstitialAd alloc] init]; 
    _interstitialAd.delegate = self; 
    adShowing = true; 
} 
-(void) interstitialAdWillLoad:(ADInterstitialAd *)interstitialAd { 
} 
-(void) interstitialAdDidLoad:(ADInterstitialAd *)interstitialAd { 
    NSLog(@"interstitialAdDidLoad"); 
    interstitialAdView = [[UIView alloc] init]; 
    interstitialAdView.frame = (self.view.bounds); 
    [self.view addSubview:interstitialAdView]; 

    [_interstitialAd presentInView:interstitialAdView]; 
    [UIViewController prepareInterstitialAds]; 
} 
-(void) interstitialAdActionDidFinish:(ADInterstitialAd *)interstitialAd { 
    NSLog(@"interstitialAdActionDidFinish"); 
    [interstitialAdView removeFromSuperview]; 
    adShowing = false; 
} 
-(void) interstitialAd:(ADInterstitialAd *)interstitialAd didFailWithError:(NSError *)error { 
    // you must take this funcion , because without it ADInterstitial iAd will not work 
    NSLog(@"didFailWithError"); 
    adShowing = false; 
} 
-(void) interstitialAdDidUnload:(ADInterstitialAd *)interstitialAd{ 
    // you must take this funcion , because without it ADInterstitial iAd will not work 
    NSLog(@"interstitialAdDidUnload"); 
    adShowing = false; 
} 

Этот код есть в моем классе GameScene. Первоначально я создал новое приложение для спрайтов для тестирования объявлений (приложение было портретом), и это сработало хорошо. Я перенес его на приложение, которое я намеревался опубликовать, которое было горизонтальным, и оно не сработало. Я установил некоторые NSLog для отслеживания того, что вызывается вместе с логическим adShowing, который изменяется в зависимости от состояния объявления. После запуска приложения и инициализации loadInterstitialAd я заметил, что adShowing BOOL станет правдой, через пару секунд пройдет, а затем "didFailWithError"

появится в консоли, указывающим, что объявление не удалось показать, который говорит мне, что только объявления работа в портрете, по крайней мере, с моей настройкой. Есть ли у кого-нибудь идеи, что я могу сделать, чтобы изменить свой код, чтобы реклама работала в горизонтальном/альбомном режиме?

С наилучшими пожеланиями Райан

EDIT После довольно много испытаний, и я осмелюсь сказать, возится. Я заметил, что объявление действительно работает, но иногда очень редко :)

ответ

0

В контроллере представления появляется ваша сцена игры добавить

[self setInterstitialPresentationPolicy:ADInterstitialPresentationPolicyManual]; 

в viewDidLoad

Вы также должны контроллер представления позвонить

[self requestInterstitialAdPresentation]; 

Итак, вы можете создать протокол в GameScene.h с помощью метода showInterstitialAd. Как:

@protocol GameSceneDelegate <NSObject> 
- (void) showInterstitialAd; 
@end 

Добавьте свойство делегата для GameScene.h

@property (nonatomic, weak) id <GameSceneDelegate> delegate; 

Есть контроллер представления, как это делегат и реализовать что-то подобное и объявить его соответствие протоколу GameSceneDelegate.

-(void)showInterstitialAd{ 
    [self requestInterstitialAdPresentation]; 
} 

В viewDidLoad из GameSceneController установить gameScene.delegate = self;

Если вы хотите, чтобы показать надстройку в GameScene вызова [self.delegate showInterstitialAd];

+0

спасибо за ответ чувак! Теперь я получаю следующую ошибку в этой строке (до запуска приложения - показывает в разделе предупреждения Xcode) 'Нет видимого @interface для 'GameScene' объявляет селектор 'setInterstitialPresentationPolicy:'' – user2876115

+0

Не размещайте его непосредственно в игровой сцене , Поместите его в контроллер просмотра, который представляет сцену. Если вы используете шаблон набора спрайтов из Xcode, он называется GameViewController. – beyowulf

+0

Я поместил его в контроллер игрового представления, но я не получил сообщение об ошибке, но когда я его запустил, я все еще получаю сообщение об ошибке, которое я получил изначально. – user2876115

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

  • Нет связанных вопросов^_^