Android Push Notification Setup
Android
The Telnyx Android Client WebRTC SDK makes use of Firebase Cloud Messaging to deliver push notifications. If you want to receive notifications when receiving calls on your Android mobile device you need to enable Firebase Cloud Messaging within your application.
To do this you need to:
- Set up a Firebase console account
- Create a Firebase project
- Add Firebase to your Android Application
- Setup a Push Credential within the Telnyx Portal
- Generate a Firebase Cloud Messaging instance token
- Send the token with your login message
Adding Firebase to your application is a simple process. Click on the Android icon on the home screen of the console to start:
Next, enter your application details and register your application
After your application is registered, Firebase will generate a google-services.json file for you which will need to be added to your project root directory:
After that, you can follow this guide on how to enable the Firebase products within your application https://firebase.google.com/docs/android/setup#add-config-file
An alternative method is to add Firebase using the Firebase Assistant within Android Studio if it is set up within your IDE. You can view steps on how to register via this option here: https://firebase.google.com/docs/android/setup#assistant
Once your application is set up within the Firebase Console, you will be able to access the server key required for portal setup. You can access the server key file in JSON format by going into your project overview -> project settings -> Service Account and selecting Generate New Private Key.
The next step is to set up your Android VoIP credentials in the portal.
- Go to portal.telnyx.com and log in.
- Go to the API Keys section on the left panel.
- From the top bar go to the Credentials tab and select “Add” >> Android Credential
- Enter the details required for your Android Push Credentials. This includes a Credential name and the generated server key in JSON format in the field Project Account json
Save the new push credential by pressing the Add Push Credential button
We can now attach this Android Push Credential to a SIP Connection:
- Go to the SIP Connections section on the left panel.
- Open the Settings menu of the SIP connection that you want to add a Push Credential to or create a new SIP Connection.
- Select the WebRTC tab.
- Go to the Android Section and select the PN credential you previously created.
The portal setup is complete. Now when firebase is properly integrated into your application, you will be able to retrieve a token with a method such as this:
private fun getFCMToken() {
FirebaseApp.initializeApp(this)
FirebaseMessaging.getInstance().token.addOnCompleteListener { task ->
if (!task.isSuccessful) {
Timber.d("Fetching FCM registration token failed")
}
else if (task.isSuccessful){
// Get new FCM registration token
try {
token = task.result
} catch (e: IOException) {
Timber.d(e)
}
Timber.d("FCM token received: $token")
}
}
}
NoteAfter pasting the above content, Kindly check and remove any new line added
The final step is to create a MessagingService for your application. The MessagingService is the class that handles FCM messages and creates notifications for the device from these messages. You can read about the firebase messaging service class here: https://firebase.google.com/docs/reference/android/com/google/firebase/messaging/FirebaseMessagingService
We have a sample implementation for you to take a look at here: https://github.com/team-telnyx/telnyx-webrtc-android/blob/main/app/src/main/java/com/telnyx/webrtc/sdk/utility/MyFirebaseMessagingService.kt
Once this class is created, remember to update your manifest and specify the newly created service like so:
https://firebase.google.com/docs/cloud-messaging/android/client#manifest
You are now ready to receive push notifications via Firebase Messaging Service.
iOS
The Telnyx iOS Client WebRTC SDK makes use of APNS in order to deliver push notifications. If you would like to receive notifications when receiving calls on your iOS mobile device you will have to configure a VoIP push certificate.
Creating a VoIP push certificate
In order to generate VoIP push certificates you will need:
- An Apple developer account
- App BundleID
- CSR (Certificate Signing Request): Explained on Step #7
- Go to https://developer.apple.com/ and login with your credentials.
- In the Overview section, select “Certificates, Identifiers & Profiles”
-
Press the blue “+” button to add a new Certificate:
-
Search for “VoIP Services Certificate” and Click “Continue”:
-
Select the BundleID of the target application, and click “Continue”
-
Then, you will be requested to upload a CSR from your Mac.
-
In order to generate a CSR: a. Open the KeyChain Access of your mac. b. Go to Keychain Access >> Certificate Assistance > Request a Certificate from a Certificate Authority.
c. Add your email address and select “Save to disk” option, and click “Continue”
d. Save the Certificate Signing Request (CSR) into your Mac.
-
Once you have created your CSR, press “Choose File” and select the certSign created on step #7. Click “Continue” and you are done.
-
The new Certificate has been created. Now you need to download it:
-
Search for the downloaded file (usually named voip_services.cer) and double click on it to install it on your Mac. And that’s all for now!
Obtain your Cert.pem and Key.pem files
In order to allow the Telnyx VoIP push service to send notifications to your app, you will need to export the VoIP certificate and key:
-
Open Keychain Access on your Mac (where you have installed the VoIP certificate by following the “Creating a VoIP push certificate” instructions).
-
Search for “VoIP services” and verify that you have the certificate installed for the BundleID of your application.
-
Open the contextual menu and select “Export”:
-
Save the .p12 file (A password will be requested before saving it):
-
Once the certificate is created you will need to run the following commands to obtain the cert.pem and key.pem files:
$ openssl pkcs12 -in PATH_TO_YOUR_P12 -nokeys -out cert.pem -nodes
$ openssl pkcs12 -in PATH_TO_YOUR_P12 -nocerts -out key.pem -nodes
$ openssl rsa -in key.pem -out key.pem
NoteAfter pasting the above content, Kindly check and remove any new line added
- Now you can go to your Portal account and configure your PN credential.
Setup your iOS VoIP credentials on your Portal
Create an iOS Push Credential:
-
Go to portal.telnyx.com and login.
-
Go to the API Keys section on the left panel.
-
From the top bar go to the Credentials tab and select “Add” >> iOS Credential
-
Set a credential name (You can use your app bundle ID to easy identify your PN credential) and then copy and paste the contents of your cert.pem and key.pem files into the defined sections (Notice that you need to copy from ---BEGIN ####--- to ---END--- sections including those marks):
-
Save the new push credential by pressing the Add Push Credential button.
Assign your iOS Push Credential to a SIP Connection:
- Go to the SIP Connections section on the left panel.
- Open the Settings menu of the SIP connection that you want to add a Push Credential or create a new SIP Connection.
- Select the WEBRTC tab.
- Go to the iOS Section and select the PN credential created on “Create an iOS Push Credential”
That’s done. You can now go to your code and start implementing PushKit and Callkit using the TelnyxRTC SDK and receive VoIP push notifications into your iOS device.