Configurer les notifications push iOS
Lors d'événements entrants tels qu'un nouveau message ou un appel entrant, l'utilisateur s'attend souvent à recevoir une notification push, si l'application n'est pas active.
Pour Voice, vous pouvez intégrer des notifications push VoIP dans votre application en utilisant PushKit et CallKit. Notre blog présente un tutoriel de bout en bout sur la façon intégrer les notifications push de la VoIP, qui comporte un exemple de projet achevé.
Pour Chat, vous pouvez intégrer Notifications aux utilisateurs dans votre application. Vous pouvez personnaliser le message push que vous recevez de Vonage avant de l'afficher à votre utilisateur avec une option extension de l'application service de notification.
Créer un certificat Push
Le service Apple Push Notifications (APNs) utilise l'authentification par certificat pour sécuriser les connexions entre les APNs, les serveurs de Vonage et les appareils finaux. Vous devrez créer un certificat et le télécharger sur les serveurs Vonage.
Ajout d'une capacité de notification push
Pour utiliser les notifications push, vous devez ajouter la capacité de notification push à votre projet Xcode. Pour ce faire sélectionnez votre cible et sélectionnez Signature et capacités:

Sélectionnez ensuite ajouter une capacité et ajoutez le Notifications push et Modes d'arrière-plan des capacités :

Sous la rubrique Modes d'arrière-plan, sélectionnez Voix sur IP et Traitement en arrière-plan. Si Xcode gère automatiquement la signature de votre application, il mettra à jour le profil de provisionnement lié à votre identifiant d'ensemble pour inclure les capacités.
Sélectionnez ensuite ajouter une capacité et ajoutez le Notifications push capacité :

Générer un certificat push
Pour générer un certificat push, vous devez vous connecter à votre Account de développeur Apple et vous rendre dans la section Certificats, identifiants et profils et ajoutez un nouveau certificat :

Choisir un Service Apple Push Notification SSL (Sandbox & Production) et continuer.

Si vous ne disposez pas de l'option de service Apple Push Notification, vous devrez demander à un administrateur de votre compte développeur Apple de réaliser cette étape pour vous.
Vous devez maintenant choisir l'App ID de l'application à laquelle vous souhaitez ajouter des notifications push et continuer. Si votre n'est pas listée, vous devrez créer un App ID. Xcode peut le faire pour vous s'il gère automatiquement votre signature. Sinon, vous pouvez créer un nouvel identifiant d'application sur la page d'accueil de l'application. Certificats, identifiants et profils sous * Identifiants*. Veillez à sélectionner la fonction de notifications push lors de cette opération.
Vous serez invité à télécharger une demande de signature de certificat (CSR). Vous pouvez suivre les instructions sur
Site d'aide d'Apple
pour créer une CSR sur votre Mac. Une fois la CSR téléchargée, vous pourrez télécharger le certificat. Double-cliquez sur le
.cer pour l'installer dans le trousseau d'accès.
Pour obtenir le certificat push dans le format requis par les serveurs Vonage, vous devrez l'exporter. Localisez votre certificat de service
Apple Push Notification dans Keychain Access et cliquez avec le bouton droit de la souris pour l'exporter. Nommez l'exportation
applecert et sélectionnez .p12 comme format :

Vous trouverez plus de détails sur la connexion aux APN dans la rubrique Documentation officielle d'Apple.
Téléchargez votre certificat
Vous téléchargez votre certificat vers Vonage à l'aide du tableau de bord de l'API. Ouvrez votre application sur le site Web de tableau de bordpuis ouvrez l'onglet "Activer les notifications push" :

Téléchargez votre certificat, dans .p12 de l'étape précédente et ajoutez un mot de passe si nécessaire.
Utilisation du terminal
Vous pouvez également télécharger votre certificat via le terminal. Vous aurez besoin de votre ID d'application Vonage pour télécharger à l'aide du terminal. vous devrez également générer un JWT d'administration Vonage.
Pour générer un JWT d'administrateur Vonage, exécutez la commande CLI Vonage suivante. N'oubliez pas de remplacer le mot clé APPLICATION_ID avec ID
de votre application Vonage et PRIVATE_KEY avec le nom de votre fichier de clé privée :
# 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
NOTE Un JWT administrateur est un JWT sans sous-revendication. Pour plus de détails sur la manière de générer un JWT, voir le document guide d'authentification.
Exécutez ensuite la commande Curl suivante, en remplaçant jwt, applecert.p12, app_id avec vos valeurs :
Si vous avez utilisé un mot de passe lors de l'exportation de votre certificat, ajoutez le mot de passe au corps de votre requête comme suit :
-d "{\"password\":\"$PASSWORD\"}" \
Si vous mettez à jour un jeton existant, supprimez d'abord le jeton existant en effectuant un DELETE au même point d'accès avec la même authentification.
avec la même authentification.
NOTE : Il n'y a pas de validation à ce stade. Les 200 signifie que Vonage a reçu les données et les a stockées, mais n'a pas
mais n'a pas vérifié la validité des valeurs.
Intégrer les notifications push dans votre Applications
Après avoir téléchargé votre certificat auprès de Vonage, intégrez VoIP push dans votre application en suivant les étapes suivantes :
1. Relier le CallKit Le cadre
Lorsque vous utilisez des notifications push VoIP, vous devez utiliser le framework CallKit. Liez-le à votre projet en l'ajoutant sous Cadres, bibliothèques et contenu intégré sous la rubrique "Général" :

