CloudKit und Background Notification

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • CloudKit und Background Notification

    Hallo,

    ich versuche mich derzeit mit CloudKit und soweit funkioniert es auch, dh. Daten aus CoreData werden mit der iCloud synchronisiert, auch über mehrere Geräte.

    Jedoch möchte ich per PushNotification von CloudKit unterrichtet werden, wenn eine Änderung in iCloud vorgenommen wurde. im Projekt ist "Remote Notifications" bei "Background Modes" aktiviert.

    Laut Doku wird im AppDelegete die Methode "didReceiveRemoteNotification" aufgerufen. Das funktioniert bei mir leider nicht, die Methode wird nicht aufgerufen.

    Ich bin grad etwas ratlos, was berücksichtige ich hier nicht?

    Danke für Tips
  • kbausd schrieb:

    Laut Doku wird im AppDelegete die Methode "didReceiveRemoteNotification" aufgerufen. Das funktioniert bei mir leider nicht, die Methode wird nicht aufgerufen.
    "didReceiveRemoteNotification" ist seit iOS 10 deprecated, auf welche Doku beziehst Du Dich? Diese hier kommt nur noch aus dem Archiv. Müsstest Du nicht das UNUserNotificationCenterDelegate-Protokoll implementieren?

    Alternativ - da Du erwähnst, Core Data zu synchronisieren - könntest Du Dich auch über lokale Core-Data-Changes benachrichtigen lassen ("NSManagedObjectContextObjectsDidChangeNotification"), und dann auf Basis der Änderungen agieren. Oder Du nutzt NSFetchedResultsController, die automatisch entsprechende Änderungen reflektieren.

    Mattes
    Diese Seite bleibt aus technischen Gründen unbedruckt.
  • Ich nutze diese CloudKit - Doku:

    developer.apple.com/documentat…p_core_data_with_cloudkit

    Bzgl. Background Notifications wird dann auf developer.apple.com/documentat…round_updates_to_your_app verwiesen, und hier wird im letzten Absatz auf die Methode application(_:didReceiveRemoteNotification:fetchCompletionHandler:) genannt.

    Es wird zwar am Ende auch aud die Handling-Notifications-Doku hingewiesen, aber benötige ich diese? Ich verstehe die Anleitung so daß die Methode didReceiveRemoteNotification grundsätzlich aufgerufen wird.

    Kann es evtl. sein daß die Notifications grundsätzlich nicht im Simulator funktionieren?
  • kbausd schrieb:

    Kann es evtl. sein daß die Notifications grundsätzlich nicht im Simulator funktionieren?
    Kann ich leider nicht sagen, auch wenn z. B. dieser Artikel vermuten lässt, dass es etwas "Nacharbeiten" braucht ... andere vor. Ich zumindest habe bei mir die Core Data / CloudKit Synchronisierung nur mit physischen Geräten getestet. Schon allein, um nicht irgendwelchen "Geistern" nachzujagen.

    Rein aus Neugier: Was willst Du bei Empfangen der o. g. Benachrichtigung machen? Ich habe meine App rein auf NSFetchedResultsController aufgesetzt und fand deren Verarbeitung von Datenänderungen sehr komfortabel.

    Mattes
    Diese Seite bleibt aus technischen Gründen unbedruckt.
  • Die Benachrichtigung benötige ich, um ein tableView zu aktualisieren, wenn auf einem anderen Gerät ein Wert hinzugefügt oder gelöscht wurde.

    Ich teste auf einem iPhone und dem Simulator, füge ich z.B. auf dem iPhone Daten hinzu, werden sie mit der iCloud synchronisiert. Auf dem anderen Gerät sind sie aber erst sichtbar wenn ich die App neu starte. Also muß die App über eine Veränderung informiert werden.
  • kbausd schrieb:

    Die Benachrichtigung benötige ich, um ein tableView zu aktualisieren, wenn auf einem anderen Gerät ein Wert hinzugefügt oder gelöscht wurde.
    Ich kann Dich nur nochmal auf den o.g. Controller hinweisen, damit geht es super-einfach. Allerdings solltest Du automaticallyMergesChangesFromParent für den viewContext setzen ... das könnte auch Dein Problem beheben.

    Mattes
    Diese Seite bleibt aus technischen Gründen unbedruckt.
  • Eben durch besagte Notifications, aber Du brauchst Dich darum nicht kümmern. Er arbeitet auf Basis eines Predicates, liefert Dir ein Array der Results inkl. optionalem Caching und passende Methoden, um als UITableViewDatasource zu fungieren, auch mit Sections, falls gewünscht. Es lohnt sich wirklich, sich damit auseinanderzusetzen.

    Mattes
    Diese Seite bleibt aus technischen Gründen unbedruckt.