I create a subscription once:
NSPredicate *truePredicate = [NSPredicate predicateWithValue:YES]; CKSubscription *itemSubscription = [[CKSubscription alloc] initWithRecordType:CardAssetRecordType predicate:truePredicate subscriptionID:[Utils GetUUID] options:CKSubscriptionOptionsFiresOnRecordCreation | CKSubscriptionOptionsFiresOnRecordUpdate]; CKNotificationInfo *notification = [[CKNotificationInfo alloc] init]; notification.shouldSendContentAvailable = YES; notification.alertLocalizationKey = @""; notification.shouldBadge = NO; itemSubscription.notificationInfo = notification; __weak typeof(self) weakSelf = self; [self.privateDatabase saveSubscription:itemSubscription completionHandler:^(CKSubscription *subscription, NSError *error) { if (error) { weakSelf.subscribedCardID = nil; if (iCloudLog) { NSLog(@"Subscribed with error : %@", error); } } else { if (iCloudLog) { NSLog(@"Subscribed to Cards : %@", subscription); } weakSelf.subscribedCardID = subscription.subscriptionID; } if (completionHandler) { dispatch_async(dispatch_get_main_queue(), ^{ completionHandler(); }); } }]; And every time I send changes on this type of data, on other devices I receive no, no, absolutely no message. Registration push-notifications passes without errors. Enabled iCloud Sevices: CloudKit. Container is filled with Default Container. In Background Modes installed Background fetch and Remote notifications. There is data in iCloud, changes are coming. But the pushes do not go at all. I do not understand why this happens. Everything is done according to the instructions and examples https://developer.apple.com/library/ios/documentation/DataManagement/Conceptual/CloudKitQuickStart/SubscribingtoRecordChanges/SubscribingtoRecordChanges.html , except that I have a privateDatabase instead of publicDatabase. Does anyone know how to deal with this, because absolutely the same code worked about a fortnight ago, everything was fine, nothing changed by me. And suddenly it stops working altogether.