Skip to content
领先的融合通信产品与方案提供商 - 泛临科技领先的融合通信产品与方案提供商 - 泛临科技
  • 产品
    • PortSIP PBX
    • PortSIP SBC
    • PortSIP VoIP SDK
    • PortSIP UCAAS
    • PortSIP Softphone
  • 免费下载
    • 下载 PortSIP PBX
    • 下载 PortSIP SBC
    • 下载 PortSIP VoIP SDK
    • 下载 PortSIP Softphone
  • 资料手册中心
    • 资料手册中心
    • PortSIP PBX 功能列表
    • PortSIP PBX v16 用户手册
    • PBX v16.1 REST API 手册
    • PortSIP SBC 用户手册
    • PortSIP VoIP SDK 用户手册
  • 价格
    • PortSIP PBX 价格
    • PortSIP SBC 价格
    • PortSIP VoIP SDK 价格
    • PortSIP Softphone 价格
  • 合作伙伴
    • 申请合作
    • 技术合作伙伴
  • 公司
    • Blog
    • 支持
    • 联系我们
    • 服务
    • 关于我们
    • 中文
    • English

PortSIP® 知识库

获取产品教程和详细指南

使用 PortSIP PBX 在 Android 应用中实施推送通知

本指南详细指导您如何基于 PortSIP VoIP SDK 创建 Android 应用,且该应用能够接收从 PortSIP PBX 发出的 VoIP 通知。

1. VoIP 通知

官方文档可在此查看。其中优势包括:

  • 如果接收到 VoIP 推送时应用未在运行,则应用会自动重新启动
  • 仅当出现 VoIP 推送时才唤醒设备(节省电量)
  • VoIP 推送会实时直接发送到您的应用,供您处理,不会产生延迟
2. 先决条件设置

由于 PortSIP PBX 使用 Google Firebase 发送推送通知,我们需要配置部分设置,使其运行。

3. 创建 App ID

向 Firebase console 添加新应用。
您需要设置项目名称和国家或地区。例如,我可以将我的项目命名为 SIPSamplePush。

PortSIP PBX send PUSH notifications to mobile device

选择“向 Android 应用添加 Firebase”。
为您的应用设置数据包名称。由于我没有为应用认证使用 Firebase,我仅设置了数据包名,删去了 SHA-1。

PortSIP PBX send PUSH notifications to mobile device

单击此处的 REGISTER APP 按钮,下载 google-services.json。这个文件非常重要,您需要将其放置到应用中。

重要提醒:请注意,Android 数据包名也即“App ID”,我们还会将其用于未来设置。

4. 将 google-services.json 添加至您的应用文件夹

现在请下载 PortSIP VoIP SDK Sample project ,并使用 Android Studio 将其打开 (PUSH SIPSample project)。
替换 SIPSample 文件夹中的 google-services.json。Gradle 版的 Google 服务插件会加载您下载的 google-services.json 文件。

PortSIP PBX send PUSH notifications to mobile device

5. 配置 Gradle 文件

打开 Android Studio,修改 build.gradle 文件以使用 Google 服务插件。

(1) 更新项目级 build.gradle(项目文件夹中的文件)
将以下行的内容添加至 build.gradle 文件:

buildscript {
dependencies {
classpath 'com.google.gms:google-services:3.1.0' // Add this line
}
}

PortSIP VoIP SDK support PUSH notifications

(2) 更新应用级 build.gradle(项目/SIPSample 中的文件) 
a. 在 build.gradle 文件中添加下行内容:

apply plugin: 'com.google.gms.google-services'

b. 添加 Firebase 相关依赖关系:
在同一 build.gradle 文件下的依赖关系中添加 Firebase 相关依赖关系。

dependencies {
// this line must be included to integrate with Firebase
compile 'com.google.firebase:firebase-core:11.0.4'
// this line must be included to use FCM
compile 'com.google.firebase:firebase-messaging:11.0.4'
}

c. 更新使用的服务

