PortSIP Knowledge Base
  • PortSIP Communications Solution
    • What is PortSIP?
    • The Advantages of PortSIP PBX vs. Other PBXs
    • Cloud PBX Empowering Service Providers
    • Simplifying Unified Communications with WebRTC and SIP
    • What is CPaaS? Communications Platform as a Service Explained
    • UCaaS is Unified Communications as a Service
    • PortSIP PBX Administration Guide
      • Overview
      • PortSIP Security Features
      • Summary of Changes
      • Before Started
      • 1 Installation of the PortSIP PBX
        • Installation of PortSIP PBX v22.x
          • Install PortSIP PBX on Linux
          • Install PortSIP IM Server on Linux
          • Install PortSIP PBX on Windows
          • Upgrade to the Latest Version Within v22.x on Linux
          • Upgrade to the Latest v22.x on Windows
          • Upgrade v16.x to the Latest v22.x on Linux
        • Installation of PortSIP PBX v16.x
          • Upgrade to the Latest v16.x Release
      • 2 Configuring the PortSIP PBX
      • 3 Tenant Management
      • 4 Phone Device Management
        • Managing Phones
        • Auto Provisioning Security
        • Custom IP Phone Template
        • Bulk Importing Users and Auto Provisioning IP Phones
        • Zero Touch Provisioning Phones
        • Provision Phone Using PnP
        • PnP Auto Provisioning IP Phone Multicast Debug
        • Provision Phone Using RPS
        • Provision Phone Using DHCP Option 66
        • Provision Phone Using TFTP
        • Provisioning Cisco 79xx IP Phones
        • Provision Fanvil DECT IP Phones
        • Provision Yealink DECT IP Phones
        • Provision SNOM DECT IP Phones
        • Configuring Private RPS Account
      • 5 User Management
        • Users
        • How to Configure the Endpoints?
        • User Groups
        • DND and Automatic Callback
        • Speed Dial 8
        • Speed Dial 100
      • 6 Transport Management
      • 7 Trunk Management
        • Configuring SIP Trunk
        • Handle Outbound Calls Through SIP Trunk
      • 8 Call Route Management
        • Configuring Inbound Rule
        • Configuring Outbound Rule
      • 9 Configuring PortSIP SBC
        • Topology
        • Summary of Changes
        • Installation PortSIP SBC v11.x
        • Installation PortSIP SBC v10.x
        • Configuring PortSIP SBC for WebRTC
        • Upgrade to the Latest v11.x Release
        • Upgrade to the Latest v10.x Release
      • 10 Configuring SBC for MS Teams
        • Architecture
        • Configuring Microsoft Teams
        • Configuring SBC and PBX
        • Configure an SBC for Multiple Tenants
      • 11 Deploy the SBC Cluster
      • 12 Configuring Virtual Receptionist
        • Managing Virtual Receptionist
        • Visual IVR Editor Guide
        • Direct Inward System Access (DISA)
      • 13 Configuring Ring Group
      • 14 Call Parking
        • PortSIP Call Parking Feature
        • Using Call Parking Feature
        • Using Enhanced Call Park on Fanvil IP Phones
        • Using Enhanced Call Park on Yealink IP Phones
        • Using Enhanced Call Park on Grandstream IP Phones
        • Using Enhanced Call Park on Dinstar IP Phones
      • 15 Shared Voicemail
      • 16 Call Queue
        • Configuring Call Queue
        • Configuring Queue Callback
        • Agent States and Work Modes
        • Skills-Based Routing
        • Silent Monitoring
        • Wallboards
      • 17 Roles and Permissions
      • 18 E164 Number Processing
      • 19 Billing
      • 20 CDR and Call Recordings
        • CDR
        • Call Recordings
        • CDR Field Descriptions
      • 21 Call Reports
      • 22 Dealers
      • 23 Feature Access Codes
      • 24 Call Pickup
      • 25 Meetings
        • Joining a Meeting with the Invite Link
      • 26 Hot Desking
      • 27 STIR/SHAKEN
        • Configuring STIR/SHAKEN
      • 28 Digital Engagement Channels
        • SMS Channel
        • WhatsApp Channel
        • Manage SMS/WhatsApp Message Conversations
      • 29 Integrations
        • Microsoft 365 Integration
        • Google Workspace Integration
      • 30 Office Hours and Holiday Schedule
        • Configuring Office Hours and Holiday Schedule
        • Routing Calls Based on Office Hours and Holidays
      • 31 Configuring Email Notifications
      • PBX and SIP Trunk using PortSIP SBC
      • SIP Header Manipulation
      • Rebranding PortSIP PBX, SBC
      • System Service Extension Numbers
      • Certificates for TLS/HTTPS/WebRTC
        • Preparing TLS Certificates
        • Update Certificates
      • Backup and Restore: An Essential Guide
        • Backup and Restore PortSIP PBX
        • Backup and Restore PortSIP SBC
      • Storing Into AWS S3
      • Storing Into Azure Blob Storage
      • Trace Server - A Better Way to Monitoring SIP Messages and QoS for PortSIP PBX
    • Configuring SIP Trunks
      • QuestBlue SIP Trunk
        • Purchase a DID on QuestBlue Platform
        • Configuring QuestBlue IP Authentication Trunk
        • Configuring QuestBlue Register Authentication Trunk
        • Configuring Outbound & Inbound Calls
        • QuestBlue SMS Integration
      • Twilio SIP Trunk
        • Purchase a DID on the Twilio
        • Configuring Twilio Register Based Trunk
        • Configuring Twilio Interconnect Trunk
        • Configuring Outbound & Inbound Calls
        • Twilio SMS Integration
      • Telnyx SIP Trunk
        • Purchase a DID on Telnyx Platform
        • Configuring Telnyx IP Authentication Trunk
        • Configuring Telnyx Register Authentication Trunk
        • Configuring Outbound & Inbound Calls
        • Telnyx SMS Integration
      • Vonage SIP Trunk
        • Purchase a DID on Vonage Platform
        • Configuring Vonage IP Authentication Trunk
        • Configuring Vonage Register Authentication Trunk
        • Configuring Outbound & Inbound Calls
        • Vonage SMS Integration
      • VoIP.ms SIP Trunk
        • Purchase a DID on VoIP.ms
        • Configuring VoIP.ms Register Based Trunk
        • Configuring Outbound & Inbound Calls
        • VoIP.ms SMS Integration
      • Voxtelesys SIP Trunk
        • Purchase a DID on Voxtelesys Platform
        • Configuring Voxtelesys IP Authentication Trunk
        • Configuring Voxtelesys Register Authentication Trunk
        • Configuring Outbound & Inbound Calls
        • Voxtelesys SMS Integration
      • Wavix SIP Trunk
        • Purchase a DID on Wavix Platform
        • Configuring Wavix IP Authentication Trunk
        • Configuring Wavix Digest Trunk
        • Configuring Outbound & Inbound Calls
        • Wavix SMS Integration
      • VoIP Innovations SIP Trunk
        • Purchase a DID on VoIP Innovations Platform
        • Configuring VoIP Innovations IP Authentication Trunk
        • Configuring Outbound & Inbound Calls
        • VoIP Innovations SMS Integration
      • Bandwidth SIP Trunk
        • Purchase a DID on Bandwidth Platform
        • Configuring Bandwidth IP Authentication Trunk
        • Configuring Outbound & Inbound Calls
        • Bandwidth SMS Integration
      • Flowroute SIP Trunk
        • Purchase a DID on Flowroute Platform
        • Configuring Flowroute IP Authentication Trunk
        • Configuring Outbound & Inbound Calls
        • Flowroute SMS Integration
      • Gamma SIP Trunk
      • Aire Networks SIP Trunk
      • VoiceMeUp SIP Trunk
        • Configuring VoiceMeUp Trunk
        • VoiceMeUp SMS Integration
    • PBX Cluster (v22.x)
      • Topology
      • Preparing Cluster Servers
      • Configuring Cluster Servers
      • Managing Cluster
    • High Availability (v22.x)
      • High Availability and Sclability On-Premise
        • PortSIP PBX High Availability Architecture
        • High Availability Installations on Ubuntu
        • Upgrading High Availability Installation
        • Scaling Servers On-Premise for High Availability
        • Scaling SBC On-Premise for High Availability
        • Scaling IM Server On-Premise for High Availability
      • High Availability and Scalability on AWS
        • PortSIP PBX High Availability Architecture
        • High Availability Installations on AWS
        • Upgrading High Availability Installation
        • Increase Size of EBS Volume
        • Scaling Servers on AWS for High Availability
    • PBX Cluster(v16.x)
      • Topology
      • Preparing Cluster Servers
      • Configuring Cluster Servers
      • Managing Cluster
      • Configuring Cluster Servers for High Availability
    • High Availability (v16.x)
      • High Availability for On-Premise
        • PortSIP PBX High Availability Architecture
        • High Availability Installations on Ubuntu
        • Upgrading High Availability Installation
      • High Availability and Scalability on AWS
        • PortSIP PBX High Availability Architecture
        • High Availability Installations on AWS
        • Upgrading High Availability Installations
        • Increase Size of EBS Volume
        • Scaling Servers on AWS for HA
    • PortSIP UCaaS
    • FAQ
      • Troubleshooting Call Issues
      • How to Activate License key?
      • What is the Multi-Tenant PBX?
      • Is the PortSIP PBX built on Asterisk, FreeSwitch?
      • What is the SBC?
      • What is the PBX? Features, Benefits
      • What File Format Is Required for PortSIP PBX Prompt?
      • What is Direct Inward Dialing (DID)?
      • What is the DID Pool?
      • What are IP Phones Work with PortSIP PBX?
      • Hardware Specifications
      • How to Adjust the REST API Rate Limit?
      • SIP Status Code of Response
      • What is SIP ALG and Why You Need to Disable It?
      • Essential Factors for Choosing a Could PBX Solution
      • Migrate from legacy FCM APIs to HTTP v1 for Android Push Notifications
      • PortSIP SDK License Agreement
      • PortSIP Software End-User License Agreement
  • Apps Guides
    • PortSIP ONE Desktop App
      • Sign in to PBX
      • Calls, Messages, and Voicemails
      • Customize Your Caller ID
      • SMS and WhatsApp Messaging
      • Click to Call
      • Calling from Another Device
      • Change Your Call Queue Status
    • PortSIP ONE Mobile App
      • Sign in to PBX
      • Calls, Messages, and Voicemails
      • Customize Your Caller ID
      • SMS and WhatsApp Messaging
      • Change Your Call Queue Status
    • PortSIP Softphone
  • DEVELOPING WITH PORTSIP
    • Getting Started
    • Calling APIs
      • User Manual for Windows
      • User Manual for iOS
      • User Manual for Android
      • User Manual for macOS
    • REST APIs
      • Version 22.0
        • About
        • API reference
          • Info
          • Login
            • By microsoft
          • Logout
          • Network
          • Sbc
            • Token
              • Destroy
          • Im
            • Token
              • Destroy
          • Dealers
            • Password
            • Destroy
          • Mobile push
            • Destroy
          • Ip filters
            • Destroy
            • Export
          • Transports
            • Destroy
            • Status
          • Tenants
            • Switch
            • Dealers
              • Destroy
            • Destroy
          • Tenant
            • Status
            • Notification
            • Password policy
            • Billing
            • Balance
            • Custom headers
          • Conference servers
            • Status
            • Destroy
          • Media servers
            • Status
            • Destroy
          • License
          • Key
          • Brand
          • Dealer
            • Status
            • Username
            • Password
          • Roles
            • Destroy
          • User
            • Password
            • Extension password
            • Profile
            • Status
            • Presence
            • Balance
            • Greetings
              • Enable
              • Disable
              • Destroy
            • Phones
              • Destroy
            • Cdrs
              • Sync tokens
                • Diff
            • Recordings
              • Destroy
            • Speed dial 8
              • Destroy
            • Speed dial 100
              • Destroy
            • Meetings
              • Destroy
              • Status
              • Mute
              • Unmute
              • Lock
              • Unlock
              • Start
              • Stop
              • Start recording
              • Stop recording
              • Participants
                • Layout
                • Invite
                • Mute
                • Unmute
                • Chairman
                • Position
                • Destroy
            • Holidays
              • Destroy
            • Global holidays
            • Contacts
              • Favorite
              • Unfavorite
              • Destroy
              • Sync tokens
                • Diff
            • Call queues
              • Agent
            • Outbound caller ids
            • Ring groups
            • Business contacts
              • Favorite
              • Unfavorite
              • Sync tokens
                • Diff
            • Extension contacts
              • Favorite
              • Unfavorite
              • Sync tokens
                • Diff
          • Users
            • Profile
            • Password
            • Extension password
            • Role
            • Ms365 binding
              • Destroy
            • Destroy
            • Status
              • Destroy status
            • Balance
            • Greetings
              • Enable
              • Disable
              • Destroy
            • Phones
              • Destroy
            • Holidays
              • Destroy
            • Global holidays
            • Call queues
              • Agent
            • Speed dial 8
              • Destroy
            • Speed dial 100
              • Destroy
          • Extension numbers
          • Groups
            • Destroy
            • Members
              • Destroy
          • Voicemails
            • Set read
            • Set unread
            • Destroy
          • Recordings
            • Destroy
          • Call queue servers
            • Status
            • Destroy
          • Call queues
            • Status
            • Destroy
            • Waiting
              • Pickup
            • Agents
          • Exclusive numbers
            • Destroy
            • Call queues
              • Agents
              • Destroy
            • Export
          • Vip numbers
            • Destroy
            • Export
          • Call queue blacklisted numbers
            • Destroy
            • Export
          • Call queue blacklist prompts
          • Sessions
            • Directly
            • Hold
            • Unhold
            • Refer
            • Attended refer
            • Destroy
          • Conference rooms
            • Destroy
            • Status
            • Mute
            • Unmute
            • Lock
            • Unlock
            • Start recording
            • Stop recording
            • Participants
              • Layout
              • Invite
              • Mute
              • Unmute
              • Chairman
              • Position
              • Destroy
            • Recordings
              • Destroy
              • Set read
              • Set unread
          • Contacts
            • Destroy
            • Export
          • Emergency numbers
            • Destroy
          • Files
            • Destroy
          • Blobs
            • Uploads
              • Append
              • Complete
              • Status
              • Destroy
          • Inbound rules
            • Destroy
            • Export
          • Moh server
            • Musics
              • Destroy
          • Monitor
          • Monitor groups
            • Destroy
            • Members
              • Destroy
            • Managers
              • Destroy
          • Call park
          • Call park groups
            • Destroy
            • Members
              • Destroy
          • Call pickup groups
            • Destroy
            • Members
          • Voicemail
          • Acb
          • Outbound rules
            • Destroy
            • Export
            • Applied groups
              • Destroy
          • Phone models
          • Phones
            • Reprovision
            • Assignee
            • Reboot
            • Reject
          • Dect phone models
          • Dect phones
            • Destroy
            • Members
          • Providers
            • Status
            • Destroy
            • Export
            • Assignees
              • Destroy
          • Ring groups
            • Agents
            • Destroy
          • Shared voicemails
            • Destroy
            • Voicemails
              • Set read
              • Set unread
              • Destroy
            • Greetings
              • Enable
              • Disable
              • Destroy
          • Holidays
            • Destroy
          • Allowed country codes
          • Disallowed codes
            • Destroy
            • Export
          • Blacklisted numbers
            • Destroy
            • Export
          • Call rates
            • Destroy
            • Export
          • Ivr servers
            • Status
            • Destroy
          • Ivrs
            • Status
            • Destroy
            • Action urls
              • Destroy
          • Hotdesking
            • Status
            • Logout
            • Destroy
          • Sms
            • Destroy
          • Whatsapp
            • Destroy
          • Cdrs
          • Call reports
            • Destroy
          • Completed call reports
            • Destroy
          • Feature access codes
          • Default email templates
          • Custom email templates
          • Audit logs
          • Event logs
          • Test email
          • Ms365
            • Certificate
            • Users
          • Admin
            • Status
            • Username
            • Password
            • Settings
            • Notification
          • Templates
            • Phones
              • Destroy
        • Specification
      • Version 22.1
        • About
        • API reference
          • Info
          • Login
            • By microsoft
          • Logout
          • Network
          • Sbc
            • Token
              • Destroy
          • Im
            • Token
              • Destroy
          • Dealers
            • Password
            • Destroy
          • Mobile push
            • Destroy
          • Ip filters
            • Destroy
            • Export
          • Transports
            • Destroy
            • Status
          • Tenants
            • Switch
            • Dealers
              • Destroy
            • Destroy
          • Tenant
            • Status
            • Notification
              • Test email
            • Password policy
            • Billing
            • Balance
            • Custom headers
          • Conference servers
            • Status
            • Destroy
          • Media servers
            • Status
            • Destroy
          • License
          • Key
          • Brand
          • Dealer
            • Status
            • Username
            • Password
          • Roles
            • Destroy
          • User
            • Password
            • Extension password
            • Profile
            • Status
            • Presence
            • Balance
            • Greetings
              • Enable
              • Disable
              • Destroy
            • Phones
              • Destroy
            • Cdrs
              • Sync tokens
                • Diff
            • External messages
            • Recordings
              • Destroy
            • Speed dial 8
              • Destroy
            • Speed dial 100
              • Destroy
            • Meetings
              • Destroy
              • Status
              • Mute
              • Unmute
              • Lock
              • Unlock
              • Start
              • Stop
              • Start recording
              • Stop recording
              • Participants
                • Layout
                • Invite
                • Mute
                • Unmute
                • Chairman
                • Position
                • Destroy
            • Holidays
              • Destroy
            • Global holidays
            • Contacts
              • Favorite
              • Unfavorite
              • Destroy
              • Sync tokens
                • Diff
            • Call queues
              • Agent
            • Outbound caller ids
            • Ring groups
            • Business contacts
              • Favorite
              • Unfavorite
              • Sync tokens
                • Diff
            • Extension contacts
              • Favorite
              • Unfavorite
              • Sync tokens
                • Diff
          • Users
            • Profile
            • Password
            • Extension password
            • Role
            • Ms365 binding
              • Destroy
            • Destroy
            • Status
              • Destroy status
            • Balance
            • Greetings
              • Enable
              • Disable
              • Destroy
            • Phones
              • Destroy
            • Holidays
              • Destroy
            • Global holidays
            • Call queues
              • Agent
            • Speed dial 8
              • Destroy
            • Speed dial 100
              • Destroy
          • Extension numbers
          • Groups
            • Destroy
            • Members
              • Destroy
          • Voicemails
            • Set read
            • Set unread
            • Destroy
          • Recordings
            • Destroy
          • Call queue servers
            • Status
            • Destroy
          • Call queues
            • Status
            • Destroy
            • Waiting
              • Pickup
            • Agents
          • Exclusive numbers
            • Destroy
            • Call queues
              • Agents
              • Destroy
            • Export
          • Vip numbers
            • Destroy
            • Export
          • Call queue blacklisted numbers
            • Destroy
            • Export
          • Call queue blacklist prompts
          • Sessions
            • Directly
            • Hold
            • Unhold
            • Refer
            • Attended refer
            • Destroy
          • Conference rooms
            • Destroy
            • Status
            • Mute
            • Unmute
            • Lock
            • Unlock
            • Start recording
            • Stop recording
            • Participants
              • Layout
              • Invite
              • Mute
              • Unmute
              • Chairman
              • Position
              • Destroy
            • Recordings
              • Destroy
              • Set read
              • Set unread
          • Contacts
            • Destroy
            • Export
          • Emergency numbers
            • Destroy
          • Files
            • Destroy
          • Blobs
            • Uploads
              • Append
              • Complete
              • Status
              • Destroy
          • Inbound rules
            • Destroy
            • Export
          • Moh server
            • Musics
              • Destroy
          • Monitor
          • Monitor groups
            • Destroy
            • Members
              • Destroy
            • Managers
              • Destroy
          • Call park
          • Call park groups
            • Destroy
            • Members
              • Destroy
          • Call pickup groups
            • Destroy
            • Members
          • Voicemail
          • Acb
          • Outbound rules
            • Destroy
            • Export
            • Applied groups
              • Destroy
          • Phone models
          • Phones
            • Reprovision
            • Assignee
            • Reboot
            • Reject
          • Dect phone models
          • Dect phones
            • Destroy
            • Members
          • Providers
            • Status
            • Destroy
            • Export
            • Assignees
              • Destroy
          • Ring groups
            • Agents
            • Destroy
          • Shared voicemails
            • Destroy
            • Voicemails
              • Set read
              • Set unread
              • Destroy
            • Greetings
              • Enable
              • Disable
              • Destroy
          • Holidays
            • Destroy
          • Allowed country codes
          • Disallowed codes
            • Destroy
            • Export
          • Blacklisted numbers
            • Destroy
            • Export
          • Call rates
            • Destroy
            • Export
          • Ivr servers
            • Status
            • Destroy
          • Ivrs
            • Status
            • Destroy
            • Action urls
              • Destroy
          • Hotdesking
            • Status
            • Logout
            • Destroy
          • Sms
            • Destroy
          • Whatsapp
            • Destroy
          • Cdrs
          • Calllogs
          • External messages
          • Call reports
            • Destroy
          • Completed call reports
            • Destroy
          • Feature access codes
          • Default email templates
          • Custom email templates
          • Audit logs
          • Event logs
          • Ms365
            • Certificate
            • Users
          • Google
          • Admin
            • Status
            • Username
            • Password
            • Settings
            • Notification
              • Test email
            • Ms365
              • Certificate
            • Google
          • Templates
            • Phones
              • Destroy
        • Specification
      • Authentication
      • Accessing CDRs and Recordings
    • Call Control APIs
    • Messaging APIs
      • Protocol
      • API Examples
    • WSI: Pub/Sub
    • Webhook Events
      • Registering a Webhook
      • Receiving Events via a Webhook
      • Event Reference
    • Mobile Push Notifications
      • How Do Push Notifications Work with PortSIP PBX?
      • Integrating the Push Notifications in Native iOS APP
      • Integrating the Push Notifications in Android APP
  • PBX v12.x (EOL)
    • PortSIP PBX v12.x is EOL
    • High Availability
      • PortSIP PBX High Availability
      • UCaaS High Availability
      • Deploy the PortSIP PBX HA on AWS
      • Deploy PortSIP PBX HA for CentOS
      • Deploy PortSIP PBX HA for Ubuntu
      • Migrate the HA data
    • Push Notifications
      • How do push notifications work with PortSIP PBX?
      • Implement the PUSH notifications in Xamarin iOS APP with PortSIP PBX 12.x
      • Implement the PUSH notifications in native iOS APP with PortSIP PBX 12.x
      • Implement PUSH notifications in Android APP with PortSIP PBX 12.x
      • Implement PUSH notifications in Xamarin Android APP with PortSIP PBX 12.x
    • Tutorials
      • REST API Examples
      • Trace server - A Better Way to Debug PortSIP UC
      • Setup SSL Certificates for HTTPS/WebRTC
      • Going Real-Time with PortSIP PBX Pub/Sub
      • Upgrade PortSIP PBX for offline
      • PortSIP UC Architecture
      • PortSIP PBX Features
      • PortSIP Security Feature
      • Hardware Specifications
      • Setup PortSIP PBX for Linux
      • Upgrade PortSIP PBX
      • Upgrade PortSIP PBX v12.x to the v12.8.7
      • Add Extended Media Server
      • Store the recording files to AWS S3
      • Configure Notifications for Kubernetes
      • Rebranding PortSIP PBX
