iPhone应用程序更新与新版本
Posted
技术标签:
【中文标题】iPhone应用程序更新与新版本【英文标题】:iPhone app Update Vs new version 【发布时间】:2011-12-11 07:56:55 【问题描述】:假设我在 Appstore 上有一个现有的 ios 应用程序,版本为 1.0
现在我对应用程序进行了一些更改并想提交回来。
有两种不同的提交方式吗? 就像我仍然可以将版本保留为 1.0 并提交应用程序或 我需要创建一个新的 1.1 版本然后提交吗?
工艺上有什么区别?
同样来自客户端,这对新用户/现有用户有何作用?
【问题讨论】:
【参考方案1】:我刚刚发现了一些关于版本升级和 App Store 的信息。刚才,由于我以前无法想象的 iOS 系统的行为,我遇到了问题和用户崩溃。而且,非常重要的是,iTunes、AppStore 和 iOS 在上个版本中修改了一些升级和安装规则。现在,它是这样工作的: - 当用户安装新版本时,捆绑包中的所有文件都会下载并复制到以前的现有捆绑包中,但不会删除旧文件或组件(或不会全部删除)。因此,最终捆绑包不等于新版本全新安装的捆绑包。 - 例如,如果新版本的 xib/nib 文件已本地化为不同的语言,则更新后的捆绑包将包括两个版本:根文件夹中的一个版本和每个本地化文件夹中的另一个版本。显然,系统将使用第一个,并且只有全新安装才会显示该文件的本地化。 我的一个应用程序显示了 MainWindow.xib 的问题,并且由于引用和类中有一些修改,因此每次尝试运行更新的应用程序时都会崩溃,因为它使用的是过时的对象。我已经构建了一个新版本,更改了已本地化的 xib/nib 文件的名称。由于 MainWindow 是其中之一,我当然必须修改 info.plist 中的引用。
好的,知道了,您可以在捆绑包中构建包含完整不同组件的新版本,如果确实存在先前版本的文件,则应用程序会为用户提供使用它们的选项。也就是说,应用程序的两个版本在一个图标和捆绑包中。做起来并不难。
但是,非常奇怪的是,我认为新的 iOS 版本和 iTunes 不允许降级。我已经尝试过,但没有完成。也就是说,如果您安装一个版本,例如 1.2,AFAIK 就不可能在设备上或 iTunes->“应用程序”中安装后一个 v1.1。因此,双版本捆绑包将一直存在,直到重新安装应用程序。
【讨论】:
非常有用的答案 Gaberiel :) 你能告诉我 sqlite 部分吗?如果新旧版本具有相同命名的 sqlite 文件(比如 abc.sqlite1.0),究竟会发生什么?我的应用新版本将如何表现?它会覆盖旧的 sqlite 吗?或者我将从这两个 sqlite 中获取数据。 是的。我所说的只是关于应用程序包中的项目。如果它们在捆绑包中具有相同的名称,那么旧的将按预期替换为新的。 @Gabriel:有没有办法在旧数据库被替换之前将数据从旧数据库复制到新数据库? @Mrunal,抱歉耽搁了。我认为方法不是替换旧数据库,而是创建一个新数据库。如果该文件在捆绑包中的同一文件夹中具有相同的名称,它将在升级时被替换。 您说的是哪个版本?因为我只需要处理数据库和其他文件,如条款和条件。我通过保存可以存储在共享首选项 ([NSUserDefaults standardUserDefaults]
) 中的 DB_VERSION
常量来解决这个问题,并对其进行评估以了解我是否应该替换我的文件。【参考方案2】:
您需要创建一个新版本号,这很有意义,因为这是您应用的新版本。然后,这将显示为您的客户的更新。我认为您不能在不从商店中删除旧二进制文件的情况下上传具有相同版本的新二进制文件。
您在 iTunes connect 中添加一个新版本,然后在 Xcode 中更新版本号以匹配并创建一个新存档。这很简单。
【讨论】:
【参考方案3】:您必须始终增加应用更新的版本号。
用户将在设备上的 App Store 图标和 PC 上的 iTunes 中看到一个徽章。进入更新部分,它将列出您的应用程序以及您提供的更改列表,以及一个安装更新的按钮。他们还可以一次更新所有应用。
【讨论】:
【参考方案4】:NSString *version = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"];
NSLog(@"version is%@",version);
【讨论】:
您可以使用[[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"]
来处理版本更改作为数据库或共享首选项中的新/弃用键 ([NSUserDefaults standardUserDefaults]
)。这是示例:***.com/a/23082595/2835520【参考方案5】:
您无需再打开版本号即可提交。打开 Xcode,进入 Window - Organizer - Archives and Distribute 一个你已经成功创建的应用程序。
【讨论】:
以上是关于iPhone应用程序更新与新版本的主要内容,如果未能解决你的问题,请参考以下文章
在 Core Data 存储迁移到新版本时,在 iPhone 应用程序的初始屏幕上显示 MBProgressHUD?
iPhone:如何推送与以前支持的 OSv3.2 不兼容的新版本
在选定的国家/地区发布新版本的 iPhone 应用程序 [关闭]
新版本的 iPhone 应用程序成功上传,但 iTunesConnect 需要 12.9 英寸显示屏的 iPad 屏幕截图