CKSubscription のドキュメントには、次のように記載されています。レコードの変更によってサブスクリプションが起動すると、サーバーは、レコードに元の変更を加えたデバイスを除く、そのサブスクリプションを持つすべてのデバイスにプッシュ通知を送信します。
デバイス 1 が iPad で、デバイス 2 が iPhone で、どちらも同じiCloud アカウントでログインしているとします。両方のデバイスが特定のレコード タイプのレコード更新をサブスクライブしているとします。
私のコードは次のようになります(ハウスキーピングの一部を取り出しました)
NSPredicate *predicate2 = [NSPredicate predicateWithFormat:@"fromUserRecordIDName == %@", _member.userRecordIDName];
NSPredicate *predicate2 = [NSPredicate predicateWithFormat:@"fromUserRecordIDName == %@", notificationPublic = [[CKNotificationInfo alloc] init];
notificationPublic.shouldBadge =YES;
notificationPublic.desiredKeys = @[@"fromMemberNameText"];
notificationPublic.shouldSendContentAvailable = YES;
if ([[NSUserDefaults standardUserDefaults] objectForKey:@"TickleRecordUpdateSubscription"] == nil) {
[cloudManager subscribe:@"TickleRecord" public: YES options:CKSubscriptionOptionsFiresOnRecordUpdate predicate:predicate2 notification:notificationPublic completionHandler:^(CKSubscription *subscription, NSError *operationError) {
if (operationError) {
NSLog(@"An error occured in %@: %@", NSStringFromSelector(_cmd), operationError);
} else{
[[NSUserDefaults standardUserDefaults] setObject:subscription.subscriptionID forKey:@"TickleRecordUpdateSubscription"];
[[NSUserDefaults standardUserDefaults] setObject:@"TickleRecordUpdateSubscription"forKey:subscription.subscriptionID ];
}
}];
あるデバイスがレコードを更新すると、他のデバイスに通知する必要があるように思えます。しかし、それは起こっていることではありません - 通知はありません。WWDC 2014 の Advanced iCloud ビデオでは、1 つのデバイスが通知を既読としてマークしたときに通知されることについて話していますが、私はそれについても成功していません。
同じアカウントにサインインしている別のデバイスがレコードを更新したときに、あるデバイスに通知することに成功した人はいますか?