我在我的应用中设置了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
}
答案 0 :(得分:1)
您希望在发起任何广告活动之前设置广告代理。否则,它可能可能 SDK,否则可能会向您的代理转发有用的(失败)消息,否则将无法执行此操作。
showFullScreenAd
在哪里/如何调用?该方法似乎是合理的,因为如果广告不可用,则会弹出控制器(假设您的根视图控制器是您希望在那种情况下的位置)。
您还可以实施FlurryAdDelegate
方法,以便在成功获取广告时提醒您,并在显示功能中使用该方法。
由于对广告服务器的提取可能失败,因此实施FlurryAdDelegate#sapceDidFailToReceiveAd:error:
方法通常是谨慎的。根据您在集成中使用广告的方式,您可能希望在此处尝试其他网络请求。
http://support.flurry.com/index.php?title=Publisher/Code/Doc