文档开发者中心
我的

Push基础能力服务端开发指导

华为Push服务端接入提供两种协议,HTTP协议和XMPP协议,XMPP协议主要目的是为了实现用户设备到开发者服务器的上行消息能力,因此对于开发者服务器发送消息给用户设备的场景,建议优先使用HTTP协议,下面分别介绍两种协议的接入开发指导。

基于HTTP协议开发指导

本章节指导开发者基于HTTP协议完成Push基础能力所需的服务端开发。整体功能流程图如下:
开发者要实现基于HTTP协议给华为手机推送Push消息的功能,需要完成如下开发步骤:
1、开发者服务器获取接入令牌AccessToken,详细请参考开放平台鉴权相关内容描述。
消息请求样例:

POST /oauth2/v2/token HTTP/1.1

Host: Login.cloud.huawei.com

Content-Type: application/x-www-form-urlencoded


grant_type=client_credentials&client_secret=61014&client_id=test61014bba8df90acb8eb1s0a2081f

2、开发者服务器调用API发送PUSH消息,详细请参考服务端发送Push消息API章节。

消息请求样例:

POST /v1/65738923/messages:send HTTP/1.1

Content-Type: application/json;charset=utf-8

{ 'validate_only': false, 'message': { 'notification': { 'title': 'Big News', 'body': 'This is a Big News!' }, 'android': { 'collapse_key': -1, 'priority': 'NORMAL', 'ttl': '1448s', 'bi_tag': 'Trump', 'fast_app_target': 1, 'notification': { 'title': 'Noti in Noti title', 'body': 'Noti in Noti body', 'icon': 'https://res.vmallres.com/pimages//common/config/logo/SXppnESYv4K11DBxDFc2.png', 'color': '#AACCDD', 'sound': 'http://att.chinauui.com/day_120606/20120606_7fcf2235b44f1eab0b4dadtAkAGMTBHK.mp3', 'tag': 'tagBoom', 'click_action': { 'type': 1, 'intent': '#Intent;compo=com.rvr/.Activity;S.W=U;end' }, 'body_loc_key': 'M.String.body', 'body_loc_args': [ 'Boy', 'Dog' ], 'title_loc_key': 'M.String.title', 'title_loc_args': [ 'Girl', 'Cat' ], 'channel_id': 'RingRing', 'notify_summary': 'Some Summary', 'style': 1, 'big_title': 'Big Boom Title', 'big_body': 'Big Boom Body', 'big_picture': 'https://developer-portalres-drcn.dbankcdn.com/system/modules/org.opencms.portal.template.core/resources/images/icon_Promotion.png', 'auto_clear': '86400000', 'notify_id': 486, 'group': 'Espace', 'badge': { 'num': 99, 'class': 'Classic' } } }, 'token': [ 'AAWWHI94sgUR2RU5_P1ZptUiwLq7W8XWJO2LxaAPuXw4_HOJFXnBlN-q5_3bwlxVW_SHeDPx_s5bWW-9DjtWZsvcm9CwXe1FHJg0u-D2pcQPcb3sTxDTJeiwEb9WBPl_9w' ] } }
3、开发者应用服务器接收Push消息回执,详细请参考消息回执API章节。
开发者如果需要感知Push消息到达设备的状态信息,则要完成该步骤的开发。Push消息回执发生在系统检测到客户端有应答返回,且开发者华为AppGallery Connect平台上在开通了“消息回执”权益的场景,具体请参考打开相关服务章节中配置推送服务参数的回执开通指导,消息回执由华为Push服务器发往开发者服务器,开发者需自行实现接口接收华为PUSH服务器发送的回执消息。

回执消息样例:

POST / HTTP/1.1

Content-type: application/json

Content-Length: 134

Host: 100.100.147.14:8580

Connection: Keep-Alive

User-Agent: Apache-HttpAsyncClient/4.1.2 (Java/1.8.0_101)

