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
}
4

1 に答える 1

1

広告アクティビティを開始する前に、広告デリゲートを設定する必要があります。そうしないと、デリゲートに有用な (失敗した) メッセージを転送する可能性のある SDK が転送できない可能性があります。

どこで/どのようにshowFullScreenAd呼ばれますか? この方法は、広告が利用できない場合、コントローラーがポップされるという点で合理的と思われます (その場合、ルート ビュー コントローラーが必要な場所にあると仮定します)。

FlurryAdDelegateまた、広告が正常に取得されたときに警告するメソッドを実装し、それを表示機能で使用することもできます。

広告サーバーへのフェッチは失敗する可能性FlurryAdDelegate#sapceDidFailToReceiveAd:error:があるため、多くの場合、このメソッドを実装するのが賢明 です。統合で広告をどのように使用するかによっては、ここで別のネットワーク リクエストを試行することをお勧めします。

http://support.flurry.com/index.php?title=発行元/コード/ドキュメント

于 2013-03-07T22:35:31.453 に答える