Tutorial: Erstellen von Pushbenachrichtigungen in Ihrer iOS-App

In diesem Tutorial wird das Erstellen von Pushbenachrichtigungen in Ihrer iOS-App mithilfe des Azure Communication Services Chat-SDK erläutert.

Pushbenachrichtigungen informieren Benutzer über in einem Chatthread eingehende Nachrichten, wenn die mobile App nicht im Vordergrund ausgeführt wird. Azure Communication Services unterstützt zwei Versionen von Pushbenachrichtigungen:

  • Basisversion: Auf dem Symbol der App wird eine Badgenummer angezeigt, das Gerät gibt einen Benachrichtigungston wieder, und ein Pop-up-Warnungsbanner wird angezeigt.

    Screenshot der Basisversion einer Pushbenachrichtigung.

  • Erweiterte Version: Zusätzlich zu den in der Basisversion unterstützten Features können Sie den Titel und die Nachrichtenvorschau im Benachrichtigungsbanner anpassen.

    Screenshot der erweiterten Version einer Pushbenachrichtigung.

In diesem Tutorial führen Sie Folgendes durch:

  • Richten Sie ein Apple Push Notification Service-Zertifikat (APNs) ein.
  • Konfigurieren Sie Xcode für Pushbenachrichtigungen.
  • Implementieren Sie eine Basisversion oder erweiterte Version der Pushbenachrichtigungen.
  • Testen Sie die Benachrichtigungen in Ihrer App.
  • Richten Sie die automatische Registrierungsverlängerung für Pushbenachrichtigungen ein.

Code herunterladen

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

Voraussetzungen

Erstellen eines P12-APNs-Zertifikats und Festlegen des Zertifikats im Notification Hub

Wenn Sie kein interner Microsoft-Kunde sind, führen Sie alle Schritte im folgenden Verfahren aus.

Wenn Sie ein interner Microsoft-Kunde sind, senden Sie ein Ticket, und stellen Sie die Paket-ID Ihrer App bereit, um ein P12-Zertifikat zu erhalten. Fahren Sie dann mit dem letzten Schritt im folgenden Verfahren fort.

  1. Melden Sie sich beim Apple Developer-Portal an.

  2. Wechseln Sie zu Zertifikate, Bezeichner und Profile>Bezeichner>App-IDs, und wählen Sie dann die App-ID aus, die Ihrer App zugeordnet ist.

    Screenshot der Auswahl einer App-ID.

  3. Wählen Sie auf der Seite für Ihre App-ID zunächst Funktionen>Pushbenachrichtigungen und dann die Option Speichern aus.

    Screenshot der Optionen zum Bearbeiten einer App-ID-Konfiguration.

  4. Wählen Sie im angezeigten Dialogfeld App-Funktionen ändern die Schaltfläche Bestätigen aus.

    Screenshot der Schaltfläche „Bestätigen“ zum Ändern der App-Funktionen.

  5. Wählen Sie auf der Seite für Ihre App-ID zunächst Funktionen>Pushbenachrichtigungen>Konfigurieren aus, und treffen Sie dann die folgende Auswahl:

    • Wählen Sie zum Testen von Pushbenachrichtigungen beim Entwickeln einer iOS-App die Schaltfläche Zertifikat erstellen unter SSL-Zertifikat für die Entwicklung aus.
    • Wählen Sie zum Senden von Pushbenachrichtigungen in der Produktion die Schaltfläche Zertifikat erstellen unter SSL-Zertifikat für die Entwicklung aus.

    Screenshot der Optionen zum Erstellen eines Entwicklungszertifikats oder eines Produktionszertifikats.

  6. Der Bereich Neues Zertifikat erstellen wird auf der Seite Zertifikate, Bezeichner und Profile angezeigt.

    Screenshot der Option zum Hochladen einer Zertifikatsignieranforderung.

    In diesem Bereich laden Sie eine Zertifikatsignieranforderung (Certificate Signing Request, CSR) hoch:

    1. Befolgen Sie auf einer neuen Browserregisterkarte diese Apple-Hilfeseite, um eine CSR zu erstellen und die Datei als App name.cer zu speichern. Die Anweisungen umfassen die Verwendung des Zertifikat-Assistenten zum Anfordern eines Zertifikats und zum Ausfüllen der Zertifikatinformationen.

      Screenshot der Auswahl von „Zertifikat von Zertifizierungsstelle anfordern“.

      Screenshot, der ein Beispiel für das Ausfüllen von Zertifikatinformationen zeigt.

    2. Ziehen Sie die CER-Datei in den Bereich Datei auswählen. Wählen Sie dann in der oberen rechten Ecke die Schaltfläche Weiter aus.

      Screenshot des Bereichs zum Auswählen einer Zertifikatdatei.

  7. Wählen Sie Herunterladen aus.

    Screenshot der Schaltfläche zum Herunterladen eines Zertifikats.

  8. Speichern Sie die Datei lokal im P12-Format.

    Screenshot des Bereichs zum Speichern einer Zertifikatdatei.

  9. Öffnen Sie die CER-Datei, die Sie heruntergeladen haben. Wählen Sie unter Schlüsselbundverwaltung (Keychain Access) Ihr Zertifikat aus, klicken Sie mit der rechten Maustaste darauf, und exportieren Sie das Zertifikat dann im P12-Format.

  10. Wechseln Sie zum Notification Hub. Wählen Sie unter Einstellungen die Option Apple (APNs) aus. Geben Sie dann die Zertifikatdetails ein:

    • Wählen Sie für Authentifizierungsmodus die Option Zertifikat aus.
    • Laden Sie für Zertifikat hochladen die soeben erstellte P12-Datei hoch.
    • Wählen Sie für Anwendungsmodus den Modus entsprechend Ihrem Bedarf aus.

    Wenn Sie alle Informationen eingegeben haben, wählen Sie die Option Speichern aus.

    Screenshot der Anwendungs- und Zertifikateinstellungen für einen Notification Hub.

