Aktivieren von Pushbenachrichtigungen in Ihrer Chat-App

Dieses Tutorial führt Sie durch die Aktivierung von Pushbenachrichtigungen in Ihrer iOS-App mithilfe des Chat SDK der Azure Communication Services.
Pushbenachrichtigungen informieren Clients über in einem Chatthread eingehende Nachrichten in Situationen, in denen die mobile App nicht im Vordergrund ausgeführt wird. Azure Communication Services unterstützt zwei Versionen von Pushbenachrichtigungen.

  • Basic Version: Der Benutzer kann die Badgenummer 1 auf dem Symbol der App anzeigen, einen Benachrichtigungston empfangen und ein Popupwarnungsbanner anzeigen.

  • Advanced Version: Mit Ausnahme der features, die in der Standardversion unterstützt werden, kann contoso den Abschnitt "Titel- und Nachrichtenvorschau" im Warnungsbanner anpassen.

    Screenshot of basic version of push notification.

    [Basisversion]

    Screenshot of advanced version of push notification.

    [Erweiterte Version]

Code herunterladen

Rufen Sie den Beispielcode für dieses Tutorial auf GitHub ab.

Voraussetzungen

  1. Führen Sie alle erforderlichen Schritte in der Chat-Schnellstartanleitung aus.

  2. ANH-Einrichtung
    Erstellen Sie einen Azure Notification Hub innerhalb des Abonnements, in dem sich auch Ihre Communication Services-Ressource befindet, und verknüpfen Sie den Notification Hub mit Ihrer Communication Services-Ressource. Weitere Informationen finden Sie unter Bereitstellen von Notification Hub.

  3. Konfiguration eines APNs-Zertifikats
    Hier empfehlen wir das Erstellen eines P12-APNs-Zertifikats und dessen Festlegung im Notification Hub.

    If you are not a Microsoft internal client: Führen Sie die Schritte 1 bis 9 aus.
    If you are a Microsoft internal client: Erstellen Sie hier ein Ticket, und geben Sie die Bundle-ID Ihrer App an, um ein P12-Zertifikat zu erhalten. Sobald ein gültiges Zertifikat ausgestellt wurde, führen Sie Schritt 9 aus.

  • Schritt 1: Melden Sie sich beim Apple Developer-Portal an. Navigieren Sie zu Certificates, IDs & Profiles > Identifiers > App IDs, und klicken Sie auf die App-ID, die Ihrer App zugeordnet ist.

    Screenshot of APNS Cert Configuration step 1.
  • Schritt 2: Überprüfen Sie Capabilities > Push Notifications auf dem Bildschirm für Ihre App-ID. Klicken Sie auf „Speichern“, und klicken Sie im angezeigten Dialogfeld „App-Funktionen ändern“ auf „Bestätigen“.

    Screenshot of APNS Cert Configuration step 2-1.Screenshot of APNS Cert Configuration step 2-2.
  • Schritt 3: Klicken Sie auf dieselbe Seite auf Capabilities > Push Notifications > Configure. Klicken Sie auf eine der folgenden Schaltflächen:

    • SSL-Zertifikat für die Entwicklung > Zertifikat erstellen (zum Testen von Pushbenachrichtigungen beim Entwickeln einer iOS-App)
    • SSL-Zertifikat für die Produktion > Zertifikat erstellen (zum Senden von Pushbenachrichtigungen in der Produktion)
    Screenshot of APNS Cert Configuration step 3.
  • Schritt 4: Sie gelangen zur folgenden Seite. Hier laden Sie eine Zertifikatsignaturanforderung (CSR) hoch. Führen Sie den nächsten Schritt aus, um eine CSR zu erstellen.

    Screenshot of APNS Cert Configuration step 4.
  • Schritt 5: Befolgen Sie auf einer neuen Browserregisterkarte diese Hilfeseite, um eine CSR zu erstellen und die Datei als „App name.cer“ zu speichern.

    Screenshot of APNS Cert Configuration step 5 - 1.Screenshot of APNS Cert Configuration step 5 - 2.
  • Schritt 6: Ziehen Sie die CER-Datei in den Bereich „Datei auswählen“. Klicken Sie dann in der rechten oberen Ecke auf „Weiter“.

    Screenshot of APNS Cert Configuration step 6.
  • Schritt 7: Klicken Sie auf „Herunterladen“, und speichern Sie die Datei auf dem lokalen Datenträger.

    Screenshot of APNS Cert Configuration step 7.
  • Schritt 8: Öffnen Sie die heruntergeladene CER-Datei; dadurch wird die Schlüsselbundverwaltung geöffnet. Wählen Sie Ihr Zertifikat aus, klicken Sie mit der rechten Maustaste, und exportieren Sie Ihr Zertifikat in das P12-Format.

    Screenshot of APNS Cert Configuration step 8.
  • Schritt 9: Wechseln Sie zu Ihrem Notification Hub, klicken Sie unter „Einstellungen“ auf „Apple (APNs)“, und wählen Sie unter „Authentifizierungsmodus“ die Option „Zertifikat“ aus. Wählen Sie auch den Anwendungsmodus Ihrem Bedarf entsprechend aus. Laden Sie dann die von Ihnen erstellte P12-Datei hoch.

    Screenshot of APNS Cert Configuration step 9.
  1. XCode-Konfiguration
  • Wechseln Sie in XCode zu Signing & Capabilities. Fügen Sie eine Funktion hinzu, indem Sie „+ Capability“ (+ Funktion) und anschließend „Push Notifications“ (Pushbenachrichtigungen) auswählen.

  • Fügen Sie eine weitere Funktion hinzu, indem Sie „+ Capability“ (+ Funktion) und anschließend „Background Modes“ (Hintergrundmodi) auswählen. Wählen Sie unter „Background Modes“ (Hintergrundmodi) außerdem „Remote Notifications“ (Remotebenachrichtigungen) aus.