X-HUAWEI-CALLBACK-ID: timestamp=1563105451261;nonce= a07bfa17-6d82-4b53-a9a2-07cfef5ceef1;value=E4YeOsnMtHZ6592U8B9S37238E+Hwtjfrmpf8AQXF+c=

{ 'statuses': [ { 'biTag': '131415', 'appid': '0000000013', 'token': '14889646529623230000000013000001', 'status': 0, 'timestamp': 1489993883189, 'requestId': '1234567890' }, { 'biTag': '131415', 'appid': '0000000013', 'token': '14889646529623230000000113000001', 'status': 2, 'timestamp': 1489993888189, 'requestId': '1234567890' } ] }

基于XMPP协议开发指导

本章节指导开发者基于XMPP协议完成Push基础能力所需的服务端开发。通过开发者服务器与华为Push XMPP服务器之间建立的持久异步双向连接,可以在开发者服务器和用户设备之间发送和接收XMPP消息。为了实现XMPP服务的接入,你可以使用大多数的XMPP客户端类库,如Smack等。整体功能流程图如下:
开发者要实现基于XMPP协议给华为手机推送Push消息的功能,需要完成如下开发步骤:

1、开发者服务器接入HUAWEI Push XMPP服务器,建立XMPP连接。

String serverIp = 'push-xmpp.cloud.huawei.com'; //华为Push XMPP服务器接入域名

int serverPort = 5236; //华为Push XMPP服务器开放端口号

ConnectionConfiguration config = new ConnectionConfiguration(serverIp, serverPort);

config.setSecurityMode(ConnectionConfiguration.SecurityMode.required);

Connection connection = new XMPPConnection(config);

connection.connect();

2、开发者服务器接入HUAWEI Push XMPP服务器登录认证。

String usrName = '61014@push-xmpp.cloud.huawei.com'; //用户名为开发者APPID@push-xmpp.cloud.huawei.com格式

String password = 'CF02+Urle/P9d+Jsp1dHmaO8rNymwBkbHptH4Rja5nW4TmA==';//密码使用开发者申请的Access Token

connection.login(usrName, password);

3、开发者基于XMPP连接发送Push消息,详细请参考XMPP消息下发API章节。

Message message = new Message(); //构造消息体,开发者自己设置消息体内容

connection.sendPacket(message); //基于XMPP连接发送Push消息

4、开发者服务器接收XMPP消息回执,详细请参考XMPP消息回执API章节。
开发者如果需要感知XMPP消息到达设备的状态信息,则要完成该步骤的开发。在应用服务器在请求消息中加入了“delivery_receipt_requested”选项,且开发者已经在华为AppGallery Connect平台上开通了“消息回执”权益,开通请参考打开相关服务章节中配置推送服务参数的回执开通指导,此时,华为Push XMPP服务器检测到客户端有应答时,会基于XMPP连接将消息应答状态回执给开发者服务器,开发者在收到XMPP消息回执时需要回复回执应答消息。

回执请求报文格式:

<message id=''>
<hcm >
{
'category':'com.example.yourapp',
'data':
{
'message_status':'MESSAGE_SENT_TO_DEVICE',
'original_message_id':'m-1366082849205'
'device_registration_id':'REGISTRATION_ID'
},
'message_id':'dr2:m-1366082849205',
'message_type':'receipt',
'from':'push-xmpp.cloud.huawei.com'
}
</hcm>
</message>

点赞
收藏
回复
分享
举报
浏览847 发布于2019-10-12 02:43未知归属地
全部评论
最多点赞
最新发布
最早发布
暂无评论
暂无评论
写回答
新增插入模板功能
一键使用模板,快速填写内容,轻松发帖~
知道了
  • 为了保障您的信息安全,请勿上传您的敏感个人信息(如您的密码等信息)和您的敏感资产信息(如关键源代码、签名私钥、调试安装包、业务日志等信息),且您需自行承担由此产生的信息泄露等安全风险。
  • 如您发布的内容为转载内容,请注明内容来源。

我要发帖子

了解社区公约,与您携手共创和谐专业的开发者社区。