So verwenden Sie Apples CloudKit für Push-Benachrichtigungen

Einführung

Apple hat 2014 sein CloudKit-Framework neben iOS 8 eingeführt. Das Hauptziel war, als Onlinedatenbank für iOS-Anwendungen zu fungieren. CloudKit bietet jedoch viele weitere Funktionen, einschließlich Push-Benachrichtigungen. 

In diesem Lernprogramm werde ich Ihnen zeigen, wie Sie mit dem CloudKit-Framework Push-Benachrichtigungen für Ihre iOS-Apps implementieren. Wenn Sie mehr über die anderen Funktionen von CloudKit erfahren möchten, lesen Sie mein Tutorial zu den Grundlagen des Frameworks:

  • Eine Einführung in CloudKit

    In diesem Lernprogramm erfahren Sie, wie Sie CloudKit für eine iOS-Anwendung einrichten. Auf dem Weg werden Sie mit dem CloudKit-Dashboard, dem…
    Davis Allie
    iOS 8

In diesem Lernprogramm müssen Sie mindestens Xcode 8 mit Swift 3 verwenden. Außerdem benötigen Sie ein physisches iOS-Gerät und ein Apple-Entwicklerkonto, damit Sie CloudKit für Ihre Anwendung aktivieren können.

1. Warum CloudKit verwenden??

Zunächst werden die Vorteile (und Nachteile) der Verwendung von CloudKit für die Push-Benachrichtigungen Ihrer App beschrieben. 

Wie Sie in diesem Lernprogramm sehen werden, müssen Sie sich beim Einrichten von Push-Benachrichtigungen mit CloudKit nicht wie bei anderen Cloud-Services um die Erstellung von Zertifikaten und Bereitstellungsprofilen kümmern. Da alles von Apple gemacht wird, müssen Sie nur CloudKit für Ihre App aktivieren, und der Rest funktioniert einfach.

Für einige Entwickler ist das Beste an CloudKit, wie viel Sie kostenlos bekommen. Es gibt viele andere Backend-as-a-Service-Unternehmen (BaaS), die Push-Benachrichtigungen für iOS-Apps anbieten. Die meisten davon haben jedoch eine Beschränkung, wie viele Benachrichtigungen kostenlos gesendet werden können. Mit CloudKit ist die Anzahl der Push-Benachrichtigungen, die Sie an Ihre Benutzer senden können, unbegrenzt. Die kostenlose Nutzung von CloudKit begrenzt jedoch den Datenspeicher, die Datenübertragung und die Anzahl der Benutzeranforderungen pro Sekunde. 

Ein weiterer Vorteil der Verwendung von CloudKit in Ihren Apps ist, dass die Stabilität und Wartung des Netzwerks durch Apple sichergestellt wird. Apple-Serviceausfälle treten sehr selten auf und werden umgehend behoben. Dies bedeutet, dass Sie sich darauf verlassen können, dass CloudKit für Ihre Benutzer immer ordnungsgemäß funktioniert.

Ein Nachteil, den Sie bei der Verwendung von CloudKit beachten sollten, ist, dass es derzeit nicht auf anderen Plattformen als Apple verfügbar ist. Das bedeutet, dass CloudKit nicht funktioniert, wenn Sie eine Android-Version Ihrer App erstellen möchten. Für eine plattformübergreifende Lösung würde ich einen anderen BaaS wie back4app (build auf Parse) empfehlen, wie ich in diesem Tutorial bespreche:

2. CloudKit einrichten

Erstellen Sie zunächst ein neues Projekt in Xcode aus der iOS> Anwendung> Einzelansicht Vorlage. 

Nachdem Xcode Ihr Projekt erstellt hat, gehen Sie zu Projektnavigator und klicken Sie auf die Fähigkeiten Tab. Klicken Sie in diesem Bildschirm auf den zu aktivierenden Schalter iCloud und aktivieren Sie dann die CloudKit Ankreuzfeld:

Nachdem Sie CloudKit aktiviert haben, können Sie jetzt zum CloudKit-Dashboard für Ihre App wechseln.

Um Push-Benachrichtigungen an die Benutzer unserer App zu senden, erstellen wir eine GlobalNotification Datensatztyp, der alle Benutzer benachrichtigt, wenn ein neuer Datensatz dieses Typs erstellt wird. Wenn die Aufnahmetyp Der Abschnitt des CloudKit-Dashboards ist nach dem Einloggen für Sie nicht bereits geöffnet. Klicken Sie in der Seitenleiste darauf.

