iOS Push-Benachrichtigungen einrichten

Bei eingehenden Ereignissen, wie einer neuen Nachricht oder einem eingehenden Anruf, erwartet der Nutzer oft eine Push-Benachrichtigung, wenn die App nicht aktiv ist.

Für Voice können Sie VoIP-Push-Benachrichtigungen in Ihre Anwendung integrieren, indem Sie PushKit und CallKit. Unser Blog bietet eine durchgängiges Tutorial wie man VoIP-Push-Benachrichtigungen zu integrieren, die eine abgeschlossenes Musterprojekt.

Für den Chat können Sie Folgendes integrieren Benutzerbenachrichtigungen in Ihrer App. Sie können den Push, den Sie von Vonage erhalten, anpassen, bevor Sie ihn Ihrem Benutzer mit einer Erweiterung der Benachrichtigungsdienst-App.

Ein Push-Zertifikat erstellen

Der Dienst Apple Push Notifications (APNs) verwendet eine zertifikatsbasierte Authentifizierung, um die Verbindungen zwischen den APNs, Vonage Servern und den Endgeräten zu sichern. Sie müssen ein Zertifikat erstellen und es auf die Vonage-Server hochladen.

Hinzufügen einer Push-Benachrichtigungsfunktion

Um Push-Benachrichtigungen verwenden zu können, müssen Sie die Push-Benachrichtigungsfunktion zu Ihrem Xcode-Projekt hinzufügen. Dazu müssen Sie wählen Sie Ihr Ziel und wählen Sie Signieren & Fähigkeiten:

Signing & Capabilities

Wählen Sie dann Fähigkeit hinzufügen und fügen Sie die Push-Benachrichtigungen und Hintergrund-Modi Fähigkeiten:

Add Capabilities

Wählen Sie unter der Funktion Hintergrundmodi Sprachübertragung über IP und Hintergrundverarbeitung. Wenn Xcode die Signierung Ihrer Anwendung automatisch verwaltet, wird das mit Ihrem Bundle Identifier verknüpfte Bereitstellungsprofil aktualisiert, um die Fähigkeiten einzubeziehen.

Erzeugen eines Push-Zertifikats

Um ein Push-Zertifikat zu erstellen, müssen Sie sich in Ihrem Apple Developer Account anmelden und die Seite Zertifikate, Identifikatoren und Profile Seite und fügen Sie ein neues Zertifikat hinzu:

Add certificate button

Wählen Sie eine Apple Push-Benachrichtigungsdienst SSL (Sandbox & Produktion) und weiter.

Apple Push Notification service option

Wenn die Option des Apple Push-Benachrichtigungsdienstes für Sie nicht verfügbar ist, müssen Sie einen Administrator für Ihr Apple Developer Account bitten, diesen Schritt für Sie durchzuführen.

Sie müssen nun die App-ID für die App auswählen, der Sie Push-Benachrichtigungen hinzufügen möchten, und fortfahren. Wenn Ihre App nicht aufgeführt ist, müssen Sie eine App-ID erstellen. Xcode kann dies automatisch für Sie tun, wenn es Ihre Signierung für Sie verwaltet, andernfalls können Sie eine neue App ID auf der Seite Zertifikate, Identifikatoren und Profile Seite unter * Bezeichner*. Stellen Sie sicher, dass Sie dabei die Funktion für Push-Benachrichtigungen auswählen.

Sie werden aufgefordert, eine Certificate Signing Request (CSR) hochzuladen. Sie können die Anweisungen auf Apples Hilfe-Website um eine CSR auf Ihrem Mac zu erstellen. Sobald die CSR hochgeladen ist, können Sie das Zertifikat herunterladen. Doppelklicken Sie auf das .cer Datei, um sie in Keychain Access zu installieren.

Um das Push-Zertifikat in dem Format zu erhalten, das von den Vonage-Servern benötigt wird, müssen Sie es exportieren. Suchen Sie Ihr Apple Push Notification Service-Zertifikat in Keychain Access und exportieren Sie es mit einem Rechtsklick. Benennen Sie den Export applecert und wählen Sie .p12 als Format:

Keychain export

Weitere Einzelheiten zur Verbindung mit APNs finden Sie unter Die offizielle Dokumentation von Apple.

Laden Sie Ihr Zertifikat hoch

