繁体   English   中英

如何应用多个应用更新?

[英]How are multiple app updates applied?

我已经发布了我的应用程序的1.0版本。 1.1版可能包含某种迁移代码。 为了论证,让我们说它会更新核心数据属性 - 所有姓氏都将转换为大写。 我将在1.1版首次启动时执行此代码。

我是否需要为所有后续版本保留此代码? 如果用户跳过1.0并且仅在1.2发布时更新,则会自动首先应用1.1吗? 或者我是否需要继续检查是否要永久更新所有版本中的姓氏?

您不发布更新,您发布新版本。 如果有人从1.0更新到1.2并跳过1.1,那正是发生了什么。 永远不会安装或执行1.1。

编辑:

以下是一种管理更新的简单方法的建议。 可能不是最优雅的一个,但它的确有效。

NSString *lastVersion = [[NSUserDefaults standardUserDefaults]
                         stringForKey:@"LastVersion"];
NSString *currentVersion = [[NSBundle mainBundle]
            objectForInfoDictionaryKey:@"CFBundleShortVersionString"];

if ([self version:lastVersion isSmallerThanVersion:@"1.1"]) {
    // update from 1.0 to 1.1 here.
}
if ([self version:lastVersion isSmallerThanVersion:@"1.2"]) {
    // update from 1.1 to 1.2 here.
}
if ([self version:lastVersion isSmallerThanVersion:@"1.3"]) {
    // update from 1.2 to 1.3 here.
}

[[NSUserDefaults standardUserDefaults]
  setObject:currentVersion forKey:@"LastVersion"];

在这个例子中,你有4个版本(1.0,1.1,1.2,1.3),1.3是最新版本。

您可以在每次启动应用时运行此功能。 由于更新应用程序也会终止它,您可以假设这将在可能的更新后运行。

基本上,您从用户默认值加载用户在此设备上使用的最新版本。 如果应用程序第一次启动,则将没有已知的先前版本,不会执行任何更新例程,并且当前版本(1.3)将保存为上次使用的版本。

如果应用程序与先前版本(1.2)一起使用,则lastVersion将为1.2并且仅执行最后一个if块。

如果应用程序与版本1.1一起使用,但跳过1.2并且现在更新为1.3,则lastVersion将为1.1, if块按顺序执行, lastVersion最后两个。 首先,您将数据从1.1更新到1.2,然后从1.2更新到1.3。

您应该保留所有版本的迁移代码> 1.0

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM