2013-02-15 4 views
2

Я настроил рекламу Flurry в своем приложении и большую часть времени, они отлично работают. В моей игре есть несколько мини-игр, и в конце каждой мини-игры я показываю объявление.Места межстраничные объявления появляются непоследовательно

Однако иногда объявление не появляется, оставляя пользователя висящим на конечном экране игры. Я не могу понять случай использования, когда это происходит каждый раз, скорее, это происходит случайно.

После того, как объявление не появилось, двойное нажатие кнопки «домой» (т. Е. Создание меню переключателя приложений) приводит к отмене объявления и возврату на главный экран моей игры. Так что, как будто объявление есть, но пользователь не может его увидеть (или нажмите x, чтобы отклонить его).

После этого происходит один раз, это происходит каждый времени, то есть приложение не возвращается в состояние, в котором объявление работа, если я не перезагружать приложение полностью (двойное нажатие кнопки домой и т.д.).

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

Ниже представлен мой код для инициализации и отображения объявлений. Метод [showFullScreenAd] вызывается успешно каждый раз, и у меня есть выходные инструкции из методов делегатов, чтобы подтвердить, что объявления были успешно восстановлены.

- (void)viewWillAppear:(BOOL)animated { 
[super viewWillAppear:animated]; 
#ifdef ADVERTISING 
if (![[NSUserDefaults standardUserDefaults] boolForKey:kIsProUpgradePurchased]) { 
    DLog(@"Fetching ads for hook %@", kAdHookInterstitial); 
    [FlurryAds fetchAdForSpace:kAdHookInterstitial 
         frame:self.view.frame 
          size:FULLSCREEN]; 
    [FlurryAds setAdDelegate:self]; 
} 
#endif 
} 

-(void) viewWillDisappear:(BOOL)animated { 

#ifdef ADVERTISING 
DLog(@"REMOVING ADS FROM SPACE: %@", kAdHookInterstitial); 
if (![[NSUserDefaults standardUserDefaults] boolForKey:kIsProUpgradePurchased]) { 
    [FlurryAds removeAdFromSpace:kAdHookInterstitial]; 
    [FlurryAds setAdDelegate:nil]; 
} 
#endif 

- (void)showFullScreenAd { 
#ifdef ADVERTISING 
if (![[NSUserDefaults standardUserDefaults] boolForKey:kIsProUpgradePurchased]) { 
    if ([FlurryAds adReadyForSpace:kAdHookInterstitial]) { 
     [FlurryAds displayAdForSpace:kAdHookInterstitial 
           onView:self.view]; 
    } 
    else { 
     [self.navigationController popToRootViewControllerAnimated:YES]; 
    } 
} 
#else 
[self.navigationController popToRootViewControllerAnimated:YES]; 
#endif 
} 
+0

Я был запущен в тот же вопрос и не могу понять его. Очень надоедливый! – gusbit

ответ

1

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

Где и как showFullScreenAd называется? Метод кажется разумным в том, что если объявление недоступно, контроллер выставляется (предполагается, что ваш корневой контроллер будет там, где вы хотите быть в этом случае).

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

Поскольку выборка на сервер объявлений может сбой, часто бывает целесообразно реализовать метод FlurryAdDelegate#sapceDidFailToReceiveAd:error:. В зависимости от того, как вы хотите использовать рекламу в своей интеграции, вы можете попробовать другой сетевой запрос здесь.

http://support.flurry.com/index.php?title=Publisher/Code/Doc

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