检测启动后首次打开应用程序的时间
Posted
技术标签:
【中文标题】检测启动后首次打开应用程序的时间【英文标题】:Detect when app is opened for the first time after launch 【发布时间】:2011-02-22 00:57:10 【问题描述】:我只想在第一次安装和打开应用时在视图控制器上显示帮助消息。
我有什么方法可以做到这一点吗?
【问题讨论】:
【参考方案1】:您可以显示一次帮助消息,然后在NSUserDefaults
中存储一个布尔值以指示它不应再次显示:
NSUserDefaults * userDefaults = [NSUserDefaults standardUserDefaults];
BOOL appHasBeenLaunchedBefore = [userDefaults boolForKey:@"HasBeenLaunched"];
if (!appHasBeenLaunchedBefore)
[self showHelpMessage];
[userDefaults setBool:YES forKey:"HasBeenLaunched"];
【讨论】:
【参考方案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。在此块中,您只需检查一些持久性存储,例如您的首选项,以查看您的应用是否曾经启动过,并根据需要显示一条消息。
【讨论】:
【参考方案3】:在用户默认值中使用一个键。例如:
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 在我之前给出的答案明确相同。 “其他答案已发布”栏未能出现。我将把它留给示例代码,但第一个答案不值得称赞。
【讨论】:
滚出我的脑袋!;)
但是 +1 提到了 iTunes 备份。我没想到。
哦,现在您也添加了代码!我正在努力想一个不删除我的理由。很抱歉踩到你的脚趾。
不用担心。有两个正确答案没有坏处。我们一定同时在打字!以上是关于检测启动后首次打开应用程序的时间的主要内容,如果未能解决你的问题,请参考以下文章