0

我正在尝试将一些 RevMob 代码添加到我的应用程序中,该应用程序当前包含 IAP,我希望添加一些广告(全屏)。

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

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

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

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

有什么建议么?

4

2 回答 2

3

“理想情况下,我只想在应用程序首次加载时调用广告,然后在用户关闭应用程序然后重新打开它(待机模式)时调用。”

实现UIApplicationDelegate的以下方法:

  • application:didFinishLaunchingWithOptions:

我相信您很清楚,此方法会在应用程序首次启动时触发一次。我们必须实现此方法,因为第一次启动时不会调用以下方法。

  • applicationWillEnterForeground:

从文档中:

此方法被称为从后台到活动状态转换的一部分。

仅当应用程序从后台状态移动时才调用此方法。与applicationDidBecomeActive:您遇到问题的方法applicationWillEnterForeground:不同,不会在短暂中断后调用,例如关闭传入的 SMS 或电话或与应用内购买交互。

代码

- (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];
}
于 2013-03-13T15:16:55.650 回答
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) 

这样,广告只会在大于某个阈值的背景时间后出现。

于 2013-03-13T17:14:19.577 回答