2016-04-12 42 views
0

获取崩溃,显示我已经整合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