MANUAL & FAQ

文章详情

使用Ubiix PBX在Android APP中实施推送通知
来源: | 作者:ubiixcn | 发布时间: 2192天前 | 636 次浏览 | 分享到:

本指南将逐步指导您如何创建基于Ubiix VoIP SDKAndroid应用程序, 以接收Ubiix PBX发送的VoIP推送通知。

1. VoIP通知

官方文档可以在这里找到。其中一些优点是:

如果收到VoIP推送时应用程序未运行,应用程序会自动重新启动

设备仅在发生VoIP推送时唤醒(以节省电池)

VoIP会直接推送到您的应用进行处理,并且无延迟地发送

如果收到VoIP推送时应用程序未运行,应用程序会自动重新启动

2.先决条件设置

由于Ubiix PBX使用Google Firebase发送推送通知,因此我们需要配置一些设置才能使其工作。

3.创建一个App ID

将新项目添加到Firebase控制台
您需要设置项目名称和国家。例如,我会打电话给我的项目SIPSamplePush

选择 Firebase添加到您的Android应用程序 ”。
为您的应用程序设置一个包名称。我只设置了我的软件包名称并省略了SHA-1,因为我没有将Firebase用于我的应用程序的身份验证。

点击此处的“ 注册应用程序按钮以下载google-services.json。这是一个重要的文件,你需要把它放到你的应用程序中。

重要提示:请注意,Android软件包名称也被称为“ 应用程序ID ”。我们将在未来的设置中使用它。

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

现在请下载Ubiix VoIP SDK示例项目并使用Android Studio将其打开。
替换谷歌,services.jsonSIPSample文件夹中。Gradle的Google服务插件将加载刚刚下载的google-services.json文件。

5.配置gradle文件

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

1)更新项目级别的build.gradle(项目文件夹中的一个)
将以下行添加到build.gradle文件中:

buildscript { 
dependencies { 
classpath'com.google.gms:google-services:3.1.0'//添加此行

}

2)更新应用程序级build.gradle(项目/ SIPSample中的一个
a。将下面的行添加到build.gradle文件的底部:

应用插件:'com.google.gms.google-services'

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

dependencies { 
//此行必须包含以与Firebase 
编译'com.google.firebase:firebase-core:11.0.4'整合
// //必须包含此行才能使用FCM 
编译'com.google.firebase:firebase-messaging :11.0.4' 
}

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

编译'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.ubiixsip.sipsamplepush”//这是你的应用程序拥有的id 
}}

6.将服务添加到应用程序

应该添加两项服务以使用Firebase云消息传递服务:测试推送通知的基本代码以及根据您的设计在应用中接收消息或发送消息的其他代码。

1)添加一个扩展FirebaseMessagingService的服务

为了能够在您的应用中接收任何通知,您应该添加一个扩展FirebaseMessagingService的服务,如下所示:

公共 MyFirebaseMessagingService 扩展了 FirebaseMessagingService {

private static final String TAG =“FCM Service”;

@覆盖

public void onMessageReceived(RemoteMessage remoteMessage){

// TODO: 在这里处理FCM消息。

//如果应用程序在前台处理数据和通知消息。

//此外,如果您打算根据收到的FCM生成您自己的通知

//消息,这里是应该启动的地方。

Log .d(TAG“From:”+ remoteMessage.getFrom());

Log .d(TAG“Notification Message Body:”+ remoteMessage.getNotification()。getBody());

}

}

将其添加到AndroidManifest.xml文件中。

<意图滤波器>
2)添加一个扩展FirebaseInstanceIdService的服务

将以下行添加到build.gradle文件中:

公共 FirebaseIDService 扩展了 FirebaseInstanceIdService {

private static final String TAG =“FirebaseIDService”;

@覆盖

public void onTokenRefresh(){

//获取更新的InstanceID令牌。

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

日志 .d(标记“刷新标记:”+刷新标记);

// TODO: 实现此方法,将任何注册发送到您应用的服务器。

sendRegistrationToServer(refreshedToken);

}

/ **

*持续令牌给第三方服务器。

*

*修改此方法以将用户的FCM InstanceID令牌与任何服务器端帐户相关联

*由您的应用程序维护。

*

* @参数标记新的标记。

* /

private void sendRegistrationToServer(String token){

//根据需要添加自定义实现。

}

}

将其添加到AndroidManifest.xml文件中。这确保服务已加载。

<意图滤波器>

7.测试并发送您的第一个推送通知

要查看设置是否有效,请通过向您自己的移动设备发送测试消息来运行测试。

Firebase控制台中,记下您的消息并选择一个应用。点击“ 发送消息 ”。

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

如果设置成功,您应该在手机上收到通知。有时候,邮件可能需要几分钟的时间才能发送和接收,所以请耐心等待一段时间。

8.在应用程序中启用推送

SIP头“ ubiix-push ”添加到REGISTER消息。我们使用它来通知Ubiix PBX此客户端已启用推送

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

如果(refreshedToken!= NULL){

String pushMessage =“device-os = android; device-uid =”+ refreshedToken +“; allow-call-push = true; allow-message-push = true; app-id = cn.ubiix.sipsamplepush”  ;

mSipSdk.addSipMessageHeader(-1,”登记”,1“,ubiix”,pushMessage);

}

mSipSdk.setInstanceId(info.getUUID()); //唯一标识此设备

(),info.getUserDisplayName

info.getUserdomain(),info.getSipServer(),info.getSipubiix‘’(),

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

如果你想禁用推送,你需要使用取消注册消息来通知Ubiix PBX

//通过UNREGISTER消息禁用推送

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

如果(refreshedToken!= NULL){

mSipSdk.clearAddedSipMessageHeaders();

String pushMessage =“device-os = android; device-uid =”+ refreshedToken +“; allow-call-push = false; allow-message-push = false; app-id = cn.ubiix.sipsamplepush”;

mSipSdk.addSipMessageHeader(-1,”登记”,1“,ubiix”,pushMessage);

日志。dubiix-push”,pushMessage);

}

mSipSdk.unRegisterServer();

9.可能的问题

编译问题可能与build.gradle文件中的错误版本号有关。

如果您看到诸如“com.google.firebase.crash.FirebaseCrash未链接的消息。跳过初始化“。在您的Android监视器日志中,这是可以的,因为我们不使用此Firebase Crash Analytics服务。

Firebase初始化未启动

10.获取服务器密钥和发件人ID

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

2)在“ 设置 ”标签中,点击“ 云消息传递 ”标签。你会看到“ 服务器密钥 ”和“ 发件人ID ”,请注意。


11. Ubiix PBX

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

点击“ 添加新应用程序 ”按钮,你会看到下面的屏幕:

请设置以下项目:

启用 - 选中它启用推送并取消选中禁用推送

Apple和Google都提供生产推送服务器和用于发送推送通知的开发推送服务器。开发生产服务器通常用于您的开发阶段。一旦您的应用程序发布,您可以将此设置更改为生产服务器。

应用程序ID - 您在步骤3中创建的ID。注意:此ID区分大小写。

Google服务器密钥和Google发件人ID--密钥和ID是您在步骤10.2中记录的密钥和ID。

点击“ 应用 ”按钮并在PBX中启用推送服务。