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:

Signing & Capabilities

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

Add Capabilities

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.

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 :

Add certificate button

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

Apple Push Notification service option

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 :

Keychain export

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

Push Upload on the dashboard

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

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 :

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

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

Linking CallKit framework

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.

Conclusion

Dans ce guide, vous avez vu comment configurer les notifications push.

Voix :

Chat :