Powered by GitBook
On this page
  • 1. VoIP Notifications
  • 2. Prerequisite Settings
  • 3. Creating an App ID
  • 4. Adding google-services.json to Your App Folder
  • 5. Configuring Gradle Files
  • 6. Adding Services to Your App
  • 7. Testing and Sending Your First Push Notification
  • 8. Adding SIP Header X-Push to REGISTER Message
  • 9. Possible Problems
  • 10. Getting Server Key and Sender ID
  • 11. Configuring PortSIP PBX
  1. DEVELOPING WITH PORTSIP
  2. Mobile Push Notifications

Integrating the Push Notifications in Android APP

PreviousIntegrating the Push Notifications in Native iOS APPNextPortSIP PBX v12.x is EOL

Last updated 5 months ago

# Integrating the Push Notifications in Android APP

This guide provides step-by-step instructions on how to create an Android app using the PortSIP VoIP SDK to receive VoIP push notifications sent from PortSIP PBX.

1. VoIP Notifications

The official documentation can be found here. Some of the advantages include:

  • The app is automatically relaunched if it’s not running when a VoIP push is received.

  • The device is woken up only when a VoIP push occurs, saving battery life.

  • VoIP pushes go straight to your app for processing and are delivered without delay.

2. Prerequisite Settings

