简体中文
HBuilder|HBuilderX集成了常用的推送平台,包括个推推送和小米推送。 从HBuilderX1.7.2版本开始支持UniPush推送服务(支持华为、小米、OPPO、魅族厂商推送通道),解决APP离线时因为三方推送进程被杀而导致无法推送的问题,参考UniPush使用指南。
Push推送功能需配置SDK参数后提交云端打包后才能生效,如需真机运行生效请使用自定义基座
push是一个可用但不可依赖的功能。
通常推送消息分以下两种类型:
通知栏消息(推送通知) UniPush推送服务定义好的推送样式、后续动作的推送方式,客户端接收到后显示在系统通知栏,用户点击通知栏消息启动APP(激活到前台)。
透传消息 即自定义消息,UniPush推送服务只负责消息传递,不做任何处理,客户端在接收到透传消息后需要自己去处理消息的展示方式或后续动作。
uni-app应用中使用推送服务参考:http://ask.dcloud.net.cn/article/35726。
在应用安装后第一次运行时应该调用5+ API的plus.push.getClientInfo方法获取客户端标识,并将此标识提交到开发者的业务服务器进行注册设备,以便在用户登录时可绑定设备,实现向登录用户推送专属消息。 示例代码如下:
document.addEventListener('plusready', function(){
// 页面加载时触发
var pinf = plus.push.getClientInfo();
var cid = pinf.clientid;//客户端标识
}, false );
如果获取的cid为空,说明客户端向推送服务器注册还未完成,可以使用setTimeout延时重试。
通常在应用入口页面(首页)中调用5+ API的plus.push.addEventListener方法监听消息事件,在回调函数中处理消息的响应业务逻辑,如下示例:
//监听系统通知栏消息点击事件
plus.push.addEventListener('click', function(msg){
//处理点击消息的业务逻辑代码
}, false);
//监听接收透传消息事件
plus.push.addEventListener('receive', function(msg){
//处理透传消息的业务逻辑代码
}, false);
启动回调函数的参数msg为PushMessage对象,保存消息的标题(title)、内容(content)、自定义数据(payload)等。
推送消息包括以下事件类型:
注意:特殊情况
{title:"标题",content:"内容",payload:"自定义数据"}
时,会作为普通推送通知处理,在系统通知栏创建消息,点击消息激活APP触发"click"事件。
// 监听在线消息事件
plus.push.addEventListener( "receive", function( msg ) {
if ( msg.aps ) { // Apple APNS message
//APNS下发的消息,应用在前台
} else {
//其它情况接收消息
}
//其它逻辑
}, false );
5+ Push模块还提供一系列API操作系统通知栏,解决比较少见的业务场景需求。
plus.push.clear();
var options = {cover:false};
var str = dateToStr(new Date());
str += ": 欢迎使用Html5 Plus创建本地消息!";
plus.push.createMessage(str, "LocalMSG", options);
iOS平台创建本地消息也会触发监听的"receive"事件,此时需要添加特殊参数来标识本地创建的消息。
// 监听在线消息事件
plus.push.addEventListener( "receive", function( msg ) {
if ( msg.aps ) { // Apple APNS message
//APNS下发的消息,应用在前台
} else if ( 'LocalMSG' == msg.payload ) { // 特殊payload标识本地创建的消息
//本地创建的消息,通常不需要处理
//注意:不要在这种情况下再此调用plus.push.createMessage,从而引起循环创建本地消息
} else {
//接收到在线透传消息
}
//其它逻辑
}, false );
var msgs = plus.push.getAllMessage();
for(var i in msgs){
var msg = msgs[i];
console.log( i+": "+msg.title+" - "+msg.content );
}
iOS平台不支持获取系统通知栏消息,返回空数组。
使用推送前需要向推送平台申请应用,并获取推送参数(提交云端打包时需配置),如appid、appkey等。
登录个推消息推送开放平台: 如果已经申请过个推的消息推送应用,打开“个推·消息推送”页面,在应用列表中找到申请的应用,点击“应用配置”打开应用信息页面,可获取个推的AppID、AppKey、AppSecret等信息。 如果没有申请过应用,打开“应用管理”页面选择“创建应用”申请新应用,申请成功后再通过上面的方法获取AppID、AppKey、AppSecret等参数。
个推推送平台相关问题可直接咨询个推客服,企业QQ:2880983159。也可以在ask中@getui_johny
登录小米开放平台,进入“管理控制台”页面,在“应用服务”栏选择“消息推送”,打开推送运营平台: 如果已经在小米开放平台申请应用,则在应用列表中点击相应应用的“应用信息”按钮,打开应用信息页面可查看小米推送的AppID、AppKey、AppSecret等信息;若应用没有启用推送服务,则点击“启用推送”按钮申请开通。 如果没有申请过应用,则点击页面左上角的“创建应用”按钮创建新应用,创建成功后再他通过上面的方法“启用推送”功能并获取小米推送的AppID、AppKey、AppSecret等参数。 小米推送需要为Android和iOS平台分别创建两个应用
HBuilder|HBuilderX中提交云端打包前,需在manifest.json文件中配置Push推送模块的参数。
打开应用的manifest.json文件,选择“模块权限配置”项,勾选“Push(消息推送)”,如下图所示:
打开应用的manifest.json文件,选择“SDK配置”项,选择应用使用的推送平台,并输入从此推送平台申请获取的配置参数,如下图所示:
Android平台云端打包时需要确认填写的app包名和在推送平台创建应用时填写的包名一致 iOS平台云端打包时需要确人打包填写的Bundle ID(Apple AppID)和提交给推送平台的APS证书内包含的AppID一致
1.为什么真机运行时不能收到推送的消息 答: 如果需要测试推送功能,需要使用HBuilder云打包生成安装包进行测试。
2.推送消息到安卓平台为什么没有在消息中心中显示 答: 如果推送到安卓平台的消息是透传消息,并且格式不符合规范则会触发监听页面的receive事件,消息不会进入消息中心。
3. IOS平台本地创建本地消息会触发“receive”事件,如何和服务器发送的消息进行区分。 答: 用户在创建IOS本地消息是可以在“payload”节点添加特殊标记对消息进行区分
4. Android平台如何配置推送消息图标 答:参考https://ask.dcloud.net.cn/article/35537