如何检测IOS应用程序关闭并仅加载?

时间:2013-03-13 15:07:26

标签: ios iphone

我正在尝试将一些RevMob代码添加到我的应用中,该应用目前还有IAP,我希望添加一些广告(全屏)。

现在我的代码放在以下方法中

- (void)applicationDidBecomeActive:(UIApplication *)application {
RevMobFullscreen *fullscreen;
fullscreen = [[RevMobAds session] fullscreen];
fullscreen.delegate = self;
[fullscreen loadAd];
[fullscreen showAd];
}

问题在于这会导致广告过于频繁地出现。理想情况下,我只想在应用程序首次加载时调用广告,然后在用户关闭应用程序然后重新打开它时(待机模式)。

上述代码在用户也与IAP交互时调用广告代码,因为打开了警告框,询问用户是否想要购买。

任何建议?

2 个答案:

答案 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) 

这样,广告只会在背景时间大于某个阈值后才会显示。