Xcode konfigurieren

  1. Navigieren Sie in Xcode zur Registerkarte Signing & Capabilities (Signieren und Funktionen).

  2. Fügen Sie eine Funktion hinzu, indem Sie + Capability (+ Funktion) und anschließend Push Notifications (Pushbenachrichtigungen) auswählen.

  3. Fügen Sie eine weitere Funktion hinzu, indem Sie + Capability (+ Funktion) und anschließend Background Modes (Hintergrundmodi) auswählen.

  4. Wählen Sie unter Hintergrundmodi die Option Remotebenachrichtigungen aus.

    Screenshot, der das Hinzufügen von Pushbenachrichtigungen und Hintergrundmodi in Xcode zeigt.

  5. Legen Sie für Podziel – AzureCore Nur App-Extension-Safe-API anfordern auf die Option Nein fest.

Implementieren von Pushbenachrichtigungen

Basisversion

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

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 die Verschlüsselung von Kundeninhalten (z. B. Chatnachrichteninhalt und Anzeigename des Absenders) in den Nutzdaten von Pushbenachrichtigungen einige Problemumgehungen erfordert.

Datenspeicher für Verschlüsselungsschlüssel

Erstellen Sie einen beständigen Datenspeicher auf iOS-Geräten. Dieser Datenspeicher muss dazu in der Lage sein, Daten zwischen der Haupt-App und den App-Erweiterungen zu teilen.

Wählen Sie im Beispielcode für dieses Tutorial eine App-Gruppe als Datenspeicher aus, indem Sie die folgenden Aktionen ausführen:

  • Fügen Sie die Funktion der App-Gruppen den Zielen Ihrer App (Haupt-App und App-Erweiterungen) hinzu, indem Sie die Schritte im Apple-Artikel Hinzufügen von Funktionen zu Ihrer App ausführen.

  • Konfigurieren Sie App-Gruppen, indem Sie die Schritte im Apple-Artikel Konfigurieren von App-Gruppen ausführen. Stellen Sie sicher, dass Ihre Haupt-App und Ihre App-Erweiterung denselben Containernamen aufweisen.

Benachrichtigungsdiensterweiterung

Implementieren Sie die Benachrichtigungsdiensterweiterung, die mit der Haupt-App gebündelt ist. Diese App-Erweiterung wird zum Entschlüsseln der Nutzdaten von Pushbenachrichtigungen verwendet, wenn das Gerät sie empfängt.

  1. Wechseln Sie zu Hinzufügen einer Dienst-App-Erweiterung zu Ihrem Projekt in der Apple-Dokumentation, und führen Sie die Schritte aus.

  2. Wechseln Sie zu Implementieren der Handlermethoden Ihrer Erweiterung in der Apple-Dokumentation. Apple stellt den Standardcode zum Entschlüsseln von Daten bereit, und Sie können der Gesamtstruktur für dieses Tutorial folgen. Da Sie jedoch das Chat-SDK für die Entschlüsselung verwenden, müssen Sie den Teil, der von // Try to decode the encrypted message data beginnt, durch angepasste Logik ersetzen. Im Beispielcode finden Sie die zugehörige Implementierung in NotificationService.swift.