Since PortSIP PBX uses Google Firebase to send push notifications, we need to configure some settings to get this working.

3. Creating an App ID

  1. Add a new project to the Firebase console.

  2. Set the project name and country. For example, you can name your project SIPSample.

  1. Select the SIPSample Project

  1. Select “Project settings”

  1. Select “Android platform”

  1. Set a package name for your app. I only set my package name and omit the SHA-1 because I do not use Firebase for my app's authentication.

  1. Click the REGISTER APP button to download google-services.json. This is an important file, and you will need to place it into your app.

Please note that the Android package name is also referred to as the App ID. We will use it in future settings.

4. Adding google-services.json to Your App Folder

  1. Download the PortSIP VoIP SDK Sample Project: Obtain the sample project and open the PUSH SIPSample project using Android Studio.

  2. Replace the google-services.json File: Navigate to the SIPSample folder and replace the existing google-services.json file with the one you just downloaded.

  3. Load the Google Services Plugin: The Google services plugin for Gradle will automatically load the new google-services.json file.

5. Configuring Gradle Files

  1. Open Android Studio: Launch Android Studio and navigate to your project.

  2. Modify the build.gradle Files: Update your Gradle files to integrate the Google services plugin.

    • Update the Project-Level build.gradle: Open the build.gradle file located in your project folder and add the following line:

buildscript {
dependencies {
classpath 'com.google.gms:google-services:3.1.0' // Add this line
}
}
  • Update the App-Level build.gradle: Open the build.gradle file located in your project/SIPSample folder and add the below line at the end of the file.

apply plugin: 'com.google.gms.google-services'
  • Add Firebase Dependencies: Include the necessary Firebase dependencies under the dependencies section in the same build.gradle file.

dependencies {
// this line must be included to integrate with Firebase
compile 'com.google.firebase:firebase-core:20.0.0'
// this line must be included to use FCM
compile 'com.google.firebase:firebase-messaging:20.0.0'
}
  • Update Google Play Services: If your project uses any functions from com.google.android.gms:play-services (e.g., GPS location), you need to update their versions as well. As of writing this tutorial, version 20.0.0 works well. If you encounter compilation problems, check for the correct version number.

compile 'com.google.android.gms:play-services-auth:20.0.0' &#xNAN;compile 'com.google.android.gms:play-services-identity:20.0.0'

  • Add applicationId to defaultConfig Section: In the defaultConfig section of your build.gradle file, add the applicationId:

android {
defaultConfig {
applicationId "com.portsip.SIPSample" // this is the id that your app has
} }

6. Adding Services to Your App

To use Firebase Cloud Messaging (FCM) in your app, you need to add two services: one for testing if push notifications work, and another for receiving or sending messages according to your app’s design.

  1. Add a Service that Extends FirebaseMessagingService: To receive notifications in your app, create a service that extends FirebaseMessagingService. Here’s an example:

