Ich versuche, eine Messaging-App mit iOS, Swift und CloudKit zu erstellen. Ich habe es erfolgreich gemacht und ich habe Push-Benachrichtigungen gesendet, wenn jemand eine andere Nachricht hinzufügt. Allerdings möchte ich für den Text der Push-Benachrichtigung sagen, was jemals in der Nachricht war. Hier ist, was ich habe versucht:So aktualisieren Sie CloudKit-Abonnements
Standard-Code für das Senden von Benachrichtigungen:
let subscription = CKSubscription(recordType: "Responses", predicate: NSPredicate(format: "TRUEPREDICATE", argumentArray: nil), options: .FiresOnRecordCreation)
let notification = CKNotificationInfo()
notification.alertBody = "New Message Sent"
notification.soundName = UILocalNotificationDefaultSoundName
subscription.notificationInfo = notification
CKContainer.defaultContainer().publicCloudDatabase.saveSubscription(subscription) { (result, error) -> Void in
if error != nil {
print(error!.localizedDescription)
}
}
Dies erlaubt mir Benachrichtigungen für jede Nachricht zu senden, die „Neue Nachricht gesendet“ sagt. Das ist, was ich für bestimmte Benachrichtigungen versucht:
//publicDB is the CKContainer.defaultContainer.publicDatabase
publicDB.fetchAllSubscriptionsWithCompletionHandler({ (subscriptions, error) in
if error != nil {
self.displayError(self.getStringFromError(error!))
} else {
for subscription in subscriptions! {
subscription.notificationInfo?.alertBody = self.responseTextField.text
}
}
})
let record = CKRecord(recordType: "Responses")
record.setObject(currentUsername, forKey: "respondedBy")
record.setObject(responseTextField.text, forKey: "response")
publicDB.saveRecord(record) { (record, error) in
//code for updating tables, etc.
//Notification on other device sent
}
Einstellen der alertBody
des Abonnements (was ich versuchte, oben zu tun) funktioniert nicht. Gibt es eine andere Lösung für die Aktualisierung des alertBody eines Abonnements? Vielen Dank!
Es tut mir leid, ich verstehe nicht, wie Ihr Code funktioniert. Nachdem ich diese Eigenschaften zu meinen Benachrichtigungsinformationen hinzugefügt habe, was soll ich danach machen? Was sind die Localization.Strings? Vielen Dank für Ihre Hilfe – penatheboss
Ich habe die Antwort aktualisiert ... Aber dann, wenn Sie eine Messaging-App basierend auf Cloudkit machen, dann schlage ich vor, Sie sollten sich einen Blick auf: https://github.com/evermeer/EVCloudKitDao –
Ok. Ich werde den Code heute Nachmittag ausprobieren, wenn ich eine Chance bekomme. Ich werde dich wissen lassen, wie es läuft. Sieht vielversprechend aus! – penatheboss