2016-10-10 6 views
2

Я пытаюсь создать CloudKit CKDatabaseSubscription и пытается спасти его, я получаю следующее сообщение об ошибке:Saving CKDatabaseSubscription получает «доступ CloudKit было отказано пользовательских настроек»

«Не Аутентифицированный" (9/1002) ; «Доступ к CloudKit был запрещен настройками пользователя»; Retry after 3.0 seconds '

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

<snip> 
     container = CKContainer(identifier: "<valid identifier>") 
     publicDB = container.publicCloudDatabase 
     privateDB = container.privateCloudDatabase 
     createSubscriptions() 
</snip> 

    func createSubscriptions() 
    { 
    let sub = CKDatabaseSubscription(subscriptionID: "main") 
    let noteInfo = CKNotificationInfo() 
    noteInfo.shouldSendContentAvailable = true 
    sub.notificationInfo = noteInfo 

    let op = CKModifySubscriptionsOperation(subscriptionsToSave: [sub], subscriptionIDsToDelete: nil) 
    op.qualityOfService = .utility 
    op.modifySubscriptionsCompletionBlock = {(subscriptions, name, error) in 
       print ("error-\(error)") 
      } 
    privateDB.add(op) 
    } 

Таким образом, в приведенном выше коде вышеуказанная ошибка выводится из печати в блоке. Все в области видимости, компилируется отлично, пользователь подключен к iCloud и т. Д. Возникает как на симуляторе, так и на устройстве.

Это сертификат ASPN, необходимый для подписки на CloudKit? Или есть какая-то ошибка, которую я делаю?

+0

Повторите попытку через 3 секунды? Существует много возможных ошибок, которые могут потребовать повторной попытки после небольшой задержки. – rmaddy

+0

Да. Я добавил asyncAfter, если вызов завершился неудачно, и он повторит попытку сохранения. Последующие попытки преуспевают, хотя на панели мониторинга не появляются подписки, выбор подписей для базы данных возвращает ожидаемый элемент, и никаких уведомлений не поступает (выполняется на двух устройствах). Похоже, что первоначальный вызов не должен ВСЕГДА терпеть неудачу, и хотя последующий работает. – vagrant

+0

Ну, похоже, это определенно специфично для CKDatabaseSubscription. CKQuerySubscription работает так, как ожидалось. – vagrant

ответ

4

У меня была такая же ошибка, и она ушла после того, как я включил «iCloud Drive» в учетной записи iCloud.

 Смежные вопросы

  • Нет связанных вопросов^_^