Не могу зарегистрировать подписку; CKError 0x19030580, "Сервис недоступен"
Каждый раз, когда я пытаюсь зарегистрировать подписку, я получаю сообщение об ошибке: CKError 0x19030580: "Service Unavailable" (6/2022); server message = "refused to install an older schema (68f93710-7456-11e4-b13e-008cfac0c800) since we already have 693359e0-7456-11e4-8e42-008cfac03128"; uuid = 42F42F6B-98FB-4774-B735-271C1AEF07F1; container ID = "iCloud.com.*.*"
, И когда я пытаюсь получить все подписки, которые находятся на сервере, я ничего не получаю.
Почему я получаю CKError 0x19030580? Почему я не могу получить подписку? Как мне их починить?
Код:
NSPredicate *truePredicate = [NSPredicate predicateWithValue:YES];
CKSubscription *itemSubscription = [[CKSubscription alloc] initWithRecordType:ItemAssetRecordType
predicate:truePredicate
options:CKSubscriptionOptionsFiresOnRecordCreation | CKSubscriptionOptionsFiresOnRecordUpdate];
CKNotificationInfo *notification = [[CKNotificationInfo alloc] init];
notification.shouldSendContentAvailable = YES;
notification.alertLocalizationKey = @"New Item available.";
notification.shouldBadge = NO;
itemSubscription.notificationInfo = notification;
[self.privateDatabase saveSubscription:itemSubscription completionHandler:^(CKSubscription *subscription, NSError *error) {
if (error) {
} else {
self.subscribedItems = subscription.subscriptionID;
}
}];
3 ответа
У меня похожая проблема. Один из моих записей отказался загружать. Появилась похожая ошибка "отказался установить старую схему". Сначала я подумал, что это в моем коде, 2-3 дня пытаюсь решить, но ничего.
Затем я пытаюсь сбросить контейнер разработки iCloud (через панель управления iCloud). Сделайте снова записи. Затем попробуйте запустить его снова. И это работает.
Я думаю, что это ошибка на стороне Apple. Кстати, мои пострадавшие записи не подписка, хотя. Но вы можете попробовать это.
Советы, вы можете проверить, если ваше приложение уже подписано, прежде чем подписаться. Я сохраняю subscriptionID, в то время как метод подписки вызывается в NSUserDefaults. Затем я удаляю его, если вызывается метод отписки.
У меня была та же самая ошибка "отказался установить старую схему", но с простыми записями, а не подписками. В моем случае я писал запись с несуществующим полем. Теперь я подумал, что в среде разработки схема автоматически добавляет новые типы полей - но в любом случае, когда я добавлял ее вручную с помощью панели мониторинга, она работала.
CloudKit отправляет CKError.serviceUnavailable, когда пользователь отключил iCloud Drive на своем устройстве.