Какое ограничение имеет приложение с CloudKit, если пользователь не включает iCloud Drive

Какие службы CloudKit недоступны, если пользователь не включает iCloud Drive?

Есть ли способ включить iCloud Drive из приложения?

Думаю, загрузка записей из общедоступного контейнера должна работать независимо от iCloud Drive, писать контейнер только в том случае, если он включен ?!


person János    schedule 03.12.2015    source источник


Ответы (2)


CloudKit связан с учетной записью iCloud. Если пользователь входит в iCloud, но у него не включен iCloudDrive, то для CloudKit нет ограничений.

Если пользователь не вошел в iCloud, он может получить доступ только к публичным данным. Вы можете установить это для любого recordType на панели управления CloudKit.

Невозможно изменить логин из вашего приложения. Вы можете войти только из приложения настроек. Также нет возможности включить iCloud Drive из вашего приложения. Для этого вам также нужно перейти в приложение настроек

person Edwin Vermeer    schedule 03.12.2015
comment
извините, вы ошибаетесь, я только что повторил это, если iCloud Drive выключен, произойдет 3 вещи (1) accountStatusWithCompletionHandler вернет .NoAccount (2) NSFileManager.defaultManager().ubiquityIdentityToken значение nil и (3) метод publicDatabase.saveRecord вернется с ошибкой. Таким образом, iCloud Drive - это строгое ограничение при использовании CloudKit и серьезная угроза. stackoverflow.com/questions/34115648/ - person János; 06.12.2015
comment
я получаю ошибку saveRecord is <CKError 0x146b0c50: "Not Authenticated" (9/1002); "CloudKit access was denied by user settings"; Retry after 3.0 seconds> - person János; 06.12.2015
comment
Странный. В документации упоминается только учетная запись iCloud. Ничего о iCloudDrive: developer.apple.com/library/prerelease/ios/documentation/Cocoa/ - person Edwin Vermeer; 06.12.2015
comment
Это также было проблемой с Core Data с iCloud. Я думаю, что iCloud Drive - это то, что Apple пытается заставить всех использовать. У большинства людей он активирован. - person powertoold; 09.12.2015

Вот где Apple подразумевает, что для CloudKit требуется iCloud Drive:

Повысьте удобство работы пользователя, убедившись, что пользователь вошел в свою учетную запись iCloud, прежде чем сохранять записи. Если пользователь не вошел в систему, представьте предупреждение с инструкциями по вводу своих учетных данных iCloud и включению iCloud Drive. Вставьте свой код, который сохраняет записи, в предложение else ниже.

https://developer.apple.com/library/ios/documentation/DataManagement/Conceptual/CloudKitQuickStart/CreatingaSchemabySavingRecords/CreatingaSchemabySavingRecords.html#//apple_ref/doc/uid8CH400-1498

person powertoold    schedule 05.01.2016