Sie laden Ihr Zertifikat über das API-Dashboard zu Vonage hoch. Öffnen Sie Ihre Anwendung auf der Dashboardund öffnen Sie dann die Registerkarte "Push-Benachrichtigungen aktivieren":

Push Upload on the dashboard

Laden Sie Ihr Zertifikat hoch, in .p12 Format aus dem vorherigen Schritt und fügen Sie bei Bedarf ein Passwort hinzu.

Verwendung des Terminals

Sie können Ihr Zertifikat auch über das Terminal hochladen. Zum Hochladen über das Terminal benötigen Sie Ihre Vonage Application ID. Terminal hochzuladen, außerdem müssen Sie ein Vonage admin JWT generieren.

Um ein Vonage Admin-JWT zu generieren, führen Sie den folgenden Vonage CLI-Befehl aus. Denken Sie daran, die APPLICATION_ID mit ID Ihrer Vonage-Anwendung und PRIVATE_KEY mit dem Namen der Datei Ihres privaten Schlüssels:

# A command with parameters
vonage jwt create `
--app-id='00000000-0000-0000-0000-000000000000' `
--private-key=./private.key

# Will produce a token
eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3MzYyODE5NDYsImp0aSI6IjBmZjcwZDNmLTAzN2EtNGY4MC04ODZjLWI3MmM3MmQyMWNmMiIsImlhdCI6MTczNjI4MTA0NiwiYXBwbGljYXRpb25faWQiOiIwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAifQ.gA7jClpqaZ2OoS0iri-zGCbda4jO7C0M8mka0EnSyjlds1EeY8fNoBEx3FTXHfkkzzrj0TskrWc_dcs1wuM8Kx55c5rLQ7taVpDAYopKSc_CeeOaad8S6aWnRkTUTNeduO4aIn-0CbyRTluBYsH1RBqYBQvobuQIDEwbFw8xBgx0UfREMMN6DAWknR57eiVXN9x_oD6CGQJ1yV3025nGboeMsP9YgX4Nwc-rE2r8c1ZGwCLO81x8i19Qil3Nwu5q1nzouyavQjIw00B_TZkushnI1ufdi_GNqk-h5q2HvGkg7Pj9bVkZHFdVTO8im03JYNyJmcV83vnpjOLuCFRzxQ

ANMERKUNG Ein Admin-JWT ist ein JWT ohne Sub-Claim. Weitere Einzelheiten zur Erzeugung eines JWT finden Sie in der Authentifizierungsleitfaden.

Führen Sie dann den folgenden Curl-Befehl aus und ersetzen Sie dabei jwt, applecert.p12, app_id mit Ihren Werten:

hexdump -ve '1/1 "%.2x"' < applecert.p12 > applecert.pfx.hex hextoken=`cat applecert.pfx.hex` curl -v -X PUT \ -H "Authorization: Bearer $jwt" \ -H "Content-Type: application/json" \ -d "{\"token\":\"$hextoken\"}" \ https://api.nexmo.com/v1/applications/$app_id/push_tokens/ios

Wenn Sie beim Exportieren Ihres Zertifikats ein Kennwort verwendet haben, fügen Sie das Kennwort wie folgt in den Text Ihrer Anfrage ein:

-d "{\"password\":\"$PASSWORD\"}" \

Wenn Sie ein vorhandenes Token aktualisieren, löschen Sie zuerst das vorhandene Token, indem Sie eine DELETE Anfrage an denselben Endpunkt mit der gleichen Authentifizierung.

HINWEIS: An diesem Endpunkt findet keine Validierung statt. Die 200 Rückgabecode bedeutet, dass Vonage die Daten erhalten und gespeichert gespeichert hat, aber nicht überprüft hat, ob die Werte gültig sind.

Integrieren Sie Push-Benachrichtigungen in Ihre Applikation

Nachdem Sie Ihr Zertifikat bei Vonage hochgeladen haben, integrieren Sie VoIP-Push in Ihre App, indem Sie die folgenden Schritte ausführen:

1. Verknüpfen Sie die CallKit Rahmenwerk

Wenn Sie VoIP-Push-Benachrichtigungen verwenden, müssen Sie das CallKit-Framework einsetzen. Verknüpfen Sie es mit Ihrem Projekt, indem Sie es unter Rahmenwerke, Bibliotheken und eingebettete Inhalte unter Allgemeines:

