Синхронизация iCloud не выполняется между текущей версией приложения и версией приложения для разработки (при тестировании через Diawi, Testflight или ipa copy)

#ios #xcode #core-data #icloud

#iOS #xcode #основные данные #icloud

Вопрос:

ПРЕДЫСТОРИЯ

  1. Я использую iCloud с основными данными в приложении Packing Planner. Текущая версия в App Store — 2.0.2. У нее более 14000 пользователей.
  2. В соответствии с потребностями бизнеса мне пришлось добавить 4 новых атрибута (поля) в схему в следующей версии (v2.1).
  3. Версия моего XCode: 5.1.1, а версия iOS: 7.1.1
  4. Я реализовал облегченную миграцию схемы с использованием автоматических сопоставлений

ПРОБЛЕМА

  1. Конечный пользователь использует приложение, загруженное из App Store, и у него включен iCloud.
  2. Конечный пользователь обновляет приложение до версии 2.1 с помощью Diawi, TestFlight или ipa copy / paste, синхронизация с iCloud НЕ ПРОИСХОДИТ, и пользователь не может видеть данные iCloud на своем устройстве.
  3. Но если пользователь обновит приложение до версии 2.1 с помощью XCode, синхронизация iCloud произойдет, как и ожидалось.
  4. Пользователи реального мира будут обновлять приложение через App Store, и нет никакого способа протестировать этот сценарий, кроме Diawi, ipa copy / paste и Testflight.
  5. Как гарантировать, что пользователи получат работу iCloud должным образом после обновления версии 2.1.

ПРОТЕСТИРОВАНЫ РАЗЛИЧНЫЕ СЦЕНАРИИ

  1. Я попытался удалить 4 новых атрибута (поля), а затем выполнил «проблемный шаг № 2». Он работает хорошо. Если я снова добавлю 4 новых атрибута, он перестанет функционировать. Виновником наверняка являются добавленные атрибуты.
  2. Я попытался выполнить «проблемный шаг № 2» на iOS 6. Он работает хорошо, как и ожидалось, без каких-либо проблем.

Ответ №1:

Я узнал, что синхронизация iCloud не будет работать при попытке установить сборку разработки поверх сборки дистрибутива с последней / той же версией. Чтобы заставить iCloud работать, тип сборки должен быть одинаковым. т.е. Синхронизация iCloud будет работать только при установке новой сборки разработки поверх старой сборки разработки / новой сборки дистрибутива поверх старого дистрибутива.