如何检测iOS应用程序第一次启动的时间?第一次启动iOS应用程序时检测吗?
63
A
回答
80
差不多就是马克和克里斯说,虽然我更喜欢更改值当应用程序退出时,以防需要了解该应用程序的多个区域。 在代码:
// -applicationDidFinishLaunching:
[[NSUserDefaults standardUserDefaults] registerDefaults:[NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithBool:YES],@"firstLaunch",nil]];
// to check it:
[[NSUserDefaults standardUserDefaults] boolForKey:@"firstLaunch"];
// -applicationWillTerminate:
[[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"firstLaunch"];
2
您可以在用户的默认设置中设置一个布尔值来做到这一点。当您拨打registerDefaults:
时将该键设置为false,然后将其设置为true,在您显示初始帮助屏幕或您需要执行的任何操作后,将其更改为true。
如果您在应用程序关闭后始终保存一个持久数据文件,检查它是否存在是另一种方式。
2
保存它作为一个user preference,如had_first_launch,设置为在启动时属实,这将只能是第一次假...
29
我通常使用的应用程序的版本号,而不是在用户默认值firstLaunch值布尔值。这样,您可以区分第一次启动新安装和第一次启动升级。可能会在未来的版本有用...
59
我意识到这个问题是相当古老的,但我用它来想出一个方法检测第一次启动后“全新安装”(第一次启动后升级/降级),并认为我会在未来的观众分享代码,以防万一它有帮助。
// Get current version ("Bundle Version") from the default Info.plist file
NSString *currentVersion = (NSString*)[[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleVersion"];
NSArray *prevStartupVersions = [[NSUserDefaults standardUserDefaults] arrayForKey:@"prevStartupVersions"];
if (prevStartupVersions == nil)
{
// Starting up for first time with NO pre-existing installs (e.g., fresh
// install of some version)
[self firstStartAfterFreshInstall];
[[NSUserDefaults standardUserDefaults] setObject:[NSArray arrayWithObject:currentVersion] forKey:@"prevStartupVersions"];
}
else
{
if (![prevStartupVersions containsObject:currentVersion])
{
// Starting up for first time with this version of the app. This
// means a different version of the app was alread installed once
// and started.
[self firstStartAfterUpgradeDowngrade];
NSMutableArray *updatedPrevStartVersions = [NSMutableArray arrayWithArray:prevStartupVersions];
[updatedPrevStartVersions addObject:currentVersion];
[[NSUserDefaults standardUserDefaults] setObject:updatedPrevStartVersions forKey:@"prevStartupVersions"];
}
}
// Save changes to disk
[[NSUserDefaults standardUserDefaults] synchronize];
2
如果您希望在代码的其他位置检测到它的第一次启动,它将无法正常工作。由于多任务处理,“applicationWillTerminate”在iOS 4.0中无法使用。 此链接提供了一个很好的解决方案: http://mobiledevblog.metalcompass.com/?p=43
4
这是一个非常简单快捷,但我发现,NSUserDefault键值对的总是空的第一次运行一个应用程序,所以
// Check to see if its the first time
if ([[NSUserDefaults standardUserDefaults] valueForKey:@"firstTime"] == NULL) {
[[NSUserDefaults standardUserDefaults] setValue:@"Not" forKey:@"firstTime"];
}
,并把这个代码在应用程序启动时显示的视图控制器的awakeFromNib中。我不知道其他答案是否适用于您的问题,但这是我解决问题的方式。
相关问题
- 1. J2me检测应用程序的第一次启动
- 2. iOS:在第一次启动应用程序时管理数据
- 3. 仅在应用程序第一次启动时启动活动
- 4. 如何检测第三次应用程序启动
- 5. 如何检测ios应用程序中的第一次运行?
- 6. 如何在第一次启动应用程序时使Activity只启动一次?
- 7. iCloud启用时首次启动iOS应用程序时冻结
- 8. iOS 8在应用程序启动时检测设备方向
- 9. 当第一次启动应用程序时,presentViewController不起作用
- 10. 当应用程序第一次启动时调用didReceiveRemoteNotification
- 11. 启动时和第一次启动应用程序时调度服务
- 12. iPhone应用程序第一次启动时显示操作表iOS 8
- 13. 仅在第一次启动应用程序时显示UIAlertView
- 14. 第一次启动时将内容下载到应用程序?
- 15. Sqlite仅在第一次启动应用程序时创建表
- 16. NavigationBarItem在第一次应用程序启动时放错位置
- 17. MessagePrompt在第一次启动应用程序时崩溃
- 18. iphone应用程序在第一次启动时崩溃
- 19. 如何在第一次应用程序启动时显示pushviewcontroller?
- 20. 在第一次应用程序启动时加载.nib
- 21. iPhone应用程序在第一次启动时需要登录吗?
- 22. iOS:检测不活动或定期启动应用程序
- 23. overridePendingTransition第一次启动时不工作(应用程序只启动!)
- 24. 如何检测取向模式,同时启动应用程序第一
- 25. Xcode UI测试:如何测试应用程序的第一次启动
- 26. Android:安装另一个应用程序并检测它何时首次启动
- 27. 应用程序第一次(也是唯一一次)启动时的透明闪屏用于说明(iOS)
- 28. 检测应用程序启动
- 29. 检测应用程序启动事件
- 30. 检测应用程序启动事件
卸载应用程序时,与应用程序关联的默认数据库中的条目是否已被刷新? – xyzzycoder 2009-12-29 22:15:32
@xyzzycoder:是 – 2010-01-29 13:02:57