Screenshot of Enable Push Notifications and Background modes in Xcode.
  • Legen Sie "Nur App-Erweiterungs-Tresor-API" als "Nein" für Pod-Ziel fest – AzureCore

Implementierung

1 – Basisversion

Wenn Sie eine Basisversion von Pushbenachrichtigungen implementieren möchten, müssen Sie sich für Remotebenachrichtigungen über APNs (Apple Push Notification Service) registrieren. Im Beispielcode finden Sie die zugehörige Implementierung in AppDelegate.swift.

2 – Erweiterte Version

Wenn Sie eine erweiterte Version von Pushbenachrichtigungen implementieren möchten, müssen Sie in Ihrer App die folgenden Punkte berücksichtigen. Der Grund ist, dass wir Kundeninhalte (z. B. Chatnachrichteninhalte, Absenderanzeigename usw.) in den Nutzdaten von Pushbenachrichtigungen verschlüsseln und daher eine Problemumgehung auf Ihrer Seite erforderlich ist.

  • Punkt 1: Datenspeicher für Verschlüsselungsschlüssel

Zunächst müssen Sie einen beständigen Datenspeicher auf dem iOS-Gerät erstellen. Dieser Datenspeicher muss dazu in der Lage sein, Daten zwischen der Haupt-App und den App-Erweiterungen zu teilen. (Weitere Informationen zu App-Erweiterung – Benachrichtigungsdiensterweiterung finden Sie unter Punkt 2.)

In unserem Beispielcode wählen wir eine App-Gruppe als Datenspeicher aus. Nachfolgend finden Sie die vorgeschlagenen Schritte zum Erstellen und Verwenden einer App-Gruppe:

Führen Sie die Schritte unter Hinzufügen einer Funktion aus, um den Zielen Ihrer App die Funktion der App-Gruppen hinzuzufügen – sowohl der Haupt-App als auch der Benachrichtigungsdiensterweiterung. (Unter Punkt 2 finden Sie Informationen zum Erstellen einer Benachrichtigungsdiensterweiterung.)

Führen Sie auch die Schritte in diesem offiziellen Apple-Dokument aus, um die App-Gruppe zu konfigurieren. Stellen Sie sicher, dass Ihre Haupt-App und Ihre App-Erweiterung denselben Containernamen aufweisen.

  • Punkt 2: Benachrichtigungsdiensterweiterung

