2016-10-11 20 views
-1

私はメッセージングアプリケーションを作成しています。私はCloudKitを使用しています。プッシュ通知はおそらく述語 'TRUEPREDICATE'を使うかもしれませんが、AがBにメッセージを送るとCがプッシュ通知をもらいます。プッシュ通知。CloudKit述語

let database = CKContainer.default().publicCloudDatabase 
    let predicate = NSPredicate(format: "TRUEPREDICATE") 
    let subscription = CKQuerySubscription(recordType: "Message", predicate: predicate, options: .firesOnRecordCreation) 

    let notification = CKNotificationInfo() 
    notification.alertBody = "You have a new message!" 
    notification.soundName = "default" 

    subscription.notificationInfo = notification 

    database.save(subscription) { result, error in 
     if let error = error { 
      print(error.localizedDescription) 
     } 
    } 
+0

質問を編集して関連するコードを含めることができれば助かります。 – breakingobstacles

答えて

0

この例では、クエリサブスクリプションが設定されている各デバイスに対してプッシュ通知がトリガーされます。この問題を解決するには、現在のユーザー/デバイスへの通知を制限するために、述語を変更する必要があります。例えば

、あなたが特定のユーザーの一意のIDを追跡している場合:この例では

let userID = UUID().uuidString 
let predicate = NSPredicate(format: "%K == %@", argumentArray: ["recipient", userID]) 

、「受信者」CloudKitフィールド名です。

+0

これは私にとって完璧に動作します、ありがとう! –