我已经在我的应用程序中设置了 Flurry 广告,而且大多数时候,它们的效果都很好。我的游戏有几个小游戏,在每个小游戏结束时,我都会展示一个广告。
但是,有时广告不会出现,让用户停留在游戏的结束屏幕上。我无法弄清楚每次都会发生这种情况的用例,而似乎是随机发生的。
一旦广告未能出现,双击主页按钮(即调出应用程序切换器菜单)具有关闭广告并返回我的游戏主屏幕的效果。所以就好像广告在那里,但用户看不到它(或单击 x 将其关闭)。
这种情况发生一次后,每次都会发生,即应用程序不会返回到广告工作的状态,除非我完全重新启动应用程序(双击主页按钮等)。
我从我的用户那里收到很多关于应用程序在每次小游戏后“崩溃”的报告,而实际发生的是广告没有出现。
下面是我初始化和显示广告的代码。方法 [showFullScreenAd] 每次都被成功调用,并且我有来自 delegates 方法的输出语句来确认广告已成功检索。
- (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
}