2. Mise en place PushKit
Dans votre AppDelegate, ajouter un voipRegistry propriété :
let voipRegistry = PKPushRegistry(queue: nil)
et le mettre en place :
func registerForVoIPPushes() {
self.voipRegistry.delegate = self
self.voipRegistry.desiredPushTypes = [PKPushType.voIP]
}
Appeler la fonction ci-dessus dans le didFinishLaunchingWithOptions AppDelegate fonction.
3. S'inscrire aux notifications VoIP Push
Mettre en œuvre la PKPushRegistryDelegate didUpdate qui vous fournira une fonction de délégation PKPushCredentials objet. Cet objet contient le jeton nécessaire à l'enregistrement de ce dispositif.
NOTE : Avant d'enregistrer le jeton, assurez-vous d'avoir créé une session avec succès.
Appeler registerDevicePushToken sur le VGVoiceClient après la création d'une session et transmettre le jeton d'authentification :
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
}
}
Le jeton sera ainsi lié à cet appareil et à l'utilisateur qui a créé la session. Par exemple, si vous avez créé une session avec l'utilisateur AliceChaque fois qu'il y a un appel entrant pour le Alice Vonage recherchera le jeton de l'appareil pour Alice. 'isSandbox' vous permet de contrôler si vous utilisez ou non le serveur de notification push du bac à sable d'Apple. Vous pouvez utiliser l'option deviceId pour annuler l'enregistrement de l'appareil en vue d'une poussée.
4. Traiter une notification push VoIP entrante
Lorsque l'appareil reçoit une notification VoIP push entrante, la fonction PKPushRegistryDelegate fonction déléguée didReceiveIncomingPushWith sera appelé. Ici, vous devrez vérifier si ce push provient de Vonage, et le traiter :
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
}
}
}
Pour traiter l'appel entrant, vous devez disposer d'une session active appartenant au destinataire de l'appel. Il est recommandé de créer simultanément une nouvelle session et d'appeler processCallInvitePushData à condition que l'utilisateur ne soit pas en cours d'appel.
Quand processCallInvitePushData s'achève avec succès, vous recevrez une invitation à téléphoner sur la page didReceiveInviteForCall fonction déléguée. Ici, vous pouvez signaler l'appel à 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()
}
}
}
NOTE : Avant d'appeler answer ou reject pour l'invitation à l'appel, assurez-vous que la session que vous avez créée précédemment a bien été créée.
Après avoir téléchargé votre certificat vers Vonage, intégrez le push dans votre application en suivant les étapes suivantes :
- Demander l'autorisation d'envoyer des notifications push
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()
}
}
}
Appeler le registerForPushNotificationsIfNeeded dans la fonction didFinishLaunchingWithOptions AppDelegate fonction.
- S'inscrire aux notifications push
Ajouter le didRegisterForRemoteNotificationsWithDeviceToken à la fonction AppDelegate class. Celle-ci sera appelée par le système pour vous donner un jeton d'appareil. Appeler registerDeviceToken sur le VGChatClient après avoir créé une session et transmis le jeton de l'appareil :
func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
var isSandbox = false
#if DEBUG
isSandbox = true
#endif
client.registerDeviceToken(deviceToken, isSandbox: isSandbox) { error, deviceId in
...
}
}
Le jeton sera ainsi lié à cet appareil et à l'utilisateur qui a créé la session. Par exemple, si vous avez créé une session avec l'utilisateur AliceChaque fois qu'il y a un message entrant pour Alice Vonage recherchera le jeton de l'appareil pour Alice. 'isSandbox' vous permet de contrôler si vous utilisez ou non le serveur de notification push du bac à sable d'Apple. Vous pouvez utiliser l'option deviceId pour annuler l'enregistrement de l'appareil en vue d'une poussée.
Conclusion
Dans ce guide, vous avez vu comment configurer les notifications push.
Voix :
- Vous pouvez en savoir plus sur CallKit sur developer.apple.com.
- Pour un tutoriel complet, visitez notre Blog sur la gestion des notifications push de la VoIP.
- Voir le exemple de projet achevé sur GitHub.
Chat :
- Pour en savoir plus sur les notifications aux utilisateurs, voir developer.apple.com.