Um einen neuen Datensatztyp zu erstellen, klicken Sie auf +Schaltfläche oben auf dem Bildschirm. Füllen Sie das Menü wie im folgenden Screenshot gezeigt aus:

Für dieses Tutorial fügen wir nur eine Single hinzu Inhalt Feld für den Datensatztyp, aber für Ihre eigenen Anwendungen können Sie beliebig viele hinzufügen. 

Wenn Sie fertig sind, klicken Sie auf die Schaltfläche sparen Schaltfläche in der rechten unteren Ecke.

3. App einrichten

Zurück in Xcode, öffnen Sie Ihr AppDelegate.swift Datei und fügen Sie die folgenden Importanweisungen oben in Ihren Code ein:

Importieren von CloudKit Importieren von UserNotifications

Dieser Code importiert nur die CloudKit- und UserNotifications-Frameworks. Wir werden die UserNotifications verwenden, um sowohl Benachrichtigungsberechtigungen als auch eingehende Benachrichtigungen zu verwalten. Wenn Sie mehr über dieses Framework erfahren möchten, können Sie mein Tutorial hier lesen:

  • Eine Einführung in das UserNotifications Framework

    In diesem Lernprogramm erfahren Sie mehr über das neue UserNotifications-Framework in iOS 10, tvOS 10 und watchOS 3. Dieses neue Framework bietet ein modernes Set…
    Davis Allie
    iOS

Bearbeiten Sie als Nächstes Ihre AppDelegate Klassendefinition, um es an die anzupassen UNUserNotificationCenterDelegate Protokoll:

Klasse AppDelegate: UIResponder, UIApplicationDelegate, UNUserNotificationCenterDelegate …

Jetzt müssen wir die Erlaubnis anfordern, um Benachrichtigungen anzuzeigen. Ersetzen Sie dazu Ihr Anwendung (_: didFinishLaunchingWithOptions :) Methode mit der folgenden:

func application (_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool UNUserNotificationCenter.current (). delegate = selbst UNUserNotificationCenter.current (c) ], completionHandler: authorisiert, Fehler in if application.registerForRemoteNotifications ()) gibt true zurück.

Mit diesem Code bitten wir den Benutzer um Erlaubnis, Benachrichtigungen anzuzeigen, und wenn er damit einverstanden ist, registrieren Sie die App für Push-Benachrichtigungen.

Jetzt müssen wir das implementieren Anwendung (_: didRegisterForRemoteNotificationsWithDeviceToken :) Methode. Fügen Sie folgenden Code hinzu AppDelegate Klasse:

func application (_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) letsubscription = CKQuerySubscription (recordType: "GlobalNotification"), Prädikat: NSPredicate (Format: "TRUEPREDICATE"), Optionen: = "Eine neue Benachrichtigung wurde gepostet!" info.shouldBadge = true info.soundName = "default" Subscribe.notificationInfo = info CKContainer.default (). publicCloudDatabase.save (Abonnement, completionHandler: Subskription, Fehler in if error == nil // Subscription wurde erfolgreich gespeichert // Ein Fehler ist aufgetreten  ) 

Mit diesem Code erstellen wir zuerst eine CKQuerySubscription Objekt. Dieses Subskriptionsobjekt teilt CloudKit mit, wofür es Benachrichtigungen senden soll. Bei der Initialisierung dieses Abonnements schließen wir Folgendes ein:

  • Der Name des zu überwachenden Datensatztyps.
  • Ein Prädikat, mit dem das Abonnement auf bestimmte Datensätze des angegebenen Typs beschränkt werden kann. In diesem Tutorial möchten wir alle abonnieren GlobalNotification Records so übergeben wir ein Prädikat, das immer wahr ist.
  • Ein oder mehrere Auslöser teilen CloudKit mit, wann eine Benachrichtigung gesendet werden soll. In diesem Beispiel möchten wir nur eine Benachrichtigung, wenn ein neuer Datensatz erstellt wird. Andere gültige Auslöser umfassen das Aktualisieren oder Löschen eines Datensatzes.

Als nächstes erstellen wir eine CKNotificationInfo versorgen Sie es mit etwas Inhalt und weisen Sie es dann dem Abonnementobjekt zu. Das CKNotificationInfo Mit diesem Objekt formatieren Sie die Push-Benachrichtigung, die an Ihre Benutzer gesendet wird. In diesem Beispiel konfigurieren wir es mit den folgenden Eigenschaften:

  • Ein alertBody von "Eine neue Benachrichtigung wurde veröffentlicht!"
  • EIN sollteBadge Wert von wahr. Dies bewirkt, dass das App-Symbol auf dem Startbildschirm seine Nummer für jede eingehende Benachrichtigung erhöht.
  • EIN soundName von "Standard". Dadurch wird nur der standardmäßige iOS-Benachrichtigungston für Ihre App verwendet. Wenn Sie einen benutzerdefinierten Sound verwenden möchten, müssen Sie den Namen Ihrer Sounddatei verwenden.
  • EIN gewünschte Tasten Array mit einem einzelnen Wert. Für jeden Schlüssel, den Sie in dieses Array aufnehmen, lädt CloudKit den entsprechenden Wert aus dem Datensatz, der die Benachrichtigung ausgelöst hat, und nimmt ihn in das Benutzerinformationswörterbuch der Benachrichtigung auf.

Weiter unten weisen wir die Benachrichtigungsinformationen dem Abonnement zu, das für Ihre App in der öffentlichen CloudKit-Datenbank gespeichert wird. 

Damit Sie die Benachrichtigung sehen können, während Ihre App ausgeführt wird, fügen Sie Ihrer AppDelegate-Klasse die folgende Methode hinzu:

func userNotificationCenter (_ center: UNUserNotificationCenter, willPresent-Benachrichtigung: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) completionHandler ([. alert, .sound]))]