public class MyFirebaseMessagingService extends FirebaseMessagingService {
	private static final String TAG = "FCM Service";
	@Override
	public void onMessageReceived(RemoteMessage remoteMessage) {
		// TODO: Handle FCM messages here.
		// If the application is in the foreground handle both data and notification messages here.
		// Also if you intend on generating your own notifications as a result of a received FCM
		// message, here is where that should be initiated.
		Map<String, String> data = remoteMessage.getData();
		String type=data.get("msg_type")//”audio” ”video” ”im”
		String content = data.get("msg_content");
		String from = data.get("send_from");
		String to = data.get("send_to");
		String xpushid = data.get("x-push-id");
		//new version (Portsip pbx>12.0)
		String mimeType = data.get("mime_type");
	}
	@Override
	public void onNewToken(String s) {
		sendRegistrationToServer(s);
	}
	private void sendRegistrationToServer(String token) {
		Intent intent = new Intent(this,MyService.class);
		intent.setAction(MyService.ACTION_TOKENREFRESH );
		intent.putExtra(MyService.DEVICE_TOKEN,token);
		startService(intent);
	}
}
  • Add the Service to AndroidManifest.xml: To ensure your service is recognized by the system, add it to your AndroidManifest.xml file:

<service android:name=".MyFirebaseMessagingService">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT"/>
</intent-filter>
</service>

