Предупреждение TestFlight при тестировании обновления: у вас уже установлено это приложение

Я пытался протестировать сценарий обновления из приложения Live App Store на RC с помощью TestFlight, но TestFlight дает мне предупреждение "У вас уже установлено это приложение. Вы хотите заменить..." (см. ниже скриншот). После подтверждения все данные из версии App Store исчезли.

введите описание изображения здесь

Шаги, которые я делаю:

  • Установить прямое приложение из App Store
  • Войдите в систему и выполните некоторые операции для получения данных в приложении и Keychain
  • Перейдите в приложение iOS TestFlight.
  • Нажмите кнопку "Установить" в TestFlight → появится предупреждение "У вас уже установлено это приложение"
  • Если я коснусь кнопки "Установить", будет установлена ​​новая сборка

Результат

  • Содержимое приложения, включая Shared Container (данные, совместно используемые с Extensions) и Keychain, полностью очищается, когда я снова открываю приложение.

Изменить: появляется предупреждение в TestFlight с любым приложением (я пробовал несколько разных приложений из разных учетных записей dev). Фактическое удаление данных происходит только для некоторых.

Мой вопрос:

Это ожидаемое поведение от TestFlight или это проблема с моим приложением? Я не знаю никаких изменений между версиями, которые могут вызвать любые проблемы.

Я считаю, что этого не происходило раньше (последний раз, когда я пробовал это было несколько недель назад).

Я не мог найти никаких документов или заметок о поведении или изменениях в приложении TestFlight.

Кто-нибудь испытывал ту же проблему? Или вы знаете какие-либо ресурсы, описывающие это поведение?

Спасибо за любые ответы!

Ответы

Ответ 1

После длительных исследований, испытаний и ошибок, создания радара и выпуска обновлений в App Store у меня есть ответ:

Предупреждение всегда есть и не имеет отношения к потере данных.

  • Предупреждение с предупреждением о возможной потере данных отображается всегда для любого приложения, которое устанавливается из TestFlight.
  • Это было верно для любого из нескольких приложений, которые я пробовал.

identifierForVendor изменяется при перезаписывании приложения с помощью сборки TestFlight.

  • Когда у вас установлена ​​версия приложения App Store и перезаписывается с помощью сборки из TestFlight, результат [[UIDevice currentDevice] identifierForVendor] изменяет
  • Это неожиданно, поскольку он не упоминается в документации (см. ниже).
  • В моем случае неожиданное изменение identifierForVendor вызывало "свободные данные", которое не было фактическим потерянием данных, но оно происходит только для сборников TestFlight, которые вы не можете отлаживать, поэтому было трудно найти проблему.

Документация [[UIDevice currentDevice] identifierForVendor] гласит:

Значение в этом свойстве остается неизменным, пока приложение (или другое приложение от того же поставщика) установлено на устройстве iOS. Значение изменяется, когда пользователь удаляет все приложения этих поставщиков с устройства и затем переустанавливает один или несколько из них. Значение может также изменяться при установке тестовых сборок с использованием Xcode или при установке приложения на устройстве с использованием ad-hoc-распространения.

Ответ 2

насколько мне известно,

если вы установили приложение из App Store (предположительно версии 1.0) на свое устройство и скажете, что вы снова загружаете/устанавливаете одно и то же приложение с тем же номером версии 1.0 из TestFlight, вы получите сообщение выше.

Это связано с тем, что вы пытаетесь установить приложение с той же версией и идентификатором пакета, который уже существует на устройстве.

Offcourse вы потеряете данные/настройки приложения, так как его замена не будет обновляться.

Я также рассмотрел этот сценарий.

Ответ 3

Если у вас есть полная версия приложения, установленного на вашем устройстве, и вы устанавливаете одно и то же приложение Beta, данные вашего приложения могут быть повреждены или потеряны и могут не быть восстановлены. Перед установкой бета-приложения необходимо создать резервную копию своей информации.

http://www.apple.com/legal/internet-services/itunes/testflight/sren/terms.html


Я не знаю, как это происходит