检测应用程序的首次运行
Posted
技术标签:
【中文标题】检测应用程序的首次运行【英文标题】:Detecting the first ever run of an app 【发布时间】:2011-10-13 18:33:07 【问题描述】:我正在创建一个应用程序,当应用程序首次启动时,我必须在其中创建一个 plist。稍后我将使用 plist 来存储用户稍后输入的详细信息。如何检测应用程序的首次启动?我正在试验 NSUserDefaults 但我认为我做错了什么。
【问题讨论】:
【参考方案1】:您可以使用 NSUserDefaults 来做到这一点。但请注意版本号。
执行以下操作:
NSString *bundleVersion = [[NSBundle mainBundle] objectForInfoDictionaryKey:(NSString *)kCFBundleVersionKey];
NSString *appFirstStartOfVersionKey = [NSString stringWithFormat:@"first_start_%@", bundleVersion];
NSNumber *alreadyStartedOnVersion = [[NSUserDefaults standardUserDefaults] objectForKey:appFirstStartOfVersionKey];
if(!alreadyStartedOnVersion || [alreadyStartedOnVersion boolValue] == NO)
[self firstStartCode];
[[NSUserDefaults standardUserDefaults] setObject:[NSNumber numberWithBool:YES] forKey:appFirstStartOfVersionKey];
选择器 firstStartCode 只会在第一次运行时为每个应用程序版本按时调用。
好吗?
【讨论】:
【参考方案2】:我喜欢使用 NSUserDefaults 来存储第一次运行的指示。
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
if (![defaults objectForKey:@"firstRun"])
[defaults setObject:[NSDate date] forKey:@"firstRun"];
[[NSUserDefaults standardUserDefaults] synchronize];
您可以稍后对其进行测试...
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
if([defaults objectForKey:@"firstRun"])
// do something or not...
取自:Best way to check if an iPhone app is running for the first time
【讨论】:
那么第一段代码,我是不是把它放在didFinishLaunching下的app delegate中?【参考方案3】:您可以使用以下内容:
-(void) firstLaunch
//Code goes here
-(void) firstLaunchCheck
if(![[NSUserDefaults standardUserDefaults] boolForKey:@"didLaunchFirstTime"])
[[NSUserDefaults standardUserDefaults] setBool:TRUE forKey:@"didLaunchFirstTime"];
[self firstLaunch];
【讨论】:
以上是关于检测应用程序的首次运行的主要内容,如果未能解决你的问题,请参考以下文章