如何检测安装或升级的iOS应用程序?

Ham*_*ürk 21 install upgrade reinstall ios

我正在开发一个应用程序,我需要知道用户是第一次安装应用程序还是从App Store升级它.

如何检测应用程序是首次安装还是升级或重新安装?

感谢您提前的答案.

Ner*_*ero 35

您可以通过保存最新的已知版本来区分安装应用程序后的第一次启动,更新后的第一次启动以及其他非常轻松的启动standardUserDefaults.但据我所知,无法检测到重新安装应用程序,因为当从设备删除应用程序时,所有与应用程序相关的数据也会被删除.

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    NSString* currentVersion = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleVersion"];
    NSString* versionOfLastRun = [[NSUserDefaults standardUserDefaults] objectForKey:@"VersionOfLastRun"];

    if (versionOfLastRun == nil) {
        // First start after installing the app
    } else if (![versionOfLastRun isEqual:currentVersion]) {
        // App was updated since last run
    } else {
        // nothing changed 
    }

    [[NSUserDefaults standardUserDefaults] setObject:currentVersion forKey:@"VersionOfLastRun"];
    [[NSUserDefaults standardUserDefaults] synchronize];
}
Run Code Online (Sandbox Code Playgroud)


Sag*_*ggy 11

Checkout Swift 3.0版本的代码.
注意:使用CFBundleShortVersionString来检查实际的App版本检查.

func checkAppUpgrade() {
    let currentVersion = Bundle.main.object(forInfoDictionaryKey:     "CFBundleShortVersionString") as? String
    let versionOfLastRun = UserDefaults.standard.object(forKey: "VersionOfLastRun") as? String

    if versionOfLastRun == nil {
        // First start after installing the app

    } else if versionOfLastRun != currentVersion {
        // App was updated since last run

    } else {
        // nothing changed

    }

    UserDefaults.standard.set(currentVersion, forKey: "VersionOfLastRun")
    UserDefaults.standard.synchronize()
}
Run Code Online (Sandbox Code Playgroud)

  • 这将需要我从第一个版本进行设置,不是吗?如果那里有一个版本,并且我想在即将进行的更新中测试新安装与更新该怎么办?@下垂 (2认同)