MANUAL & FAQ
文章详情
本指南将逐步指导您如何创建基于Ubiix VoIP SDK的Android应用程序, 以接收Ubiix PBX发送的VoIP推送通知。
1. VoIP通知
官方文档可以在这里找到。其中一些优点是:
如果收到VoIP推送时应用程序未运行,应用程序会自动重新启动
设备仅在发生VoIP推送时唤醒(以节省电池)
VoIP会直接推送到您的应用进行处理,并且无延迟地发送
如果收到VoIP推送时应用程序未运行,应用程序会自动重新启动
2.先决条件设置
由于Ubiix PBX使用Google Firebase发送推送通知,因此我们需要配置一些设置才能使其工作。
3.在Firebase中创建一个新的应用程序项目
点击此处的“ 注册应用程序”按钮以下载google-services.json。这是一个重要的文件,你需要把它放到你的应用程序中。
重要提示:请注意,Android软件包名称也被称为“ 应用程序ID ”。我们将在未来的设置中使用它。
4.添加Xamarin Google Play服务基础包
由于Firebase云消息传递取决于Google Play服务,因此必须将Xamarin Google Play服务 - 基本软件包添加到Xamarin.Android项目中。您将需要29.0.0.2或更高版本。
在Visual Studio中,右键单击References>管理NuGet程序包...
单击浏览选项卡并搜索Xamarin.GooglePlayServices.Base。
将此软件包安装到ubiix.Android.Test项目中:
如果在安装NuGet期间出现错误,请关闭ubiix.Android.Test项目,再次打开它,然后重试NuGet安装。
注意:如果问题仍然存在,并显示错误消息“ 无法安装软件包:”Xamarin.GooglePlayServices.Base xx.xxxx.x “。您正尝试将此软件包安装到目标项目“MonoAndroid,Version = vx.0”中,而软件包不包含任何与此框架兼容的程序集引用或内容文件。有关更多详细信息,请联系软件包作者。“,请启动Visual Studio安装程序以升级最新版本。升级后,右键单击该项目,单击属性>目标框架以选择最新的平台。之后,重复步骤3。
当您安装Xamarin.GooglePlayServices.Base时,还会安装所有必需的依赖项。编辑MainActivity.cs并添加以下using语句:
使用Android.Gms.Common;
这个语句使GoogleApiAvailability类Xamarin.GooglePlayServices.Base可供ubiix.Android.Test代码。GoogleApiAvailability用于检查是否存在Google Play服务。
5.添加Xamarin Firebase消息传递包
要接收来自FCM的消息,必须将Xamarin Firebase - Messaging包添加到应用程序项目中。如果没有这个包,Android应用程序将无法接收来自FCM服务器的消息。
1.在Visual Studio中,右键单击References>管理NuGet程序包...
2.选中Include prerelease并搜索Xamarin.Firebase.Messaging。
3.将此软件包安装到ubiix.Android.Test项目中:
前两个语句使Xamarin.Firebase.Messaging NuGet包中的类型可用于ubiix.Android.Test代码。Android.Util添加了记录功能,用于观察与FMS的交易。
6.添加Google服务JSON文件
下一步是将google-services.json文件添加到项目的根目录中:
将google-services.json复制到项目文件夹。
将google-services.json添加到应用程序项目中(在解决方案资源管理器中单击显示所有文件,右键单击google-services.json,然后选择包含在项目中)。
在Solution Explorer窗口中选择google-services.json。
在Properties窗格中,将Build Action设置为GoogleServicesJson(如果未显示GoogleServicesJson构建操作,请保存并关闭解决方案,然后重新打开它):
当将google-services.json添加到项目中(并设置了GoogleServicesJson构建操作)时,构建过程将提取客户端ID和API密钥,然后将这些凭据添加到驻留在obj / Debug中的合并/生成的AndroidManifest.xml中/android/AndroidManifest.xml。此合并过程会自动添加连接到FCM服务器所需的任何权限和其他FCM元素。
7.检查Google Play服务
Google建议Android应用在使用Google Play服务功能前检查是否存在Google Play服务APK(有关更多信息,请参阅检查Google Play服务)。在以下示例中,OnCreate方法将在应用程序尝试使用FCM服务之前验证Google Play服务是否可用。将以下方法添加到MainActivity类中:
此代码会检查设备以查看Google Play Services APK是否已安装。如果未安装,则会在文本框中显示一条消息,指示用户从Google Play商店下载APK(或者在设备的系统设置中启用它)。
我们还需要使用 IsPlayServicesAvailable()来检测FCM在OnCreate 方法中是否可用 。
8.添加实例ID接收器
下一步是添加一个扩展FirebaseInstanceIdService的服务来处理Firebase注册令牌的创建,轮换和更新。(有关注册令牌的更多信息,请参阅使用FCM注册。)FCM需要FirebaseInstanceIdService服务才能将消息发送到设备。当FirebaseInstanceIdService服务添加到客户端应用程序时,应用程序会自动接收FCM消息,并在应用程序停止后显示为通知。
在Android清单中声明Receiver
编辑AndroidManifest.xml并将以下元素插入部分:
该XML执行以下操作:
声明一个为每个应用程序实例提供唯一标识符的FirebaseInstanceIdReceiver实现。该接收器还可以对动作进行认证和授权。
声明用于安全启动服务的内部FirebaseInstanceIdInternalReceiver实现。
该FirebaseInstanceIdReceiver是WakefulBroadcastReceiver接收FirebaseInstanceId和FirebaseMessaging事件,并将其传送到您从派生类FirebaseInstanceIdService。
9.将服务添加到应用程序
应添加两项服务以使用Firebase云消息传递服务:测试推送通知是否有效的基本代码,以及根据您的设计处理在应用中接收消息或发送消息的其他代码。
(1)添加一个扩展FirebaseMessageService的服务
为了能够收到您的应用程序的任何通知,你应该增加延伸服务FirebaseMessag é 服务如下:
使用Android.App;
使用Android.Content;
使用Android.Util;
使用Firebase.Messaging;
名称空间ubiix.AndroidSample.Test
[IntentFilter(new [] {“com.google.firebase.MESSAGING_EVENT”})]
公共类MyFirebaseMessageService:FirebaseMessagingService
{
const string TAG =“MyFirebaseMsgService”;
public override void OnMessageReceived(RemoteMessage message)
{
Log.Debug(TAG,“From:”+ message.From);
sendNotification时(message.GetNotification()身上。);
}
void SendNotification(string messageBody)
{
var intent = new Intent(this,typeof(MainActivity));
intent.AddFlags(ActivityFlags.ClearTop);
var pendingIntent = PendingIntent.GetActivity(this,0,intent,PendingIntentFlags.OneShot);
var notificationBuilder = new Notification.Builder(this)
.SetSmallIcon(Resource.Drawable.Icon)
.SetContentTitle(“FCM消息”)
.SetContentText(消息体)
.SetAutoCancel(真)
.SetContentIntent(的PendingIntent);
var notificationManager = NotificationManager.FromContext(this);
notificationManager.Notify(0,notificationBuilder.Build());
}
}
使用Android.App;
使用Firebase.Iid;
使用Android.Util;
使用Android.Content;
名称空间ubiix.AndroidSample.Test
{
[服务]
[IntentFilter(new [] {“com.google.firebase.INSTANCE_ID_EVENT”})]
公共类MyFirebaseIIDService:FirebaseInstanceIdService
{
const string TAG =“MyFirebaseIIDService”;
public override void OnTokenRefresh()
{
var refreshedToken = FirebaseInstanceId.Instance.Token;
Log.Debug(TAG,“刷新标记:”+ refreshedToken);
SendRegistrationToServer(refreshedToken);
}
void SendRegistrationToServer(string token)
{
//根据需要添加自定义实现。
}
}
}
10.测试并发送您的第一个推送通知
要查看设置是否有效,请通过向您自己的移动设备发送测试消息来运行测试。
在Firebase控制台中,记下您的消息并选择一个应用。点击“ 发送消息 ”。
现在,您应该在Android手机上收到推送通知。如果您的应用程序在后台运行,您将在移动设备的通知中心获得该应用程序; 否则你可以在你的Android监视器日志中看到它(我们必须输入一个代码来记录传入的消息)。
如果设置成功,您应该在手机上收到通知。有时,邮件发送和到达可能需要几分钟的时间,所以请耐心等待一会儿。
11.在应用程序中启用推送
将SIP头“ ubiix-push ”添加到REGISTER消息。我们用它来告诉Ubiix PBX这个客户端是否启用了推送。
if(FirebaseInstanceId.Instance.Token!= null){
String pushMessage =“device-os = android; device-uid =”+ FirebaseInstanceId.Instance.Token +“; allow-call-push = true; allow-message-push = true; app-id = ubiix.Android.Test” ;
engine.addSipMessageHeader(-1,“REGISTER”,1,“ubiix-push”,pushMessage);
}
var deviceid = DeviceIdUtil.getDeviceId(this);
engine.setInstanceId(设备ID);
如果要禁用推送,则需要使用取消注册消息来指示Ubiix PBX。
//通过UNREGISTER消息禁用推送
String pushMessage =“device-os = android; device-uid =”+ FirebaseInstanceId.Instance.Token +“; allow-call-push = true; allow-message-push = true; app-id = ubiix.Android.Test” ;
engine.addSipMessageHeader(-1,“REGISTER”,1,“ubiix-push”,pushMessage);
12.可能的问题
编译问题可能与build.gradle文件中的错误版本号有关。
如果您看到诸如“com.google.firebase.crash.FirebaseCrash未链接的消息。跳过初始化“。在您的Android监视器日志中,这没关系,因为我们不使用此Firebase Crash Analytics服务。
Firebase初始化未启动
13.获取服务器密钥和发件人ID
(1)。在Firebase控制台中,点击“ 设置 ”按钮并选择“ 项目设置 ”菜单。
14. Ubiix PBX
请设置以下项目:
启用 - 选中它启用推送并取消选中禁用推送。
Apple和Google都提供生产推送服务器和用于发送推送通知的开发推送服务器。开发生产服务器通常用于您的开发阶段。一旦您的应用程序发布,您可以将此设置更改为生产服务器。
应用程序ID - 您在步骤3中创建的ID。注意:此ID区分大小写。
Google服务器密钥和Google发件人ID - 密钥和ID在步骤9.2中记录。
点击“ 应用 ”按钮并在PBX中启用推送服务。
沪ICP备18008779号 全球云通信服务商 | 云pbx | 云总机 | 云电话 | ippbx网络电话号码 | 人工智能客服 | 云呼叫中心