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:

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

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.
Wählen Sie dann Fähigkeit hinzufügen und fügen Sie die Push-Benachrichtigungen Fähigkeit:

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:

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

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:

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":

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
REM A command with parameters
vonage jwt create ^
--app-id='00000000-0000-0000-0000-000000000000' ^
--private-key=./private.key
REM 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:
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:

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.
Nachdem Sie Ihr Zertifikat zu Vonage hochgeladen haben, integrieren Sie Push in Ihre App, indem Sie die folgenden Schritte ausführen:
- Erlaubnis für Push-Benachrichtigungen anfordern
func registerForPushNotificationsIfNeeded() {
UNUserNotificationCenter.current().requestAuthorization(options: [.alert, .sound, .badge]) { [weak self] granted, _ in
print("Permission granted: \(granted)")
if granted {
self?.getNotificationSettings()
}
}
}
func getNotificationSettings() {
UNUserNotificationCenter.current().getNotificationSettings { settings in
print("Notification settings: \(settings)")
guard settings.authorizationStatus == .authorized else { return }
Task { @MainActor in
UIApplication.shared.registerForRemoteNotifications()
}
}
}
Rufen Sie die registerForPushNotificationsIfNeeded Funktion in der didFinishLaunchingWithOptions AppDelegate Funktion.
- Für Push-Benachrichtigungen registrieren
Fügen Sie die didRegisterForRemoteNotificationsWithDeviceToken Funktion zu Ihrer Funktion AppDelegate Klasse. Diese wird vom System aufgerufen, um Ihnen ein Geräte-Token zu geben. Aufruf registerDeviceToken über die VGChatClient nachdem Sie eine Sitzung erstellt haben, und geben Sie das Gerätetoken ein:
func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
var isSandbox = false
#if DEBUG
isSandbox = true
#endif
client.registerDeviceToken(deviceToken, isSandbox: isSandbox) { error, deviceId in
...
}
}
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 eine eingehende Nachricht 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.
Schlussfolgerung
In dieser Anleitung haben Sie gesehen, wie man Push-Benachrichtigungen einrichtet.
Stimme:
- Mehr über CallKit erfahren Sie unter entwickler.apple.de.
- Für eine ausführliche Anleitung besuchen Sie unsere Handhabung von VoIP-Push-Benachrichtigungen blog.
- Ansicht der abgeschlossenes Musterprojekt auf GitHub.
Plaudern:
- Weitere Informationen über Benutzerbenachrichtigungen finden Sie unter entwickler.apple.de.