Overview

OneSignal supports sending VoIP notifications on both Android and iOS platforms. However, the OneSignal SDK does not currently support VoIP token registration. This guide explains how to configure VoIP notifications manually using OneSignal’s API and platform setup.


Android VoIP setup

Unlike iOS, Android does not use a dedicated “VoIP push” type. You can achieve VoIP-like behavior using data-only push notifications to start an Activity or present custom UI.

If you want to launch a native UI (e.g., incoming call screen), use Android’s NotificationExtenderService to override the notification behavior.

For further guidance:


iOS VoIP setup

1

Add PushKit to your app

Use Apple’s PushKit API to register and receive a VoIP token. Refer to Apple’s VoIP Best Practices for implementation tips.

2

Create a new OneSignal app for VoIP users

You must maintain two separate OneSignal apps:

  • Main Push App: For standard push notifications
  • VoIP App: For VoIP-specific notifications

Make sure to upload a VoIP Services Certificate (.p12) for the VoIP app, using the same bundle ID as your main app.

p12 in Keychain Access

VoIP certificate screenshot

3

Register device with VoIP token

Use the Create User API to register the VoIP token with your VoIP-dedicated OneSignal app.

Note: If you’re registering a device in a development/sandbox environment, include the "test_type": 1 property. Omitting this can cause "Mismatched Subscription Environment" errors or notification failures.

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 // omit in production
    }
  ]
}
'

To update the token later, use the Update Subscription API.

4

Send VoIP notifications

Use the Create Notification API and include the following parameters:

  • "apns_push_type_override": "voip"
  • The app_id of your VoIP app
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

FAQ