How to detect an iOS App installed or upgraded?
本问题已经有最佳答案,请猛点这里访问。
我正在开发一个应用程序,我需要知道用户是第一次安装该应用程序还是从App Store对其进行了升级。
如何检测应用程序是首次安装还是已升级或重新安装?
非常感谢您的回答。
通过将最新的已知版本保存到
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | - (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]; } |
签出Swift 3.0版本的代码。
注意:使用CFBundleShortVersionString来检查实际的应用程序版本检查。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | 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() } |
对于Swift 3
1 2 3 4 5 6 7 8 9 10 11 12 | let currentVersion : String = Bundle.main.object(forInfoDictionaryKey:"CFBundleShortVersionString") as! String let versionOfLastRun: String? = UserDefaults.standard.object(forKey:"VersionOfLastRun") as? String if versionOfLastRun == nil { // First start after installing the app } else if !(versionOfLastRun?.isEqual(currentVersion))! { // App is updated } UserDefaults.standard.set(currentVersion, forKey:"VersionOfLastRun") UserDefaults.standard.synchronize() |
请在
对于检查重新安装(在存储为
请注意:
要获取任何键的本地化值,应使用