CloudKit. Проблемы с подписками

Я не совсем понимаю информацию о подписках. У меня есть личная база данных. Есть таблица, на которую я создаю подписку. Если я подписываюсь на два устройства под одной учетной записью iCloud, возникают ошибки: Подписано с ошибкой:

CKError 0x165c6ac0: "Запрос отклонен сервером" (15/2032); сообщение сервера = "подписка является дубликатом 'C6051A24-2DB5-47EA-98D2-7D8786AA6D3B'"; uuid = 48AC7472-006A-4FD7-84A9-DB342C83C199; ID контейнера = "iCloud.com. *. *"

NSPredicate *truePredicate = [NSPredicate predicateWithValue:YES];
CKSubscription *itemSubscription = [[CKSubscription alloc] initWithRecordType:RecordType
                                                                    predicate:truePredicate
                                                                      options:CKSubscriptionOptionsFiresOnRecordCreation | CKSubscriptionOptionsFiresOnRecordUpdate];


CKNotificationInfo *notification = [[CKNotificationInfo alloc] init];
notification.shouldSendContentAvailable = YES;

notification.alertLocalizationKey = @"";
notification.shouldBadge = NO;

itemSubscription.notificationInfo = notification;

[self.privateDatabase saveSubscription:itemSubscription completionHandler

Может я что то не так делаю? Что мне нужно сделать, чтобы оба устройства получали уведомления о подписках?

Отредактировано:

Также. Я создаю только одну подписку. Если я использую метод fetchAllSubscriptionWithCompletionhandler, я вижу 3-4 подписки на таблицу. Но это странно, потому что я создаю только один. И когда я получаю уведомление, я вижу больше уведомлений, чем должно быть.

1 ответ

Решение

Подписка на базу данных. Поэтому, если вы хотите получать уведомления от нескольких пользователей в базе данных, достаточно создать его один раз. Вы получаете ошибку, потому что вы создаете одну и ту же подписку (один и тот же идентификатор подписки) дважды в одной и той же базе данных. Просто убедитесь, что вы создали его только один раз. Вы можете получить подписку, чтобы проверить, была ли она уже создана или нет. Гарри

Другие вопросы по тегам