Zweitens müssen Sie eine Benachrichtigungsdiensterweiterung implementieren, die mit der Haupt-App gebündelt ist. Diese wird zum Entschlüsseln der Nutzdaten beim Empfang von Pushbenachrichtigungen verwendet.

Wechseln Sie zu diesem offiziellen Apple-Dokument. Befolgen Sie die Schritte zum Hinzufügen einer Dienst-App-Erweiterung zu Ihrem Projekt und zum Implementieren der Handlermethoden Ihrer Erweiterung.

Beachten Sie, dass Apple im Schritt zum Implementieren der Handlermethoden Ihrer Erweiterung den Beispielcode zur Entschlüsselung von Daten bereitstellt. Im Großen und Ganzen befolgen wir diese Anleitung. Da wir jedoch das Chat SDK für die Entschlüsselung verwenden, müssen wir den Teil ab “// Try to decode the encrypted message data.” durch unsere angepasste Logik ersetzen. Im Beispielcode finden Sie die zugehörige Implementierung in NotificationService.swift.

  • Punkt 3: Implementierung des PushNotificationKeyStorage-Protokolls

Als Drittes ist der PushNotificationKeyStorage für die erweiterte Version erforderlich. Als SDK-Benutzer können Sie die vom Chat SDK bereitgestellte AppGroupPushNotificationKeyStorage-Standardklasse verwenden. Wenn Sie nicht App Group als Schlüsselspeicher verwenden oder Schlüsselspeichermethoden anpassen möchten, erstellen Sie Ihre eigene Klasse, die dem PushNotificationKeyStorage-Protokoll entspricht.

Für PushNotificationKeyStorage werden zwei Methoden definiert: onPersistKey(encryptionKey:expiryTime) und onRetrieveKeys() -> [String].

Die erste Methode wird verwendet, um den Verschlüsselungsschlüssel im Speicher des iOS-Benutzergeräts abzulegen. Das Chat SDK legt 45 Minuten als Ablaufzeit des Verschlüsselungsschlüssels fest. Wenn die Pushbenachrichtigung länger als 45 Minuten wirksam sein soll, müssen Sie den Aufruf von chatClient.startPushNotifications(deviceToken:) relativ häufig einplanen (z. B. alle 15 Minuten), damit ein neuer Verschlüsselungsschlüssel registriert werden kann, bevor der alte Schlüssel abläuft.

Die zweite Methode wird verwendet, um die zuvor gespeicherten gültigen Schlüssel abzurufen. Sie haben die Flexibilität, die Anpassung basierend auf dem von Ihnen ausgewählten Datenspeicher (Punkt 1) bereitzustellen.

In der Protokollerweiterung bietet das Chat SDK die Implementierung der Methode decryptPayload(notification:) -> PushNotificationEvent, die Sie nutzen können. Im Beispielcode finden Sie die zugehörige Implementierung in NotificationService.swift.

Testen

  1. Erstellen Sie einen Chatthread mit Benutzer A und Benutzer B.

  2. Laden Sie das Beispiel-App-Repository herunter, und führen Sie die obigen Schritte in den Abschnitten zu Voraussetzungen und Implementierung aus.

  3. Fügen Sie <ACCESS_TOKEN> und <ACS_RESOURCE_ENDPOINT> von Benutzer A in AppSettings.plist ein.

  4. Legen Sie „Bitcode aktivieren“ für zwei Pods-Ziele auf „Nein“ fest: AzureCommunicationChat und Trouter.

  5. Verbinden Sie das iOS-Gerät mit Ihrem Mac, führen Sie das Programm aus, und klicken Sie auf „Zulassen“, wenn Sie zum Autorisieren von Pushbenachrichtigungen auf dem Gerät aufgefordert werden.

  6. Senden Sie eine Chatnachricht als Benutzer B. Sie (Benutzer A) sollten in der Lage sein, eine Pushbenachrichtigung auf Ihrem iOS-Gerät zu erhalten.