アプリで 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
}