检测应用程序在启动后第一次打开时

时间:2011-02-22 00:57:10

标签: ios cocoa-touch uiviewcontroller

我想在应用程序安装和第一次打开时在视图控制器上显示帮助消息。

我可以使用哪种方法来做到这一点吗?

3 个答案:

答案 0 :(得分:7)

您可以显示一次帮助消息,然后在NSUserDefaults中存储一个布尔值,表示不应再次显示该消息:

NSUserDefaults * userDefaults = [NSUserDefaults standardUserDefaults];
BOOL appHasBeenLaunchedBefore = [userDefaults boolForKey:@"HasBeenLaunched"];
if (!appHasBeenLaunchedBefore)
{
    [self showHelpMessage];
}
[userDefaults setBool:YES forKey:"HasBeenLaunched"];

答案 1 :(得分:2)

在用户默认值中使用密钥。例如:

NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
BOOL launchedBefore = [userDefaults boolForKey:@"hasRunBefore"];

if(!hasRunBefore)
{
    NSLog(@"this is my first run");
    [userDefaults setBool:YES forKey:@"hasRunBefore"];
}

用户默认值由iTunes备份,因此通常是用户首次启动而不是每台设备首次启动。

编辑:这与e.James在我面前给出的答案明确相同。 '其他答案已发布'栏未能出现。我将把它留给示例代码,但第一个答案不值得信任。

答案 2 :(得分:2)

使用Grand Central Dispatch的dispatch_once()并检查一些持久存储。

static dispatch_once_t pred;
dispatch_once(&pred,^{
    NSUserDefaults * userDefaults = [NSUserDefaults standardUserDefaults];
    BOOL hasLaunched = [userDefaults boolForKey:kAppHasLaunched];
    if (!hasLaunched) {
        [self showFirstLaunchMessage];
        [userDefaults setBool:YES forKey:kAppHasLaunched];
    }
});

这是确保代码每次启动时只在应用程序中运行一次的最简单方法(在这种情况下,块只会执行一次)。有关这方面的更多信息,请参见the Grand Central Dispatch Reference。在此块中,您只需检查一些持久存储(例如您的首选项),以查看您的应用之前是否已启动并显示相应的消息。