2016-04-12 2 views
0

Я интегрировал Facebook сеть аудитории для показа объявлений,Получение аварии в аудитории сети Facebook, показывая объявление

Код:

if (fbInterstitialAd.isAdValid == YES) { 
    [fbInterstitialAd showAdFromRootViewController:viewController]; 
} 

но получить эту аварию, показывая объявление:

*** Terminating app due to uncaught exception 'InvalidOperationException', reason: 'showAdFromRootViewController may only be called once' 

Примечание:

ответ

1

В настоящее время FBInterstitialAd ограничено, чтобы показать только один раз. Если приложение пытается показать его более одного раза, будет выбрано «InvalidOperationException».

Прежде всего, добавьте try/catch вокруг метода '[fbInterstitialAd showAdFromRootViewController: viewController];' чтобы избежать сбоя.

Во-вторых, чтобы проверить вашу интеграцию и убедиться, что объект «fbInterstitialAd» не отображается более одного раза.

+0

Спасибо за ваш ответ, я добавлю попытку поймать там, но как я могу убедиться, что «fbInterstitialAd» не отображается более одного раза? Есть ли какой-либо метод fb для этого? –

+0

Объект 'FBInterstitialAd' сам по себе не предоставляет метод проверки прямо сейчас. Для этого можно добавить локальный флаг. Согласно вашему коду, флаг может использоваться как ниже: 'if (fbInterstitialAd.isAdValid == YES && isAlreadyViewed == FALSE) { [fbInterstitialAd showAdFromRootViewController: viewController]; isAlreadyViewed = TRUE; } ' –

+0

Спасибо, Джейсон, попытка поймать делает трюк. –

1

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

Когда межстраничные объявления показывали, делегат «interstitialAdWillLogImpression» будет вызывать. Я создам новые межстраничные объявления вовремя.

func interstitialAdWillLogImpression(interstitialAd: FBInterstitialAd) { 
    fbInterstitialAd = FBInterstitialAd(placementID: "your_placement_id") 
    fbInterstitialAd.delegate = self 
    fbInterstitialAd.loadAd() 
} 
+0

Должен быть принятый ответ. – Shahar

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