iTunes Connect 应用程序 - 回滚到先前版本

44

我发布了一款应用的更新,审核通过了。但这个版本包含了一个严重的本地化错误,导致大多数用户都得到了错误的语言。有没有办法快速恢复到以前的版本,暂停当前版本的下载,或者其他任何可以帮助解决这个问题的方法?

我阅读了几年前的以下主题:Can I revert to my previous version app in iTunes Connect?

我希望现在可能有一个更加简便的解决方案。

顺便说一下,我在将新版本添加为新版本之前进行了彻底的测试。所以,我仍然不确定出了什么问题或如何解决它。

5个回答

69

2
还不能撤销吗? - Zack Braksa
2
是的,您无法撤销,但可以通过“加快应用审核”请求发送另一个版本。他们肯定会在严重情况下进行审核。 - Imran Ahmed
1
是否可以下载先前的构建版本? - Shanthakumar
我能够调整先前版本的存档。它已经成功被iTunes接受了。我的答案如下。这样可以避免重新编译程序/包。 - Derek Wade

16

以下是从中摘录的一段内容:

问题:我的应用在App Store上的新版本有一个漏洞,我可以使用以前的版本替换它吗?

不可以。您无法在App Store上恢复以前的版本。您必须提交一个新版本。

来源:iTunes Connect FAQ


显然,另一种选择是提交新版本,但要求加快应用审核速度。

但这意味着您的应用与活动相关或存在重大漏洞,需要尽快解决。


3

我相信你可以通过创建一个版本号更高的备用版本并提交手动发布来为问题做好准备。这样,直到你选择回退并发布它之前,它应该会在你的商店中保持静止。

我不确定是否可以提交版本号低于备用版本的改进版本。


2

最近我需要做这个。我能够调整之前的版本档案。我首先复制了存档并打开了复制,然后编辑info.plist文件,在存档和应用程序包级别上调整/递增版本号和构建号。然后上传到iTunes,它将其识别为新版本。


你是如何“调整先前版本的存档”,以便再次将其上传到应用商店的?它说我不能上传重复的二进制文件。谢谢。 - mafarja
请按照我的说明,更改存档和应用程序级别的info.plist文件的版本号和构建号。 - Derek Wade

1

前言:我同意其他帖子中的观点,即您无法通过iTunes Connect本身执行回滚操作。即使可以,用户更新到回滚版本需要花费时间。但这并不意味着我们不能回滚应用程序。


回滚应用程序是不可逆的。但是,您可以在发布和安装构建后为您的应用程序添加工具,以便未来可以进行回滚。
高级步骤:
- 将每个版本的应用程序构建为框架 - 对于每个发布构建,请包括当前和旧的框架版本 - 在应用启动时,决定加载和执行哪个框架(包括合理的默认值) - 当您想要回滚时,请更新所有用户设备上的缓存值并等待下一次应用程序打开。
此策略使用类似于功能标志的机制,常用于启用/禁用功能而无需重新发布。但是,在这种情况下,您正在对整个应用程序版本进行“特性标记”。
嵌入式库之间的功能标记是否违反App Store指南?
不违反。将两个版本的应用程序嵌入到一个发布中不违反App Store审核指南

4.7 HTML5游戏、机器人等

应用程序可以包含或运行未嵌入二进制文件中的代码(例如基于HTML5的游戏、机器人等),只要代码分发不是应用程序的主要目的,该代码不在商店或类似商店的界面中提供,并且提供的软件(1)是免费的或使用应用内购买购买;(2)仅使用标准WebKit视图中可用的功能(例如,它必须在Safari中原生打开和运行,无需修改或添加软件);您的应用程序必须使用WebKit和JavaScript Core来运行第三方软件,并且不应尝试将本机平台API扩展或暴露给第三方软件;

与特性标志类似,您计划运行的所有代码都包含在提交审核的二进制文件中。此外,只要您回滚到Apple已经审核和批准的版本,就不会违反指南的精神。

这会影响性能吗?

我已经针对许多受欢迎和重型的开源iOS应用程序进行了此方法的剖析,包括维基百科、Signal、Firefox等。您可以聪明地去重资产和共享库,这将导致夹在应用程序包中的大小大约为原始大小的1.2倍(实际上只取决于您更改了多少代码)。您还需要承担大约50毫秒的启动成本,以选择要引导的应用程序版本。
在我看来,为了能够有选择地回滚用户并在您花费时间实施修复时,增加时间和大小都是值得的。 真实的应用程序是否会这样做? 主要的应用程序在推出新功能和优化性能时经常在dylibs之间进行特性标志。我还听说过一些主要的技术公司在其最大的发布版中使用这种应用程序级模式。我在App Store中有一个个人应用程序使用此模式,并且我已经帮助其他开发人员做到了同样的事情。 如何为自己的应用程序执行此操作? 如果你对Xcode构建系统很熟悉,你可以按照上面概述的步骤进行操作,并通过一些调整,在启动时开始功能标志版本。请注意,您还需要某种形式的缓存和服务器端点来更新设备上的标志。
上述实现也是screenplay.dev实现iOS回滚的确切方式。该工具:
- 为您的Xcode项目添加两个构建目标,一个用于构建框架版本,另一个用于打包最终发布构建。 - 作为旧应用程序构建版本的存储库。 - 提供用于切换实时版本的Web UI。

是的,这是一个有趣的话题。但我担心每个应用程序版本都不能遵循这个过程。之前的版本可能会有一些更改,以及一些新功能。如果有人发布仅包含新更新的新版本,则可能会有所帮助。但我仍然相信这是一个有用的帖子。谢谢。 - Imran Ahmed

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接