FireOnCreation を使用して Cloud Kit レコード タイプにサブスクリプションを追加しています。
appDelegate では、 を使用しdidReceiveRemoteNotificationWithCompletionHandler
て通知を受け取りました。私が抱えている問題は、述語に一致するレコードが作成されたときに、didReceiveRemoteNotificationWithCompletionHandler
複数回トリガーされることです。デバイス A では、一貫して 3 回トリガーされ、デバイス B では 6 回トリガーされます。Cloud DashBoard でレコードを作成しようとしても、同じことが行われます。つまり、問題はレコードの作成にあるのではないということです。提案やヒントは非常に役立ちます。
func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject], fetchCompletionHandler completionHandler: (UIBackgroundFetchResult) -> Void) {
}
func subscribeRecordChangesForCurrentUser(userRecordID: CKRecordID) {
print("subscribeRecordChangesForCurrentUser \(userRecordID.recordName)")
let userRef = CKReference(recordID: userRecordID, action: CKReferenceAction.None)
let predicate = NSPredicate(format: "toUsers CONTAINS %@", userRef)
let subscription = CKSubscription(recordType: "Track", predicate: predicate, options: [.FiresOnRecordCreation])
let notificationInfo = CKNotificationInfo()
notificationInfo.alertBody = "Created a new track."
notificationInfo.shouldSendContentAvailable = true
notificationInfo.soundName = UILocalNotificationDefaultSoundName
subscription.notificationInfo = notificationInfo
let publicDatabase = CKContainer.defaultContainer().publicCloudDatabase
publicDatabase.saveSubscription(subscription) { (subscription: CKSubscription?, error: NSError?) -> Void in
guard error == nil else {
print(error?.localizedDescription)
return
}
print("successfully subscript user")
}
}