Passer au contenu principal

Aperçu

Les notifications push VoIP sont gérées différemment par Apple par rapport aux notifications push standard. En raison de ces contraintes de plateforme, OneSignal prend en charge l’envoi de notifications VoIP, mais ne gère pas l’enregistrement des jetons VoIP pour vous. Vous devez :
  • Enregistrer vous-même les jetons VoIP en utilisant Apple PushKit
  • Télécharger un certificat APNs spécifique à VoIP
  • Utiliser l’API de OneSignal pour enregistrer les jetons et envoyer des notifications
OneSignal n’enregistre pas et ne rafraîchit pas automatiquement les jetons VoIP (PushKit). Vous devez enregistrer manuellement les jetons VoIP avec OneSignal en utilisant l’API.

Différences entre plateformes en un coup d’œil

PlateformePush VoIP supporté ?Fonctionnement
iOS✅ OuiUtilise Apple PushKit et un certificat APNs VoIP
Android❌ NonUtilise des pushs de données uniquement pour simuler un comportement d’appel

Si vous créez une application d’appel multiplateforme, vous utiliserez des approches différentes par plateforme.

Android : simuler un comportement de type VoIP (pas du vrai VoIP)

Android ne prend pas en charge les notifications push VoIP. Il n’existe pas d’équivalent à Apple PushKit. Au lieu de cela, les applications d’appel Android simulent le comportement VoIP en utilisant :
  • Des notifications push de données uniquement
  • Des services de premier plan
  • Une interface utilisateur d’appel personnalisée
Vous pouvez utiliser la prise en charge Android push normale de OneSignal combinée avec des API Android natives pour y parvenir. Approche recommandée :
  • Envoyer des notifications de données uniquement
  • Les gérer dans votre application pour :
    • Démarrer un service de premier plan
    • Lancer une activité d’interface d’appel
    • Afficher une notification d’appel entrant personnalisée
Si vous souhaitez intercepter et contrôler entièrement le rendu des notifications, utilisez l’Extension de Service de Notification d’Android. Ressources utiles :
La configuration Android n’est pas spécifique à OneSignal. OneSignal ne fait que livrer la charge utile push ; votre application gère le comportement d’appel.

iOS : envoyer de vraies notifications push VoIP

Sur iOS, les notifications VoIP utilisent Apple PushKit et ont des règles de livraison spéciales qui diffèrent des notifications push standard. Comment fonctionne VoIP iOS avec OneSignal : Pour les notifications VoIP iOS :
  1. Votre application enregistre un jeton VoIP en utilisant PushKit
  2. Vous téléchargez un certificat APNs VoIP Services sur OneSignal
  3. Vous enregistrez le jeton VoIP avec OneSignal en utilisant l’API
  4. Vous envoyez des pushs VoIP en utilisant apns_push_type_override: “voip”
Comme Apple traite les pushs VoIP différemment, OneSignal doit également les traiter comme une configuration d’application distincte.

1. Enregistrer un jeton VoIP en utilisant PushKit

Utilisez le framework PushKit d’Apple pour vous enregistrer aux notifications VoIP et recevoir un jeton VoIP.
  • Implémentez PushKit dans votre application
  • Stockez et rafraîchissez le jeton VoIP lorsque Apple le fait tourner
  • Suivez de près les politiques VoIP d’Apple
Ressources Apple :

2. Créer une nouvelle application OneSignal pour les utilisateurs VoIP

Vous devez maintenir deux applications OneSignal distinctes :
  • Application Push Principale : Pour les notifications push standard
  • Application VoIP : Pour les notifications VoIP uniquement
Les deux applications doivent :
  • Utiliser le même ID de bundle iOS
  • Être associées à la même application iOS native

3. Télécharger un certificat VoIP Services

Dans votre application VoIP OneSignal :
  • Téléchargez un certificat VoIP Services (.p12)
  • Ne réutilisez pas votre certificat APNs standard
Vous devez télécharger un certificat VoIP Services (.p12) pour l’application VoIP, en utilisant le même ID de bundle que votre application principale.

Certificat VoIP dans Trousseau d'accès

Certificat VoIP téléchargé dans le tableau de bord OneSignal

4. Enregistrer le jeton VoIP avec OneSignal

Utilisez l’API Create User pour enregistrer le jeton VoIP avec votre application VoIP OneSignal.
Si le jeton VoIP provient d’une version de développement ou sandbox, vous devez inclure la propriété "test_type": 1.Si vous l’omettez :
  • L’appel API peut réussir
  • Le push échouera silencieusement
curl --request POST \
     --url https://api.onesignal.com/apps/YOUR_VOIP_APP_ID/users \
     --header 'accept: application/json' \
     --header 'content-type: application/json' \
     --data '
{
  "subscriptions": [
    {
      "type": "iOSPush",
      "token": "your-voip-token",
      "test_type": 1 // omettre en production
    }
  ]
}
'
Pour mettre à jour le jeton ultérieurement, utilisez l’API Update Subscription.

5. Envoyer des notifications VoIP

Utilisez l’API Create Notification et incluez les paramètres suivants :
  • "apns_push_type_override": "voip"
  • Le app_id de votre application VoIP
  • Le subscription_id du jeton VoIP que vous avez enregistré
curl --include \
     --request POST \
     --header "Content-Type: application/json; charset=utf-8" \
     --header "Authorization: key YOUR_REST_API_KEY" \
     --data-binary '{
  "app_id": "YOUR_VOIP_APP_ID",
  "contents": {"en": "English Message"},
  "apns_push_type_override": "voip",
  "include_subscription_ids": ["YOUR_VOIP_SUBSCRIPTION_ID"]
}' \
https://api.onesignal.com/notifications

6. Vérifier votre configuration VoIP

Votre intégration VoIP iOS fonctionne si :
  1. Le jeton VoIP apparaît comme un abonnement push iOS dans votre application VoIP
  2. Un push VoIP déclenche pushRegistry(_:didReceiveIncomingPushWith:for:completion:)
  3. L’application se réveille même lorsqu’elle est terminée ou en arrière-plan

FAQ

Les livraisons confirmées fonctionnent-elles avec VoIP ?

Non, les Livraisons Confirmées ne sont pas suivies pour les pushs VoIP. Elles reposent sur l’Extension de Service de Notification, qui ne se déclenche pas pour les notifications VoIP. Au lieu de cela, suivez la réception via l’événement PushKit iOS natif :
pushRegistry(_:didReceiveIncomingPushWith:for:completion:)
Cet événement fait partie de votre cible d’application principale et ne nécessite pas d’extension séparée. En savoir plus dans la documentation VoIP d’Apple.