如果进行App项目的开发并且需要处理消息推送的业务,可以使用uniPush来实现.
一.准备基础
1.申请dcloud开发者并且认证即可.这是登录/注册链接: dcloud开发者中心
- 申请厂商开发者账号,如果小米,华为等.
说明:
dcloud开发者中心提供uniPush应用配置,厂商推送设置,这里边你可以提供cid以及厂商推送配置进行调试App的消息推送,还有另外一点是厂商推送的提供是为了保证App离线时你的消息推送和透传消息可以正常到达App.
更多具体指南可以访问: uniPush使用指南
二.dcloud开发者中心
1.请确保你的App应用已存在或者新增一个,配置应用的AppID要相同,项目上的AppID和开发者中心-应用列表的AppID是同一个的,切勿搞混.查看项目的AppID可以在根目录的【manifest.json】-基础配置中查看.在dcloud开发者中心则是【我创建的应用】中查看,找到项目应用后点击【应用名称】进入应用界面.
- 配置uniPush,在uniPush-配置管理中填写配置,你的App包名需要和打包时的包名一致.例如云打包时填写的【Android包名】是io.dcloud.hbuilder,那么你的uniPush包名也是一样.
- 厂商推送配置.华为开发者联盟
你可以根据你的调试机型去申请相应的厂商开发者账号,在申请认证通过后返回dcloud开发者中心配置厂商推送设置即可.下面以【华为开发者联盟】厂商为例:
a.注册账户并认证
b.前往【管理中心】-【开发服务-PUSH】中添加项目,如图:
然后在项目中增加应用,填写应用信息,包名也需要和项目的包名一致,不可乱填,如图:
现在你需要配置【SHA256指纹证书】,这个指纹证书是在你云打包App时使用到的证书中,如果不知道如何查看,可以查看这个:证书生成指南
在填写好华为PUSH应用配置后,回到dcloud开发者中心中修改uniPush-厂商推送设置-华为的信息,其中,
AppID => APP ID
AppSecret => Client Secret
PkgName => App包名(请注意,所以的App均需一致!)
agconnect-services.json文件可以在华为开发者联盟-我的项目中下载下来,也就是刚刚新增项目中的应用,拿来这边直接上传即可,填写好后保存。
推送厂商设置主要是为了处理App离线通知而设置的,不然当用户没有活跃在App的时候是无法收到消息推送和透传消息的,请注意。还有就是各厂商推送的需要可能会不太一样,比如有些厂商推送离线消息需要上架到应用市场才可以。
三、测试推送消息和透传消息
在此之前我们需要获得clientID(cid),可以使用一下代码:
// #ifdef APP-PLUS
const clientInfo = plus.push.getClientInfo();
// #endif
这里会返回,id,token,clientid,AppID,AppKey,其中clientID就是我们需要的东西,假如启动App后该方法不返回任何数据,可以使用settimeout延迟一点时间再获取也可以。
监听消息推送和透传消息可以使用如下代码:
plus.push.addEventListener("click", (msg) => {
this.log({'type': 'click', 'data': JSON.stringify(msg)})
})
plus.push.addEventListener("receive", (msg) => {
this.log({'type': 'receive', 'data': JSON.stringify(msg)})
})
不同的是click事件可以响应消息推送和透传消息,只要在通知栏可以看得到的消息,点击后都可以响应。而对于receive事件来说仅是接受透传消息,你在发送透传消息的时候请使用【非标准格式】消息体即可进入receive事件中。
具体说明可见,uni-app使用unipush推送问题汇总
有了cid后,我们可以dcloud开发者中心-uniPush的【创建推送】中测试消息推送和透传消息功能,填入相应的信息即可然后点击【预览】即可。
需要注意的是,获取cid不可使用【基座调试】,需要云打包后把安装包安装到手机上进行调试测试,在这里获取到的cid才是可以使用的。
一些可以帮助的链接:
Unipush常见问题
UniPush使用指南