In diesem Code wird das UserNotifications-Framework verwendet, um Ihre Benachrichtigung so anzuzeigen, als ob Ihre App überhaupt nicht ausgeführt wurde.

Bevor Sie Ihre App ausführen, müssen Sie überprüfen, ob Ihr Testgerät bei einem iCloud-Konto angemeldet ist die Einstellungen. Wenn nicht, müssen Sie dies tun, da für die CloudKit-APIs der aktuelle Benutzer angemeldet sein muss.

Erstellen und starten Sie Ihre App mit Xcode und akzeptieren Sie die Anforderung Ihrer App, um Benachrichtigungen anzuzeigen. Wenn Sie dies getan haben, kehren Sie zum CloudKit-Dashboard für Ihre App zurück und klicken Sie auf Abonnementtypen in der linken Seitenleiste. Sie sollten ein neues Abonnement für sehen GlobalNotification Datensätze mit einem EINFÜGEN auslösen:

4. Senden einer Benachrichtigung

Jetzt müssen Sie nur noch eine Benachrichtigung senden! Klicken Sie im CloudKit-Dashboard auf Standardzone unter Öffentliche Daten in der linken Seitenleiste. Klicken Sie entweder auf die + Taste oder ein Neuer Eintrag ein neues erstellen GlobalNotification Aufzeichnung. Füllen Sie das aus Inhalt mit was auch immer du willst und klick sparen in der rechten unteren Ecke.

Nachdem Ihr Datensatz gespeichert wurde, sollte die Benachrichtigung sofort auf Ihrem Testgerät erscheinen:

Fazit

Wie Sie gesehen haben, können Sie mithilfe von CloudKit Push-Benachrichtigungen für Ihre iOS-App problemlos implementieren. Das Setup ist sehr einfach, mit nur wenigen Schritten, und die bereitgestellten APIs ermöglichen alle Push-Benachrichtigungen, die Sie für Ihre Apps benötigen.

Bitte hinterlassen Sie wie immer Ihre Kommentare und Rückmeldungen im Kommentarbereich. Schauen Sie sich auch unsere anderen iOS-Kurse und -Tutorials an!

  • Was ist neu in iOS 10?

    Mit jeder neuen Version von iOS führt Apple eine Reihe neuer Funktionen und Verbesserungen für die Entwicklerumgebung ein. Das sind besonders spannend für die…
    Markus Mühlberger
    iOS
  • Erstellen Sie SiriKit-Erweiterungen in iOS 10

    iOS 10 hat Siri endlich für Apps von Drittanbietern geöffnet. In diesem Tutorial zeige ich Ihnen, wie Sie Siris Fähigkeiten nutzen und Sprache integrieren können.
    Patrick Balestra
    iOS SDK
  • iOS 10: Benachrichtigungsservice-Erweiterungen

    Wenn Sie eine Benachrichtigung in einer iOS-App erhalten, möchten Sie möglicherweise Inhalte herunterladen oder bearbeiten, bevor sie dem Benutzer angezeigt werden. In diesem…
    Davis Allie
    iOS 10
  • Einfache iOS Push-Benachrichtigungen mit back4app

    In diesem Lernprogramm erfahren Sie, wie Sie Push-Benachrichtigungen für iOS-Apps auf einfache Weise implementieren, indem Sie back4app als Back-End-Service verwenden. Dieses Tutorial behandelt die…
    Davis Allie
    iOS SDK