Методы межстраничных делегатов iAd не вызываются

Я хочу использовать межстраничную рекламу в своем приложении, поэтому реализовал все необходимые методы делегирования. Проблема в том, что если я использую [self requestInterstitialAdPresentation] для показа рекламы, вызывается только метод interstitialAdDidLoad:. Методы interstitialAdActionDidFinish: не вызываются...

Но если я использую устаревший [self.interstitial presentFromViewController:self] для показа рекламы, все работает.

Есть ли что-то новое, что нужно реализовать, чтобы все заработало?

заранее спасибо


person appcodix    schedule 02.05.2014    source источник


Ответы (2)


Хорошо, я решил проблему.

Начиная с IOS7 с его дополнениями iAd нет необходимости в adInterstitialDelegate. Единственное, что нужно сделать, это подготовить рекламу или установить для interstitialPresentationPolicy значение, отличное от none (как вы можете прочитать в документации), и в качестве последнего шага запросить рекламу с помощью метода requestInterstitialAdPresentation:.

person appcodix    schedule 05.05.2014
comment
И как узнать, когда пользователь коснется объявления - (BOOL) interstitialAdActionShouldBegin:(ADInterstitialAd *)interstitialAd willLeaveApplication:(BOOL)willLeave или когда объявление будет закрыто - (void)interstitialAdActionDidFinish:(ADInterstitialAd *)interstitialAd Если вы не можете использовать методы делегата - person Oscar; 05.09.2014
comment
Когда объявление будет закрыто, будет запущен viewDidAppear в вашем контроллере представления. - person Jellyjoey; 01.10.2014

iOS 9.2.1, Xcode 7.2.1, ARC включен

@Jellyjoey Я подтвердил, что viewDidAppear вызывается, когда объявление закрывается. И, как и следовало ожидать, когда вы нажимаете на объявление, вызывается viewDidDisappear.

Это связано с тем, как вы представляете межстраничное объявление:

Завершение рекламного действия

Если полноэкранная реклама отображала мультимедийную рекламу внутри вашего приложения, она вызывает метод interstitialAdActionDidFinish: вашего делегата после завершения рекламы. Ваша реализация этого метода должна восстанавливать все службы, приостановленные вашим приложением при запуске действия.

Важно: если ваше приложение было перемещено в фоновый режим из-за того, что параметр willLeave был равен YES, то пользовательский интерфейс приложения никогда не закрывается баннером, и ваше приложение не получает вызов interstitialAdActionDidFinish:. Однако, если ваш интерфейс был закрыт баннером, ваше приложение все равно может быть перемещено в фоновый режим позже, либо потому, что реклама запускает другое приложение, либо потому, что пользователь решил это сделать. Во всех случаях, если ваш пользовательский интерфейс был закрыт представлением баннера, он раскрывается, и interstitialAdActionDidFinish: вашего делегата вызывается до того, как ваше приложение перейдет в фоновый режим. Поскольку приложение может перейти в фоновый режим, ваш делегат должен быстро вернуться из своего метода interstitialAdActionDidFinish:.

Чтобы просмотреть приведенный выше отрывок и остальные рекомендации по межстраничным объявлениям, выполните следующие действия:

https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/iAd_Guide/Full-ScreenAdvertisements/Full-ScreenAdvertisements.html#//apple_ref/doc/uid/TP40009881-CH5-SW24

Вот два примера использования рекламы на всю страницу, предоставленные Apple:

https://developer.apple.com/library/ios/samplecode/iAdInterstitialSuite/Introduction/Intro.html#//apple_ref/doc/uid/DTS40010627-Intro-DontLinkElementID_2

person serge-k    schedule 16.02.2016