7. Testing and Sending Your First Push Notification

To verify that your setup works, follow these steps to send a test message to your mobile device:

  1. Install and run the app on the target device.

  2. Make sure the app is in the background on the device.

  3. In the Firebase console, open the Messaging page.

  4. If this is your first message, select Create your first campaign.

    a. Select Firebase Notification messages and select Create.

  5. Otherwise, on the Campaigns tab, select New campaign and then Notifications.

  6. Enter the message text. All other fields are optional.

  7. Select Send test message from the right pane.

  8. In the field labeled Add an FCM registration token, enter the registration token you obtained in a previous section of this guide.

  9. Select Test.

After you select Test, you should receive a push notification on your Android mobile. If your app is running in the background, you will see it in the mobile’s notification center. Otherwise, you can see it in your Android Monitor log (ensure you have code to log incoming messages) like this:

Log.d(TAG, "Notification Message Body: " + remoteMessage.getNotification().getBody());

If the setup is successful, you should get a notification on your mobile. Sometimes, it may take a couple of minutes for the message to be sent and received, so just be patient and wait for a little while.

8. Adding SIP Header X-Push to REGISTER Message

To inform PortSIP PBX that this client has enabled push notifications, you need to add the SIP header X-Push to the REGISTER message. Here’s an example of how to do this:

import android.app.Service;
import android.content.Intent;
import android.text.TextUtils;
import android.util.Log;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.iid.FirebaseInstanceId;
import com.google.firebase.iid.InstanceIdResult;
import com.portsip.PortSipSdk;
import androidx.annotation.NonNull;
public class MyService extends Service implements OnPortSIPEvent
{
	String pushToken = null ;
	public static final String ACTION_TOKENREFRESH = "token_refresh";
	public static final String DEVICE_TOKEN = "deviceToken";
	public PortSipSdk mSipSdk;
	String appid=”com.portsip.SIPSample”;
	//you app id
	@Override
	public void onCreate() {
		...
		//get device token
		try {
			//
			FirebaseInstanceId.getInstance().getInstanceId()
			.addOnCompleteListener(new OnCompleteListener<InstanceIdResult>() {
				@Override
				public void onComplete(@NonNull Task<InstanceIdResult> task) {
					if (!task.isSuccessful()) {
						return;
					}
					pushToken =task.getResult().getToken();
				}
			}
			);
		}
		catch (IllegalStateException e){
			Log.d("",e.toString());
		}
	}
	@Override
	public int onStartCommand(Intent intent, int flags, int startId) {
		if (intent != null && ACTION_TOKENREFRESH.equals(intent.getAction())) {
			pushToken = intent.getStringExtra(DEVICE_TOKEN);
			Boolean supportPush = true;
			setPushHeader(supportPush);
		}
		return START_REDELIVER_INTENT;
	}
	/**
* @param support true enable Push, false disable Push.
*/
	private void setPushHeader(Boolean support){
		if(TextUtils.isEmpty(pushToken )){
			String pushMessage = "device-os=android;device-uid=" + pushToken +";allow-call-push=”+support+”;allow-message-push=”+support+”;app-id=”+appid;
mSipSdk.addSipMessageHeader(-1,"REGISTER",1,"X-Push",pushMessage);
if(sdk is online){
mSipSdk.refreshRegistration(0);
}
}
}
}