com.google.android.gms:play-services:
如果您将 Firebase 添加到使用任何 gms:play-services 功能(例如 GPS 位置)的现有项目中,则也必须更新其版本。在编写本教程时,11.0.4 运行正常。如果遇到编译问题,您需要检查以找出正确的版本号。

compile 'com.google.android.gms:play-services-auth:11.0.4'
compile 'com.google.android.gms:play-services-identity:11.0.4'

d. 将 applicationId 添加至 defaultConfig 代码段:

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

 

PortSIP VoIP SDK support PUSH notifications

 
6. 向应用添加服务

要使用 Firebase Cloud Messaging 服务,需要添加两个服务:基础代码,用于测试推送通知是否正常运行;其他代码,用于根据您的设计在应用中处理接收或发送消息。

(1) 添加可扩展 FirebaseMessagingService 的服务

要在应用中接收任何通知,您添加可扩展 FirebaseMessagingService 的服务,如下所示:

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.

Log.d(TAG, "From: " + remoteMessage.getFrom());

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

}

}

将其添加至 AndroidManifest.xml 文件。

<service android:name=".MyFirebaseMessagingService">

<intent-filter>

<action android:name="com.google.firebase.MESSAGING_EVENT"/>

</intent-filter>

</service>

(2) 添加可扩展 FirebaseInstanceIdService 的服务

将下行内容添加至 build.gradle 文件:

public class FirebaseIDService extends FirebaseInstanceIdService {

private static final String TAG = "FirebaseIDService";

@Override

public void onTokenRefresh() {

// Get updated InstanceID token.

String refreshedToken = FirebaseInstanceId.getInstance().getToken();

Log.d(TAG, "Refreshed token: " + refreshedToken);

// TODO: Implement this method to send any registration to your app's servers.

sendRegistrationToServer(refreshedToken);

}

/**

* Persist token to third-party servers.

*

* Modify this method to associate the user's FCM InstanceID token with any server-side account

* maintained by your application.

*

* @param token The new token.

*/

private void sendRegistrationToServer(String token) {

// Add custom implementation as needed.

}

}

将其添加至 AndroidManifest.xml 文件,这可确保服务已加载。

<service android:name=".FirebaseIDService">

<intent-filter>

<action android:name="com.google.firebase.INSTANCE_ID_EVENT"/>

</intent-filter>

</service>

7. 测试和发送第一次推送通知

要确认设置是否成功,请运行一个测试,将测试消息发送给您自己的手机。

在 Firebase 控制台中,写下您的消息,然后选择一个应用。单击“发送消息”。

PortSIP VoIP SDK support PUSH notifications

现在,您应该在您的 Android 手机上收到了推送通知。如果您的应用程序正在后台运行,您将在手机的通知中心获得通知; 否则将在 Android 监控日志中看到(我们必须输入一个代码来记录收到的消息)。

如果设置成功,您将在手机上收到一条通知。有时可能需要等待数分钟发送和接收到通知,因此请耐心等候。

8. 在应用中启用推送

向 REGISTER 消息添加 SIP 消息头“x-p-push”。我们将使用该消息告知 PortSIP PBX,该客户端已启用了推送通知。

String refreshedToken = FirebaseInstanceId.getInstance().getToken();

if(refreshedToken!=null){

String pushMessage = "device-os=android;device-uid=" + refreshedToken +";allow-call-push=true;allow-message-push=true;app-id=com.portsip.sipsamplepush" ;

mSipSdk.addSipMessageHeader(-1,"REGISTER",1,"x-p-push",pushMessage);

}

mSipSdk.setInstanceId(info.getUUID());//Unique Identifiers this device

result = mSipSdk.setUser(info.getUserName(),info.getUserDisplayName(),info.getAuthName(),info.getUserPassword(),

info.getUserdomain(),info.getSipServer(),info.getSipPort(),

info.getStunServer(), info.getStunPort(), null, 5060);

如需禁用推送,请使用 unregister 消息告知 PortSIP PBX。

// Disable PUSH by UNREGISTER message

String refreshedToken = FirebaseInstanceId.getInstance().getToken();

if(refreshedToken!=null){

mSipSdk.clearAddedSipMessageHeaders();

String pushMessage = "device-os=android;device-uid=" + refreshedToken +";allow-call-push=false;allow-message-push=false;app-id=com.portsip.sipsamplepush" ;

mSipSdk.addSipMessageHeader(-1,"REGISTER",1,"x-p-push",pushMessage);

Log.d("x-p-push",pushMessage);

}

mSipSdk.unRegisterServer();

9. 可能出现的问题
  • 编译错误可能与 build.gradle 文件中的版本号码错误相关。
  • 如果您在 Android 监控日志中看到类似“com.google.firebase.crash.FirebaseCrash is not linked. Skipping initialization.”的消息,这是可以接受的,因为我们并未使用该 Firebase 崩溃分析服务。
  • Firebase initialization is not starting
10. 获取服务器密钥和发送方 ID

(1) 在 Firebase 控制台,单击“设置”按钮,然后选择“项目设置”菜单。

PortSIP VoIP SDK support PUSH notifications

(2). 在“设置”页签,单击“云通信”页签,您可以看到“服务器密钥”和“发送方 ID”,请记下这些信息。

PortSIP VoIP SDK support PUSH notifications

 
11. PortSIP PBX

现在登录至 PortSIP PBX 管理控制台,选择菜单“设置”>“移动推送”。

单击“添加新应用”按钮,您将看到以下屏幕:

PortSIP PBX send PUSH notifications to mobile device

请设置以下项:

  1. 已启用 - 选中以启动推送,取消选中即禁用推送。
  2. Apple 和 Google 均提供了生产推送服务器和部署推送服务器,用于发送推送通知。开发生产服务器通常用于开发阶段。应用发布后,您可将其设置更改为生产服务器。
  3. App ID – 您在第 3 步中创建的 ID。注意:该 ID 区分大小写。
  4. Google 服务器密钥和 Google 发送方 ID – 您在第 2 步记录的密钥和 ID。

单击“应用”按钮,推送服务即在 PBX 中启用。

About us

PortSIP 及其全球合作伙伴生态系统为任何环境提供灵活的统一通信解决方案,交付最佳用户体验、企业级解决方案、最广泛的多厂商集成和客户选择

Latest News
  • 16
    Jun
    升级 PortSIP SBC 到最新版本
  • 15
    Jun
    安装 PortSIP SBC
  • 14
    Jun
    升级 PortSIP PBX 到最新版本
  • 14
    Jun
    安装 PortSIP PBX
Signup for Newsletter
向行业专家学习通信领域的重大进步和创新知识,接收每月一期的最新企业通信邮件。
  • 产品
  • 免费下载
  • 资料手册中心
  • 价格
  • 合作伙伴
  • 公司
Copyright 2025 © PortSIP Solutions, Inc. 湘ICP备15007938号-1
  • 产品
    • PortSIP PBX
    • PortSIP SBC
    • PortSIP VoIP SDK
    • PortSIP UCAAS
    • PortSIP Softphone
  • 免费下载
    • 下载 PortSIP PBX
    • 下载 PortSIP SBC
    • 下载 PortSIP VoIP SDK
    • 下载 PortSIP Softphone
  • 资料手册中心
    • 资料手册中心
    • PortSIP PBX 功能列表
    • PortSIP PBX v16 用户手册
    • PBX v16.1 REST API 手册
    • PortSIP SBC 用户手册
    • PortSIP VoIP SDK 用户手册
  • 价格
    • PortSIP PBX 价格
    • PortSIP SBC 价格
    • PortSIP VoIP SDK 价格
    • PortSIP Softphone 价格
  • 合作伙伴
    • 申请合作
    • 技术合作伙伴
  • 公司
    • Blog
    • 支持
    • 联系我们
    • 服务
    • 关于我们
  • Buy now