Implementierung des PushNotificationKeyStorage-Protokolls

Das PushNotificationKeyStorage-Protokoll ist für die erweiterte Version von Pushbenachrichtigungen erforderlich. Sie können die vom Chat-SDK bereitgestellte AppGroupPushNotificationKeyStorage-Standardklasse verwenden. Wenn Sie App-Gruppen nicht 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): Diese 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 einen Aufruf von chatClient.startPushNotifications(deviceToken:) häufiger einplanen (z. B. alle 15 Minuten), damit ein neuer Verschlüsselungsschlüssel registriert werden kann, bevor der alte Schlüssel abläuft.

  • onRetrieveKeys() -> [String]: Diese Methode wird verwendet, um die zuvor gespeicherten gültigen Schlüssel abzurufen. Sie haben die Flexibilität, die Anpassung basierend auf dem von Ihnen zuvor ausgewählten Datenspeicher bereitzustellen.

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

Testen Ihrer Benachrichtigungen

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

  2. Laden Sie das GitHub-Repository für Beispiel-Apps herunter.

  3. Fügen Sie die <ACESS_TOKEN>- und <ACS_RESOURCE_ENDPOINT>-Werte von Benutzer A in AppSettings.plist ein.

  4. Legen Sie Bitcode aktivieren für zwei Podziele auf Nein fest: AzureCommunicationChat und Trouter.

  5. Verbinden Sie das iOS-Gerät mit Ihrem Mac, führen Sie das Programm aus. Wenn Sie aufgefordert werden, Pushbenachrichtigungen auf dem Gerät zu autorisieren, wählen Sie Zulassen aus.

  6. Senden Sie eine Chatnachricht als Benutzer B. Vergewissern Sie sich, dass Benutzer A eine Pushbenachrichtigung auf dem iOS-Gerät erhält.

Implementieren der Registrierungsverlängerung

Damit Microsoft einen sicheren Chatdienst bereitstellen kann, bleibt die Registrierung für Pushbenachrichtigungen auf iOS-Geräten nur 45 Minuten gültig. Um die Funktionalität von Pushbenachrichtigungen aufrechtzuerhalten, müssen Sie die Registrierungsverlängerung in der Client-App implementieren.

In diesem Tutorial werden zwei Lösungen vorgeschlagen, die den offiziellen Richtlinien von Apple entsprechen. Es wird empfohlen, beide Lösungen zusammen zu implementieren, um ihre Effektivität zu steigern.

Hinweis

Verschiedene Faktoren können die Effektivität beider Lösung beeinflussen. Beispielsweise könnten sich der Akkustatus, die Netzwerkbedingungen und die iOS-spezifischen Einschränkungen des Geräts auf die Funktion der App zum Ausführen von Hintergrundaufgaben auswirken. Weitere Informationen finden Sie im Video Fortschritte bei der App-Ausführung im Hintergrund und Artikel Pushen von Hintergrundaktualisierungen an Ihre App von Apple.

Lösung 1: Hintergrundaufgaben

Mithilfe von Hintergrundaufgaben können Aktivitäten auch dann ausgeführt werden, wenn die App nur im Hintergrund ausgeführt wird. Wenn Sie eine Hintergrundaufgabe implementieren, kann Ihre App mehr Zeit anfordern, um eine bestimmte Aufgabe auszuführen (z. B. die Verlängerung der Pushbenachrichtigungsregistrierung).

In den folgenden Abschnitten wird beschrieben, wie Sie Hintergrundaufgaben für die Verlängerung der Registrierung verwenden können.

Konfigurieren der automatischen Verlängerung von Benutzerzugriffstoken

Um den unterbrechungsfreien Zugriff auf Chatdienste sicherzustellen, müssen Sie die Gültigkeit von Benutzerzugriffstoken sicherstellen. Token verfügen in der Regel über einen Standardgültigkeitszeitraum von 24 Stunden, nach dem sie ablaufen und eine Verlängerung erfordern. Durch die Implementierung eines Mechanismus für die automatische Verlängerung wird sichergestellt, dass das Token gültig ist, wenn die Chatanwendung aktiviert wird.

