uni-push双端消息推送-在线、离线
----在线推送----
一、开通uni-push服务
-
登录Dcloud开发者中心开发者中心
-
点击创建应用

-
开通消息推送服务,建议开通2.0版本,填好所需内容

云服务空间使用阿里云免费版本进行测试uniCloud控制台

二、Hbuilder代码配置
-
在manifest.json中勾选push消息推送

-
关联服务空间、右键创建云开发环境

-
右键关联云服务空间

-
在cloudfunctions右键新建云函数,添加uni-cloud-push依赖

-
在新建好的index.js中填写以下代码,自行填写appId和cid(push_clientid)

// 简单的使用示例
'use strict';
const uniPush = uniCloud.getPushManager({appId:"__UNI__******"}) //注意这里需要传入你的应用appId
exports.main = async (event, context) => {
return await uniPush.sendMessage({
"push_clientid": "147160e8f371c0********", //填写上一步在uni-app客户端获取到的客户端推送标识push_clientid
"force_notification":true, //填写true,客户端就会对在线消息自动创建“通知栏消息”。
"title": "第一条离线通知",
"content": "新年快乐,龙年大吉!!!",
"payload": {
"text":"体验一下uni-push2.0"
},
"options":{
"HW": {
// 值为int 类型。1 表示华为测试消息,华为每个应用每日可发送该测试消息500条。此 target_user_type 参数请勿发布至线上。
"/message/android/target_user_type":1
} ,
"VV": {
//值为int 类型。0 表示正式推送;1 表示测试推送,不填默认为0。此 pushMode 参数请勿发布至线上。
"/pushMode":1
}
}
})
};
-
cid(push_clientid)获取方式:在项目App.vue中填写以下代码,下一步骤运行代码时,cid通过控制台进行打印

var timer = setTimeout(function() {
console.log("异步获取客户端推送标识信息");
plus.push.getClientInfoAsync(function(info) {
if (info.clientid) {
clearInterval(timer);
uni.setStorageSync('cid', info.clientid)
//将cid在登录时一起传给后端,和用户信息存在数据库中。
console.log("clientid", JSON.stringify(info.clientid));
}
}, function(e) {
console.log(JSON.stringify(e));
})
}, 3000);
三、打包运行测试
-
填写相关证书信息,选择自定义调试基座进行打包

-
打包完成后,运行到自定义基座


-
运行完成后,通过控制台拿到cid

-
填写好相关的appid和cid,右键创建好的云函数文件夹,上传并运行,在线推送配置完成


----离线推送----
-
离线推送需要配置相关推送证书,小米、oppo、vivo、魅族分机型需要上线应用商店,华为和荣耀暂时不需要上应用商店,下方讲解如何创建证书
-
荣耀机型为例,在厂商推送设置,填写好相关证书信息

-
重新运行基座,将cid输入,看是否成功返回token

-
将手机应用退出,右键创建好的云函数文件夹,上传并运行

---
----证书创建----
一、iOS证书
参考个推官方文档iOS 证书配置指南-个推文档中心
二、安卓证书(荣耀机型为例)
-
在Dcloud中申请安卓证书

-
注册荣耀账号Honor ID
-
点击应用服务中的推送服务,申请推送服务(企业认证)

-
填写应用名称,包名,指纹证书(在Dcould应用中点击证书详情查看)
-
提交完成后点击查看即可获取相关信息

-
维护到Dcloud厂商推送配置中

----问题解决----
一、证书配置完成,获取不到token
-
多数是因为云端证书和打包证书配置不一致,6003错误码
解决:【FAQ】推送获取push token报错6003,如何排查?_6003错误码-优快云博客
细节较多,部分步骤未做详细说明,祝你成功!
6298

被折叠的 条评论
为什么被折叠?



