非页内广告iAd不会每次都显示

时间:2014-09-20 13:12:41

标签: ios xcode swift iad interstitial

我正在iPhone应用中实施插页式广告。我调用相同的代码块:

showInterstitialAds = true
self.interstitialAd.delegate = self
self.interstitialPresentationPolicy = ADInterstitialPresentationPolicy.Automatic
println(interstitialAd)
requestingAd = true

但是,每次都不会显示插页式广告 - 也许每5或10次播放一次。为什么是这样?

另外,如何检查广​​告插播广告是否会显示,以便我可以展示横幅广告?

2 个答案:

答案 0 :(得分:0)

iAd平台通过广告广告向应用提供广告。任何单个应用程序可用的库存取决于许多不同因素,包括您的应用程序类别,您的应用程序是否定期取消广告,定价以及许多其他只有Apple知道的商业因素。您的应用需要处理您没有收到广告的情况 - 因为这是正常情况。我的建议是要么拥有一套标准的自己广告,例如宣传自己应用的功能,要么在iAd不为您提供广告时使用其他广告网络来填充广告。

以下是如何隐藏或展示广告的简单示例,具体取决于广告是否已投放:

-(void)bannerViewDidLoadAd:(ADBannerView *)banner {
    adView.hidden = NO;
    NSLog(@"Has ad, showing ad");
}


-(void)bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError *)error {
    adView.hidden = YES;
    NSLog(@"Has no ads, hidind ad");
}

希望这有帮助。

答案 1 :(得分:0)

我知道这个问题大约是6岁,但是我遇到了同样的问题。对我有用的东西(在Flutter中):

import 'package:firebase_admob/firebase_admob.dart';

InterstitialAd _interstitialAd;
bool _isInterstitialAdReady;

void prepAd(){
  initState();
  _loadInterstitialAd();
}

void runAd() {
  _interstitialAd.show();
}

void initState() {
  _isInterstitialAdReady = false;
  _interstitialAd = InterstitialAd(
    adUnitId: InterstitialAd.testAdUnitId,
    listener: _onInterstitialAdEvent,
  );
}


void _loadInterstitialAd() {
  _interstitialAd.load();
}
// TODO: Implement _onInterstitialAdEvent()
void _onInterstitialAdEvent(MobileAdEvent event) {
  switch (event) {
    case MobileAdEvent.loaded:
      _isInterstitialAdReady = true;
      break;
    case MobileAdEvent.failedToLoad:
      _isInterstitialAdReady = false;
      print('Failed to load an interstitial ad');
      break;
    case MobileAdEvent.closed:
      dispose();
      prepAd();
      break;
    default:
    // do nothing
  }
}

void dispose() {// TODO: Dispose InterstitialAd object
  _interstitialAd?.dispose();
}

我一开始运行一次prepAd(),然后在需要时运行runAd()。您可以根据需要在runAd()中检查_isInterstitialAdReady == true