Envoyez des notifications push VoIP sur iOS avec OneSignal via l’enregistrement de jetons PushKit et un certificat VoIP, ainsi que des alternatives Android pour un comportement de type appel.
Les notifications push VoIP permettent à votre application de recevoir des alertes d’appel entrant même lorsqu’elle est en arrière-plan ou terminée. Apple gère les pushs VoIP différemment des notifications push standard — ils utilisent un type de certificat distinct, un jeton distinct (via PushKit) et des règles de livraison différentes.OneSignal prend en charge l’envoi de pushs VoIP, mais le SDK OneSignal ne gère pas l’enregistrement des jetons VoIP. Vous êtes responsable de :
L’enregistrement des jetons VoIP dans votre application avec Apple PushKit
La création d’une application OneSignal dédiée avec un certificat VoIP Services
L’enregistrement des jetons et l’envoi des pushs via l’API REST OneSignal
Sur iOS, les notifications VoIP utilisent Apple PushKit et suivent des règles de livraison spéciales qui diffèrent des notifications push standard. Parce qu’Apple traite les pushs VoIP différemment, OneSignal nécessite une configuration d’application distincte pour VoIP.
Avant de commencer — voici les erreurs de configuration VoIP les plus courantes :
Ne pas créer d’application OneSignal distincte pour VoIP. Apple exige un type de certificat différent pour VoIP, OneSignal a donc besoin d’une application dédiée pour envoyer des pushs VoIP. Votre application push existante ne peut pas être utilisée pour les deux.
Télécharger le mauvais certificat. Vous avez besoin d’un certificat VoIP Services (.p12), pas de votre certificat push APNs standard. Utiliser le mauvais entraîne des échecs de livraison silencieux.
Oublier test_type en sandbox. Lors des tests avec un build de développement, vous devez inclure "test_type": 1 lors de l’enregistrement du jeton. Sans cela, l’appel API réussit mais les pushs n’arrivent jamais.
1
Enregistrer un jeton VoIP avec 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 lorsqu’Apple le fait tourner
Il s’agit de code Apple PushKit standard. OneSignal ne fournit pas de SDK PushKit — vous enregistrez le jeton vous-même et le transmettez à OneSignal à l’étape 4.
Créer une application OneSignal distincte pour VoIP
Les pushs VoIP Apple nécessitent un type de certificat différent des notifications push standard. Une seule application OneSignal ne peut utiliser qu’un seul type de certificat, vous devez donc créer deux applications OneSignal distinctes :
Application Push Principale : Utilise votre certificat APNs pour les notifications push standard
Application Push VoIP : Utilise un certificat VoIP Services pour les notifications VoIP uniquement
Les deux applications doivent utiliser le même ID de bundle iOS et être associées à la même application iOS native. Vous n’avez pas besoin d’initialiser le SDK OneSignal deux fois — l’application VoIP est uniquement utilisée côté serveur pour envoyer des pushs VoIP via l’API.
L’ID de bundle (par ex. com.yourcompany.appname) se trouve dans Xcode sous l’onglet General de votre cible.
3
Télécharger un certificat VoIP Services
Dans votre application VoIP OneSignal, téléchargez un certificat VoIP Services (.p12). Il s’agit d’un type de certificat différent du certificat push APNs standard que vous utilisez pour les notifications ordinaires.Pour en créer un :
Suivez les instructions pour générer et télécharger le certificat
Ouvrez-le dans Trousseau d’accès et exportez-le en fichier .p12
Téléchargez le fichier .p12 dans les paramètres iOS de votre application VoIP OneSignal
Ne téléchargez pas votre certificat push APNs standard dans l’application VoIP. Si vous utilisez le mauvais type de certificat, l’API acceptera votre requête push mais Apple la rejettera et la notification n’arrivera jamais.
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.
Les builds sandbox/développement nécessitent "test_type": 1. Si vous omettez ce champ, l’appel API réussit et ne renvoie aucune erreur, mais Apple traite le jeton comme production et rejette silencieusement chaque push qui lui est envoyé.
Un jeton VoIP valide est une chaîne hexadécimale minuscule de 64 caractères (par ex. a1b2c3d4e5f6...). PushKit ne fonctionne pas sur le simulateur iOS — vous devez utiliser un appareil réel pour obtenir un jeton valide.
Pour mettre à jour le jeton ultérieurement, utilisez l’API Update Subscription.
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 push Android 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.
Les livraisons confirmées fonctionnent-elles avec VoIP ?
Non. Les Livraisons Confirmées ne sont pas suivies pour les pushs VoIP. Les livraisons confirmées 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 :
Cet événement fait partie de votre cible d’application principale et ne nécessite pas d’extension séparée. Consultez la documentation VoIP d’Apple pour plus de détails.
Puis-je envoyer des notifications VoIP depuis le tableau de bord OneSignal ?
Non. Les notifications VoIP doivent être envoyées via l’API Create Notification avec "apns_push_type_override": "voip". Le tableau de bord ne prend pas en charge ce paramètre.
Pourquoi mon push VoIP échoue-t-il silencieusement ?
Les pushs VoIP peuvent échouer sans aucune erreur de l’API OneSignal. Parcourez cette liste de vérification :
Utilisez-vous un build sandbox/développement ? Vous devez inclure "test_type": 1 lors de l’enregistrement du jeton via l’API Create User. Sans cela, le jeton s’enregistre comme production, Apple rejette le push et il échoue silencieusement.
Avez-vous téléchargé le bon certificat ? L’application VoIP OneSignal doit utiliser un certificat VoIP Services (.p12), pas un certificat push APNs standard. Les deux se ressemblent dans Trousseau d’accès — vérifiez que le nom du certificat commence par “VoIP Services”.
Envoyez-vous vers la bonne application OneSignal ? Le app_id dans votre requête d’envoi doit être votre application VoIP, pas votre application push principale. La REST API Key doit également provenir de l’application VoIP.
Le jeton VoIP est-il valide ? Les jetons expirent lors de la réinstallation de l’application ou de la restauration de l’appareil. Vérifiez que le jeton est une chaîne hexadécimale minuscule de 64 caractères et qu’il a été enregistré récemment.
Votre application appelle-t-elle reportNewIncomingVoIPPushPayload ? Depuis iOS 13, Apple termine les applications qui reçoivent un push VoIP mais ne signalent pas un appel à CallKit. Il s’agit d’une exigence Apple, pas d’une limitation OneSignal.