Prerequisites
- A Telnyx account with a configured SIP Connection
- The Telnyx Flutter Voice SDK integrated into your application
- Android: A Firebase project with Cloud Messaging enabled
- iOS: An Apple Developer account with a VoIP push certificate
Portal setup
Flutter apps are cross-platform, so you need credentials for each platform you target:- Android: Follow the Android portal setup to create an Android push credential using your Firebase service account JSON.
- iOS: Follow the iOS portal setup to create an iOS push credential using your VoIP certificate PEM files.
App setup
Android — Firebase Cloud Messaging
1. Listen for background push notifications
Register a background message handler in yourmain method:
2. Handle the push notification
Process the incoming message and show a call notification using a plugin like FlutterCallkitIncoming:3. Create a high-importance notification channel (Android 8.0+)
For Android 8.0 and higher, create a dedicated notification channel so incoming call notifications display as heads-up alerts. Use the flutter_local_notifications package to configure the channel with maximum importance.iOS — Apple Push Notification Service
For iOS, the Flutter SDK uses APNS through the native PushKit integration. Configure your iOS project following the standard iOS app setup, which includes:- Enabling Push Notifications and Background Modes (VoIP) capabilities in Xcode.
- Configuring PushKit to register for VoIP pushes.
- Reporting incoming calls to CallKit (required on iOS 13+).
Troubleshooting
Android-specific issues
- FCM token not received: Ensure
Firebase.initializeApp()is called before requesting the token and thatgoogle-services.jsonis correctly placed. - Notifications not showing in background: Verify your background handler is annotated with
@pragma('vm:entry-point')and registered viaFirebaseMessaging.onBackgroundMessage. - Low-priority notifications: Create a notification channel with
Importance.maxfor incoming call alerts.
iOS-specific issues
- No push notifications: Confirm the VoIP push certificate matches your Bundle ID and is uploaded to the Telnyx Portal.
- App terminated on push: On iOS 13+, you must report every VoIP push to CallKit or the system kills your app.
- Environment mismatch: Use sandbox for debug builds and production for release/TestFlight builds.
General
- Push works but no call invitation: The push notification only signals that a call is incoming. Your app must reconnect to the TelnyxClient socket after receiving the push so the actual invitation can be delivered.
- Multidevice: A user can register up to 5 push tokens. If a 6th is added, the oldest is removed.
Next steps
- Push notifications overview — Multidevice support and architecture
- Flutter SDK reference — Full SDK documentation
- Mobile Push Credentials API — Manage credentials programmatically