iOSアプリが初めて起動されたときを検出しますか?


2 Answers

私はこの質問がかなり古いことを認識していますが、私はそれを使って、 "新鮮なインストール"(アップグレード/ダウングレード後の最初の起動)とは異なる最初の起動を検出する方法を考え出し、今後の視聴者にとっては役立ちます。

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

どのようにiOSアプリが初めて起動されたかを検出するにはどうすればよいですか?




これは本当にシンプルなショートカットですが、NSUserDefaultのキーの値のペアは、最初にアプリケーションを実行するときに常にNULLであることがわかりました

// Check to see if its the first time
if ([[NSUserDefaults standardUserDefaults] valueForKey:@"firstTime"] == NULL) {
   [[NSUserDefaults standardUserDefaults] setValue:@"Not" forKey:@"firstTime"];
}

このコードを、アプリケーションの起動時に表示されるビューコントローラのawakeFromNibに配置します。 他の回答があなたの問題に作用するかどうかはわかりませんが、これが私が解決した方法です。




起動時にユーザの設定 (例えば、had_first_launch)がtrueに設定されている場合は、それを最初にfalseにします...






Related