我正在尝试将一些RevMob代码添加到我的应用中,该应用目前还有IAP,我希望添加一些广告(全屏)。
现在我的代码放在以下方法中
- (void)applicationDidBecomeActive:(UIApplication *)application {
RevMobFullscreen *fullscreen;
fullscreen = [[RevMobAds session] fullscreen];
fullscreen.delegate = self;
[fullscreen loadAd];
[fullscreen showAd];
}
问题在于这会导致广告过于频繁地出现。理想情况下,我只想在应用程序首次加载时调用广告,然后在用户关闭应用程序然后重新打开它时(待机模式)。
上述代码在用户也与IAP交互时调用广告代码,因为打开了警告框,询问用户是否想要购买。
任何建议?
答案 0 :(得分:3)
“理想情况下,我只想在应用程序首次加载时调用广告,然后在用户关闭应用程序然后重新打开它时(待机模式)。”
实施UIApplicationDelegate的以下方法:
application:didFinishLaunchingWithOptions:
我确信你很清楚,这个方法会在应用首次启动时触发一次。我们必须实现此方法,因为首次启动时不会调用以下方法。
applicationWillEnterForeground:
来自文档:
此方法在从背景到活动状态的转换过程中被调用。
仅当应用程序从background state移动时才会调用此方法。与applicationDidBecomeActive:
方法不同的是,您遇到问题时applicationWillEnterForeground:
不在短暂中断后被调用,例如解除收到的短信或电话或与应用内购买交互。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
...
[self showAd];
return YES;
}
- (void)applicationWillEnterForeground:(UIApplication *)application
{
[self showAd];
}
- (void)showAd
{
RevMobFullscreen *fullscreen;
fullscreen = [[RevMobAds session] fullscreen];
fullscreen.delegate = self;
[fullscreen loadAd];
[fullscreen showAd];
}
答案 1 :(得分:0)
使用
application:didFinishLaunchingWithOptions:
首次推出该应用。
对于来自向后功能记录的日期时间如此
- (void)applicationDidEnterBackground:(UIApplication *)application
{
self.timeEnteredBackground = [NSDate date];
}
- (void)applicationWillEnterForeground:(UIApplication *)application
{
NSDate* now = [NSDate date];
double diff = [now timeIntervalSinceDate:timeEnteredBackground];
if (diff > SOME_SECONDS)
这样,广告只会在背景时间大于某个阈值后才会显示。