iCloud позволяет пользователям «украсть» расходные материалы в приложении

В моем приложении пользователи покупают расходные материалы, скажем, чемоданы, которые хранятся в Core Data. Когда пользователь впервые устанавливает приложение, я даю ему подарок, чтобы начать работу. Приложение не может работать, если не настроен хотя бы один чемодан.

Но если пользователь устанавливает приложение на свой iPhone, а затем на iPad и синхронизирует их, то теперь у него есть 2 чемодана. И если они удалят приложение на любом устройстве, а затем переустанавливают и синхронизируют его, они только что получили дополнительное, и они могут делать это бесконечно.

Я вижу два решения, но ни одно из них не кажется правильным:

  1. Добавить значение в NSUbiquityKeyValueStore, когда пользователь впервые синхронизируется с iCloud. Проверьте это значение при первом запуске. Если ноль, создайте халяву, если нет, синхронизируйте данные. Но это создает проблему. Что делать, если пользователь отключает iCloud или не имеет подключения к Интернету при первом запуске. Приложение создаст халяву, а затем, когда iCloud станет доступным, синхронизирует дубликат, и они смогут делать это столько раз, сколько захотят.

  2. Каким-то образом сопоставьте элементы по умолчанию в каждом приложении. У меня была идея сопоставить идентификаторы объектов или временные метки, но они бывают разными, и я не знаю, как с этим справиться.

Кто-нибудь знает, что я могу с этим сделать?

РЕДАКТИРОВАТЬ:

Использование предварительно упакованной базы данных плюс migratePersistentStore: toURL: options: withType: error: кажется правильным решением.Отправлю ответ с кодом, если он сработает для меня.

7
задан nate 16 October 2011 в 07:03
поделиться