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错误码-优快云博客
细节较多,部分步骤未做详细说明,祝你成功!