Das Chat-SDK optimiert die Tokenverwaltung, indem der Verlängerungsprozess automatisiert wird, wenn eine Verlängerungsfunktion für benutzerdefinierte Zugriffstoken implementiert wird. Führen Sie die folgenden Schritte aus, um Ihre Chatanwendung so zu konfigurieren, dass die automatische Verlängerung des Tokens unterstützt wird:

  1. Um sicherzustellen, dass Ihre Chatanwendung den kontinuierlichen und sicheren Benutzerzugriff ermöglicht, müssen Sie eine Dienstebene für das Ausstellen von Token implementieren. Eine Möglichkeit besteht darin, Azure Functions für diesen Zweck zu verwenden.

    Informationen zum Erstellen einer Azure-Funktion finden Sie im Artikel Erstellen eines vertrauenswürdigen Benutzerzugriffsdiensts mithilfe von Azure Functions. In ihm wird beschrieben, wie Sie Ihre Funktions-App einrichten und den Code bereitstellen, der zum Ausstellen von Token erforderlich ist.

  2. Führen Sie nach dem Konfigurieren Ihrer Azure-Funktion die folgenden Schritte aus:

    1. Rufen Sie die Tokenausteller-URL aus dem Azure-Portal ab. Ihre Chatanwendung verwendet diese URL zum Anfordern neuer Token.

    2. Erstellen Sie die Tokenverlängerungsfunktion, und integrieren Sie sie in Ihre Chatanwendung. Diese Komponente fordert neue Token an und initialisiert den Chatclient für eine nahtlose automatische Tokenverlängerung.

      Der Beispielcode für die Tokenverlängerungsfunktion und deren Integration in den Chatclient ist im GitHub-Repository für Beispiel-Apps verfügbar.

Aktivieren und Planen von Hintergrundaufgaben

Um Hintergrundaufgaben in Ihrer iOS-App zu aktivieren und zu planen, führen Sie die Schritte im Apple-Artikel Verwenden von Hintergrundaufgaben zum Aktualisieren Ihrer App aus.

Eine praktische Implementierung finden Sie unter GitHub-Repository für Beispiel-Apps. Im bereitgestellten Beispiel wird BGProcessingTask verwendet. Dieses Element ist so konfiguriert, dass es nicht früher als eine Minute in der Zukunft initiiert wird. Es zeigt, wie Daten effizient im Hintergrund abgerufen werden.

Lösung 2: Remotebenachrichtigung

Eine Remotebenachrichtigung ist der Mechanismus für iOS-Anwendungen zum Ausführen von Hintergrundaufgaben als Reaktion auf externe Trigger. Sie können Remotebenachrichtigungen für Aufgaben wie das Verlängern von Registrierungen ohne Benutzereingriff verwenden.

Führen Sie die folgenden Schritte aus, um mithilfe von Remotebenachrichtigungen eine Hintergrundaufgabe auszuführen:

  1. Implementieren eines Triggermechanismus.

    Sie können beispielsweise eine Azure-Funktions-App als Triggermechanismus verwenden. Dies ermöglicht Ihnen, Code als Reaktion auf verschiedene Trigger auszuführen (einschließlich HTTP-Anforderungen), sodass es nützlich ist, automatische Pushbenachrichtigungen zu initiieren. Denken Sie daran, die Geräteregistrierung in Ihrer Komponente zu implementieren, damit die Funktions-App weiß, wohin die Benachrichtigungen übermittelt werden sollen.

  2. Einrichten eines Notification Hubs.

    Der Azure Notification Hubs-Dienst bietet eine skalierbare Pushbenachrichtigungsinfrastruktur, die Benachrichtigungen an eine beliebige Plattform (iOS, Android, Windows usw.) von jedem Back-End (Cloud oder lokal) senden kann.

    Sie können denselben Notification Hub wiederverwenden, den Sie für normale Pushbenachrichtigungen verwenden. Weitere Informationen zum Einrichten eines neuen Hubs finden Sie in der Dokumentation zu Azure Notification Hubs.

  3. Konfigurieren der Azure-Funktions-App für regelmäßige Benachrichtigungen.

    Passen Sie die Funktions-App so an, dass Remotebenachrichtigungen regelmäßig über den Notification Hub gesendet werden. Diese Benachrichtigungen werden an den APNs und das angegebene Gerät weitergeleitet. Weitere Anweisungen finden Sie unter Notification Hubs-Ausgabebindung für Azure Functions.

  4. Behandeln von Benachrichtigungen in Ihrer App.

    Implementieren Sie in Ihrer iOS-App die Anwendungsinstanzmethode zum Auslösen einer automatischen Verlängerung für eine Registrierung beim Empfang einer Hintergrundbnachrichtigung.

Weitere Informationen finden Sie im Apple-Artikel Einrichten eines Remotebenachrichtigungsservers.