测试更新时的TestFlight警报:您已安装此应用程序

Luk*_*cka 18 ios testflight

我试图使用TestFlight测试从实时App Store应用程序构建到RC的更新场景,但是TestFlight给了我警报"你已经安装了这个应用程序.你想要替换......"(见下面的截图).确认后,App Store版本中的所有数据都消失了.

在此输入图像描述

我做的步骤:

  1. 从App Store安装实时应用程序
  2. 登录并执行一些操作以获取应用程序和Keychain中的数据
  3. 转到TestFlight iOS应用程序
  4. 点击TestFlight中的"安装"按钮 - >警告"您已经安装了此应用程序"
  5. 如果我点击选择安装,则安装新版本

结果:

  • 当我再次打开应用程序时,应用程序的内容(包括共享容器(与扩展程序共享的数据)和Keychain 完全被删除

编辑:TestFlight中的警报随任何应用程序一起出现(我尝试过来自不同开发帐户的多个不同应用程序).实际的数据删除只发生在一些人身上.

我的问题:

这是来自TestFlight的预期行为还是我的应用程序的任何问题?我不知道版本之间可能会导致任何问题的任何更改.

我相信这种情况以前没有发生过(几周前我最后一次试过).

我找不到有关TestFlight应用程序行为或更改的任何文档或发行说明.

有没有人遇到过同样的问题?或者您是否知道描述此行为的任何资源?

谢谢你的回答!

Luk*_*cka 17

经过长时间的研究,试验和错误,创建雷达并向App Store发布更新,我有一个答案:

警报始终存在,与丢失数据无关.

  • 对于通过Non TestFlight Build从TestFlight安装的任何应用程序,始终显示带有可能丢失数据警告的警报.
  • 对于我尝试过的多个应用程序中的任何一个都是如此.

identifierForVendor 使用TestFlight构建覆盖应用程序时更改.

  • 如果您安装了应用程序商店版本的应用程序并使用TestFlight中的构建覆盖它,则会[[UIDevice currentDevice] identifierForVendor]发生更改结果
  • 这是意料之外的,因为文档中没有提到它(见下文)
  • 在我的情况下,意外的变化identifierForVendor导致"数据松动",而不是实际的数据丢失,但它只发生在您无法调试的TestFlight构建中,因此很难找到问题.

文件[[UIDevice currentDevice] identifierForVendor]说:

在iOS设备上安装app(或来自同一供应商的其他应用程序)时,此属性中的值保持不变.当用户从设备中删除所有该供应商的应用程序并随后重新安装其中一个或多个应用程序时,该值会更改.使用Xcode安装测试版本或使用ad-hoc分发在设备上安装应用程序时,该值也会发生变化.