当前位置:  开发笔记 > IOS > 正文

检测首次启动iOS应用程序的时间?

如何解决《检测首次启动iOS应用程序的时间?》经验,为你挑选了3个好方法。

如何检测首次启动iOS应用程序的时间?



1> Noah Withers..:

几乎就是Marc和Chris所说的,虽然我更喜欢在应用程序退出时更改值,以防应用程序的多个区域需要了解它.在代码中:

// -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"];


现在可以使用后台处理,当用户退出应用程序时,通常不会调用`-applicationWillTerminate:`.而是调用`-applicationWillResignActive`.因此,应该在这两种方法中设置firstLaunch.
不.`-registerDefaults:`仅在其键尚不存在时设置指定的值.

2> Clint Harris..:

我意识到这个问题已经很老了,但是我用它来提出一种在"全新安装"之后检测第一次启动的方法(相对于升级/降级后的第一次启动)并认为我在这里共享代码未来的观众,如果有帮助的话.

// 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];


它真的是跟踪版本的好方法.

3> 小智..:

我通常在用户默认值中使用app版本号而不是boolean作为firstLaunch值.这样,您就可以区分首次启动新安装和首次启动升级.可能在将来的版本中有用......

推荐阅读
郑小蒜9299_941611_G
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有