9. Possible Problems

  • Compilation Issues: Compilation problems can often be related to incorrect version numbers in your build.gradle files. Ensure that all dependencies are using compatible versions.

  • Firebase Crash Analytics Warning: If you see a message like "com.google.firebase.crash.FirebaseCrash is not linked. Skipping initialization." in your Android Monitor log, it is okay. This message appears because we are not using the Firebase Crash Analytics service.

  • Firebase initialization is not starting

10. Getting Server Key and Sender ID

  1. Access Project Settings: In the Firebase console, click the Settings button and choose the Project Settings -> Cloud Messaging -> Mange Service Accounts.

  1. Srvice Accounts: click the Manage keys.

  1. Create new key

Choose Key type “JSON”, and click “CREATE”, you will get a JSON file, e.g: sipsample-c3789-c6a094e0e0e2.json

11. Configuring PortSIP PBX

  1. Sign In: Log in to the PortSIP PBX Web Portal.

  2. Navigate to Mobile PUSH Settings: Select the menu Settings > Mobile push notifications.

  3. Add a New App: Click the Add New App button. You will see the following screen:

Please set the following items:

  • Enabled: Check this option to enable push notifications. Uncheck it to disable PUSH notifications.

  • Server Type: Apple and Google both provide a production PUSH server and a development PUSH server for sending PUSH notifications. The development server is usually used during the development stage. Once your app is released, you can change this setting to the production server.

  • App ID: Enter the App ID that you created in step 3. Note: This ID is case-sensitive.

  • Google Server Key and Google Sender ID: Enter the key and ID that you noted in step 10.2.

Click the Apply button to enable the push service in PortSIP PBX.