Linking CallKit framework

2. Einrichten PushKit

In Ihrem AppDelegatefügen Sie eine voipRegistry Eigentum:

let voipRegistry = PKPushRegistry(queue: nil)

und richten Sie es ein:

func registerForVoIPPushes() {
    self.voipRegistry.delegate = self
    self.voipRegistry.desiredPushTypes = [PKPushType.voIP]
}

Rufen Sie die obige Funktion in der Datei didFinishLaunchingWithOptions AppDelegate Funktion.

3. Für VoIP-Push-Benachrichtigungen registrieren

Umsetzung der PKPushRegistryDelegate didUpdate Delegiertenfunktion, die Ihnen eine PKPushCredentials Objekt. Dieses Objekt enthält das Token, das für die Registrierung dieses Geräts benötigt wird.

HINWEIS: Stellen Sie vor der Registrierung des Tokens sicher, dass Sie zuvor erfolgreich eine Sitzung erstellt haben.

Rufen Sie an. registerDevicePushToken über die VGVoiceClient nachdem Sie eine Sitzung erstellt haben, und geben Sie das Token für die Push-Anmeldeinformationen ein:

var isSandbox = false
#if DEBUG
   isSandbox = true
#endif

client.registerVoipToken(token, isSandbox: isSandbox) { error, deviceId in
      if error == nil {
         // Push token registered
      } else {
        // Push token registration error
      }
}

Dadurch wird das Token an dieses Gerät und den Benutzer, der die Sitzung erstellt hat, gebunden. Wenn Sie zum Beispiel eine Sitzung mit dem Benutzer Alicejedes Mal, wenn ein Anruf eingeht, für Alice Vonage sucht nach dem Gerätetoken für Alice. 'isSandbox' können Sie steuern, ob Sie den Apple Sandbox-Push-Benachrichtigungsserver verwenden oder nicht. Sie können die deviceId um die Registrierung des Geräts für Push aufzuheben.

4. Eingehende VoIP-Push-Benachrichtigung behandeln

Wenn das Gerät eine eingehende VoIP-Push-Benachrichtigung empfängt, wird die PKPushRegistryDelegate Delegiertenfunktion didReceiveIncomingPushWith aufgerufen wird. Hier müssen Sie prüfen, ob dieser Push von Vonage stammt, und ihn verarbeiten:

func isVonagePush(with userInfo: [AnyHashable : Any]) -> Bool {
   VGVoiceClient.vonagePushType(userInfo) == .unknown ? false : true
}

func pushRegistry(_ registry: PKPushRegistry, didReceiveIncomingPushWith payload: PKPushPayload, for type: PKPushType, completion: @escaping () -> Void) {
   if isVonagePush(with: payload.dictionaryPayload) {
      if let invite = client.processCallInvitePushData(payload) {
            // Report new call to CallKit 
      } else {
            // Report failed call to CallKit
      }
   }
}

Um den eingehenden Push zu bearbeiten, benötigen Sie eine aktive Sitzung, die dem gewünschten Empfänger des Anrufs gehört. Es wird empfohlen, gleichzeitig eine neue Sitzung zu erstellen und die processCallInvitePushData sofern der Benutzer nicht gerade ein Gespräch führt.

Wenn processCallInvitePushData erfolgreich abgeschlossen ist, erhalten Sie eine Anrufeinladung auf dem didReceiveInviteForCall Funktion delegieren. Hier können Sie den Anruf melden zu CallKit.

func voiceClient(_ client: VGVoiceClient, didReceiveInviteForCall callId: String, from caller: String, withChannelType type: String) {
   let activeCall = UUID(uuidString: callID)
   let update = CXCallUpdate()
   update.localizedCallerName = caller

   // provider is an instance of CXProvider
   provider.reportNewIncomingCall(with: activeCall!, update: update) { error in
      if error == nil {
            completion()
      }
   }
}

HINWEIS: Vor dem Anruf answer oder reject für die Einladung zum Anruf sicherstellen, dass die zuvor erstellte Sitzung erfolgreich erstellt wurde.

Schlussfolgerung

In dieser Anleitung haben Sie gesehen, wie man Push-Benachrichtigungen einrichtet.

Stimme:

Plaudern: