咨询热线:0755-33548988
来电推送配置指南
1.简介

大众语音SDK提供拨号呼叫、来电接听等常规VOIP的通话功能,通过网关接入固话运营商网络,可实现拨打PSTN固话、手机号、Sip话机、Sip移动客户端等终端号码的通话操作。针对来电的场景,考虑到应用在手机中被停止运行的情况,引入远程离线推送的机制,使手机应用在非运行状态下也能够实时的接收呼叫方的来电。
从远程离线推送的设计场景出发,推送是使大众语音SDK能接听特殊情况的来电而引入的功能。若应用主要用于主动发起呼叫,或应用本身能配置为可长时间运行于后台,则理论上不需要专门开启离线推送功能。大众语音SDK的离线推送整合了华为、小米、iOS等厂商推送通道,安卓应用中对非华为小米的其它设备整合了极光推送的第三方推送方式。
各大推送平台主要使用appid、appsecret、包名,以及每个应用运行时获取的Token等信息来进行远程离线推送的实现。为保证应用的前后一致性,建议应用统一使用单独的签名文件对生成的应用包进行签名。

2.呼叫来电流程

3.推送平台配置依赖

特别提示:如果能保证应用长期运行在Android的后台(示例代码中有预设的规则可启用),则安卓应用的推送平台可以不配置。iOS由于切换到后台之后,应用即停止运行,建议要配置推送平台信息。

3.1手机端设备

1)Android设备

Android设备远程推送依赖项明细
依赖项名称 依赖内容(示例)
应用包名 com.ade.sipphone
大众玖云平台 用途:分配Sip账号,根据Sip账号获取服务器地址
MASS_ACCOUNTSID e600d6dff3d046aca1a6c0a6a0a9554f
MASS_AUTHTOKEN a5c1fbbdb4bb43ca9eb37b749dfd4065
MASS_SOFTVERS 2016-01-01
极光推送平台 用途:
JPUSH_PKGNAME 应用包名
JPUSH_APPKEY 6d1c2ca68729462f3b76b7e3
JPUSH_CHANNEL default_developer
小米推送平台
XMPUSH_APPID 2882303761518801720
XMPUSH_APPKEY 5151880148720
华为推送平台
agconnect-services.json 需签名文件SHA256证书指纹从华为官网下载
maven路径 maven { url 'https://developer.huawei.com/repo/' }
dependencies依赖 implementation 'com.huawei.hms:push:4.0.3.301'

Android应用程序工程的各依赖项的配置内容

2)iOS设备

iOS的APNs推送相关功能,由于已高度集成到Apple的开发者账号中,项目中勾选“自动管理签名证书”后,只需“Bundle Identifier”对应的包名已在开发者账号中配置了推送证书即可。Xcode将自动下载和同步对应的信息,用于后续在项目代码中获取远程推送Token。
应用运行并获取Token之后,平台服务器中可使用此Token+开发者账号对应证书,将远程消息,推送到运行此应用的唯一特定iOS设备中,即实现远程离线推送功能。

iOS应用程序工程的各依赖项的配置内容

3.2大众玖云平台

玖云平台中,针对呼叫来电时,对应账号的手机应用不在线的场合,启用远程离线推送功能。从各个消息推送平台的角度来看,玖云平台发送来电提醒消息到各个移动终端设备的信令走的是消息推送平台的下行通道。
下述表2中的内容为各推送平台针对某个应用包名,而设置的下行推送依赖信息。若应用不需要实现来电离线提醒,或者不需要支持某个平台的设备,则可以不进行注册和申请。
此部分信息,在各个推送平台注册后,将表格内的信息同步给大众玖云平台,用于后续大众语音SDK的离线消息提醒。各依赖信息的获取方式参考下述第4章节的描述。

表2 大众玖云平台离线推送需提供的内容
依赖项名称 依赖内容(示例)
包名 com.ade.sipphone -- iOS称为 Bundle Identifier
极光推送平台
极光--AppKey 6d1c2ca68729462f3b76b7e3
极光--Master Secret 5923fde20e66192926e4da12
小米推送平台
小米--AppID 2882303761518801720
小米--AppKey 5151880148720
小米--AppSecret mSBJHBInuRIrlb3C7ECLQA==
华为推送平台
华为--APP ID 103184883
华为--API key CgB6e3x9CA80NMKlc2Qls15s7G31g/7lXCTQ8RFwq7RWDPWeqlD0gcRrmCvN3qKa/SqvGgiLJQ32+o0nXROIvZmt
华为--APP SECRET 445a3be04873df4bbc64f2934ff7e75c87e2d00f5428b221ebe70d867376b0bc
iOS推送平台
合并后的推送证书 证书文件:E:\iphone\push_cert\ck.pem 注:此证书的生成步骤参看《大众语音SDK-离线来电推送流程.doc》中第4.4章节

3.3大众玖云平台实现原理

特别提示:此部分内容为大众语音SDK内置实现部分,此处仅为展示推送原理和过程,以利于问题排查。外部集成应用无需实现此功能。
玖云平台中,针对呼叫来电时,对应账号的手机应用不在线的场合,启用远程离线推送功能。从各个消息推送平台的角度来看,玖云平台发送来电提醒消息到各个移动终端设备的信令走的是消息推送平台的下行通道。

各下行通道的相关信令描述可参考如下表3:
推送平台 下行信令--描述文档
极光推送 http://docs.jiguang.cn/jpush/server/push/rest_api_v3_push/
小米推送 https://dev.mi.com/console/doc/detail?pId=1278#_2_0
华为推送 https://developer.huawei.com/consumer/cn/doc/development/HMSCore-References-V5/https-send-api-0000001050986197-V5
Apple推送 请自行搜索对应语言的APNs推送SSL通道 或参考以下路径 https://blog.csdn.net/mylizh/article/details/51996543
表3 推送平台下行信令描述 大众玖云平台往各个推送平台下行信令中推送的内容可参考如下表4:
推送平台 下行信令--内容(示例)
极光推送 {"notification":{"android":{"alert":"来电提醒","sound":"callring","big_text":"来电号码 13691724110 ,点击接听","extras":{"callid":"fe0332d2-aa5d-1239-67b7-180373f5faa4","callno":"13691724110","tick":"2020-11-26.15.45.41.015"},"style":1,"title":"收到一个未接来电","priority":1,"channel_id":"com.ade.rtclib.C1"}},"audience":{"registration_id":["13065ffa4eb69995e46"]},"options":{"apns_production":true,"time_to_live":86400},"platform":["android"]}
小米推送 {"description":"来电号码 13691724110 ,点击接听","extra":{"callno":"13691724110","callid":"fe0332d2-aa5d-1239-67b7-180373f5faa4","tick":"2020-11-26.15.45.41.015", "sound_uri":"android.resource://com.ade.sipphone/raw/callring"},"notifyId":1053,"passThrough":0, "payload":"来电提醒","restrictedPackageName":"com.ade.sipphone","title":"收到一个未接来电"}
华为推送 {"android":{"notification":{"auto_cancel":true,"channel_id":"com.ade.rtclib.C1","click_action":{"intent":"intent://com.huawei.push/data?callno=13691724110&callid=fe0332d2-aa5d-1239-67b7-180373f5faa4&tick=2020-11-26.15.45.41.015#Intent;scheme=pushscheme;end","type":1}, "default_sound":false,"foreground_show":true,"icon":"/raw/ic_logo","importance":"HIGH","notify_id":1053, "sound":"/raw/callring","use_default_light":true,"use_default_vibrate":true,"visibility":"PUBLIC"}, "urgency":"HIGH"},"notification":{"body":"来电号码 13691724110 ,点击接听","title":"收到一个未接来电"},"token":["IQAAAACy0bVhAAAApHIxevH7g3rooJmtQYmkbaVV0HPUguiaj8pMB-udAPIG1Iinr8RzTtIRK_gmacM41Pk2afQvzQm_-Q8QDb8G1jBz4PTb5DCtUA"]}
Apple推送 {"callid":"fe0332d2-aa5d-1239-67b7-180373f5faa4","aps":{"sound":"","content-available":1},"callno":"13691724110","tick":"2020-11-26.15.45.41.015"}
表4 推送平台下行信令内容示例
4.推送注册步骤

本章着重阐述第3章节中,列举的各推送平台依赖项等信息的获取方式。不同的推送平台需要获取的具体信息各不相同。
一般情况下,推送平台使用“应用包名”和id--key--secret来标识某个应用;使用“应用包名”和手机设备运行时的Token来标识具体设备内运行的应用实例。消息推送时,将在推送平台中,找到注册的应用,并推送到某个定点设备中。

4.1极光第三方推送平台

极光平台的推送注册步骤,请参考文档《大众语音SDK-推送平台注册-极光.doc》。注册完毕后,将获取到以下信息:
极光平台需求项 极光平台获取值
应用包名 com.ade.sipphone
AppKey 1d39b9e2e105037b62584e30
Master Secret 5ff083221a6786dfda9f75d6
表5 极光推送平台注册后获取内容

4.2小米推送平台

小米平台的推送注册步骤,请参考文档《大众语音SDK-推送平台注册-小米.doc》。注册完毕后,将获取到以下信息:
小米平台需求项 小米平台获取值
主包名 com.ade.sipphone
AppID 2882303761518801720
AppKey 5151880148720
AppSecret mSBJHBInuRIrlb3C7ECLQA==
表6 小米推送平台注册后获取内容

4.3华为推送平台

华为平台的推送注册步骤,请参考文档《大众语音SDK-推送平台注册-华为.doc》。注册完毕后,将获取到以下信息:
华为平台需求项 华为平台获取值
应用包名 com.ade.sipphone
APP ID 103184883
API key CgB6e3x9CA80NMKlc2Qls15s7G31g/7lXCTQ8RFwq7RWDPWeqlD0gcRrmCvN3qKa/SqvGgiLJQ32+o0nXROIvZmt
APP SECRET 445a3be04873df4bbc64f2934ff7e75c87e2d00f5428b221ebe70d867376b0bc
表7 华为推送平台注册后获取内容

4.4Apple远程APNs推送平台

详情参考网络文档《手把手教你配置苹果APNS推送服务》网址:https://blog.csdn.net/u011303663/article/details/51105672
证书制作步骤按照其1--5的步骤完成后,将公钥和许可两个.pem文件合并为ck.pem,将此ck.pem和对应的包名(Bundle ID)上传到大众玖云平台即可。

iOS平台需求项 iOS平台获取值
Bundle Identifier com.ade.sipphone
合并后的推送证书 证书文件:E:\iphone\push_cert\ck.pem
表8 iOS推送平台注册后获取的内容

OS开发时,xcode11.0及以前版本的开发环境可自行配置证书,此时使用上述步骤中制作的证书即可正常编译和打包。Xcode12.0及以上版本必须使用开发者账号来自动从Apple开发者平台下载证书,不能够手动操作选择证书。因此开发环境和iPhone手机客户端不需要依赖生成的证书文件。

5.设备Token获取

推送Token为应用在设备中运行后,获取到的、用于标注该设备的序号,Token的生成规则依不同的推送平台的生成策略而有所不同。但正常来说不卸载应用,每次运行时的Token基本上会保持不变。

5.1Android获取Token方式

安卓的Token分为厂商推送Token和极光第三方Token两个部分,大众语音SDK获取这两个Token后,集中上传到大众玖云平台中,供后续来电时进行判断和分发推送。
此部分内容由于已整合到大众语音SDK中,此处略过。

5.2iOS获取Token方式

iOS需要应用的项目配置如3.1章节方式配置之外,需在应用的AppDelegate.m中,启动函数内 -(BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {}
判断iOS7、iOS8.0、iOS10.0分别实现不同的注册内容获取办法。由于iPhone手机存在强制升级的特性(目前主流iOS手机大部分版本均为iOS14.2、iOS14.3),一般情况下实现iOS10.0以上的通知代理的注册即可。代理注册成功后,在以下函数中 - (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {}
即可在应用运行时正常的获取远程推送Token。
详情可参考iOS的示例应用程序代码。

1 简介

2 呼叫来电流程

3 推送平台配置依赖

4 推送注册步骤

5 设备Token获取


在线客服

在线语音

点击呼叫

音频设备正常
点击"呼叫"立即接通客服
麦克风设备未准备好
请检查设备后再点击"呼叫"
音频设备未准备好
请检查设备后再点击"呼叫"
呼叫中……
请耐心等待
00:00
通话中
通话已结束
时长: 00:00
通话未接通
非常抱歉!客服未能接通。请再次呼叫或在官网下方留下您的联系方式,我们将尽快与您沟通。

电话咨询
0755-33548988

回到顶部