Prerequisites
- A Telnyx account with a configured SIP Connection
- An Apple Developer account
- The Telnyx iOS WebRTC SDK integrated into your application
Portal setup
1. Create a VoIP push certificate
For official Apple documentation, see Create VoIP Services Certificates. You will need:- An Apple Developer account
- Your app’s Bundle ID
- A Certificate Signing Request (CSR) from your Mac
- Go to developer.apple.com and sign in.
- Navigate to Certificates, Identifiers & Profiles.
- Click the + button to create a new certificate.
- Select VoIP Services Certificate and click Continue.
- Choose the Bundle ID for your application and click Continue.
- Upload a CSR file from your Mac.
- Open Keychain Access on your Mac.
- Go to Keychain Access → Certificate Assistant → Request a Certificate from a Certificate Authority.
- Enter your email address, select Save to disk, and click Continue.
voip_services.cer) and double-click it to install it in your Keychain.
A single VoIP Services Certificate works for both APNS sandbox and production environments. You need a separate certificate for each Bundle ID.
2. Export cert.pem and key.pem
- Open Keychain Access and search for “VoIP Services”.
- Verify the certificate is installed for your Bundle ID.
- Right-click the certificate and select Export. Save as a
.p12file (you’ll be prompted for a password). - Run the following commands to extract the PEM files:
3. Create an iOS push credential in the Telnyx Portal
- Go to portal.telnyx.com and log in.
- Navigate to API Keys in the left panel.
- Select the Credentials tab, then click Add → iOS Credential.
- Enter a credential name (using your Bundle ID makes it easy to identify).
- Paste the full contents of
cert.peminto the certificate field (include the-----BEGIN CERTIFICATE-----and-----END CERTIFICATE-----markers). - Paste the full contents of
key.peminto the key field (include the-----BEGIN RSA PRIVATE KEY-----and-----END RSA PRIVATE KEY-----markers). - Click Add Push Credential to save.
4. Attach the credential to a SIP Connection
- Navigate to SIP Connections in the left panel.
- Open the SIP Connection you want to configure (or create a new one).
- Select the WebRTC tab.
- In the iOS section, select the push credential you created.
- Save the SIP Connection.
App setup
Enable push notification capabilities
- Open your Xcode project.
- Select your app target in the Project Navigator.
- Go to Signing & Capabilities and click + Capability.
- Add Push Notifications.
- Add Background Modes and enable Voice over IP.
Configure PushKit
Import PushKit and register for VoIP push notifications:PKPushRegistryDelegate to capture the device token:
Pass the token to the SDK
Include the APNS device token when connecting theTelnyxClient:
Handle incoming VoIP push notifications
When a push notification arrives, reconnect the client and report the call to CallKit:On iOS 13.0 and later, you must report incoming VoIP push notifications to CallKit. If you fail to do so, the system will terminate your app. See Apple’s documentation for details.
Disable push notifications
To disable push notifications for the current user:Troubleshooting
VoIP certificate issues
- Verify your VoIP Services Certificate is not expired.
- Ensure the certificate matches the Bundle ID used in your app.
- For different Bundle IDs (e.g.,
com.myapp.devvscom.myapp), create separate certificates.
Push token not passed to login
Check that the APNS device token is captured inpushRegistry(_:didUpdate:for:) and included in TxConfig when calling connect().
Wrong credential on the SIP Connection
In the Telnyx Portal, open your SIP Connection → WebRTC tab → iOS section and verify the correct credential is selected.APNS environment mismatch
- Debug builds (Xcode): Use sandbox environment — set
pushEnvironmenttosandboxinTxConfig. - Release builds / TestFlight: Use production environment — set
pushEnvironmenttoproduction. - Ensure the APNS environment matches your build signing profile.
Testing push delivery
The SDK repository includes a testing tool in thepush-notification-tool/ directory:
cert.pem, key.pem, and the target APNS environment (sandbox or production).
Common error responses from the tool:
- BadDeviceToken: Token is invalid or expired
- BadCertificate: Certificate files are invalid or expired
- BadTopic: Bundle ID doesn’t match certificate
- TopicDisallowed: Certificate doesn’t have VoIP permissions
Next steps
- Push notifications overview — Multidevice support and architecture
- iOS SDK reference — Full SDK documentation
- Mobile Push Credentials API — Manage credentials programmatically