官方API文档地址:uni-app官网
功能理解:
消息推送分为: 在线推送 、离线推送
在线推送场景:
A、可在uniCloud开发者中心编辑推送消息内容,面向全部在线用户或者单个cid用户推送
B、app内a用户操作完成 需 向 b用户发送消息提示时
A场景只需在uniCloud开发者中心编辑推送消息内容,前端监听消息推送uni.onPushMessage,然后在app内写消息提示框或者创建本地通知栏消息uni.createPushMessage 进行消息推送
B场景需a用户触发事件,触发后端接口,后端接口中获取 接受推送人的 cid,然后调用uniPush.sendMessage(OBJECT) 向设定的(单个、群组、全体)设备,即时或定时推送消息,前端同A场景
实现步骤:
一、Dcloud 开发者平台 开通uni-push 开发者中心
二、在uniapp项目manifest.json 配置文件 APP模块配置中勾选Push(消息推送)
三、 在项目中 app.vue进行消息推送监听
onShow(() => {
// 消息推送
// 获取当前用户cid, 无使用场景可不使用
uni.getPushClientId({
success(res) {
console.log(res.cid);
}
})
// 监听消息推送
uni.onPushMessage(res => {
const { title, content } = { ...res.data }
if(res.type === 'receive') {
// 创建本地通知栏消息
uni.createPushMessage({
title,
content,
icon: "配德美",
success() {
console.log("推送成功");
},
fail() {
console.log("推送失败");
}
})
}
})
});
四、创建uniCloud开发环境,完成自定义推送,或者用户间订单交互类事件推送
创建完右键关联云服务空间,创建一个云函数文件夹unipush,新建两个文件index.js, package.json
index.js
'use strict';
const uniPush = uniCloud.getPushManager({appId:"__UNI__B760ADF"}) //注意这里需要传入你的应用appId
exports.main = async (event, context) => {
let obj = JSON.parse(event.body)
return await uniPush.sendMessage({
//填写上一步在uni-app客户端获取到的客户端推送标识push_clientid
"push_clientid": obj.clientid,
"force_notification":true, //填写true,客户端就会自动创建“通知栏消息”。
"title": obj.title,
"content": obj.content,
"payload": {
"text":"体验一下uni-push2.0"
}
})
};
package.json
{
"name": "unipush",
"version": "1.0.0",
"main": "index.js",
"description": "消息推送",
"extensions": {
"uni-cloud-push": {}
},
"author": "vini123"
}
鼠标指向unipush文件夹右键: 上传并运行,这是打开Dcoud 开发者中心
点击名称打开服务空间
打开云函数/云对象可以看到生成一条普通云函数
点开详情看到最下面有个云函数URL化
通过调用此url可以根据自己 的需求向 cid用户 推送消息
cid 可以通过登录 或者注册 或者获取用户信息时更新到用户表中, 通过用户ID 关联cid 进行用户间信息推送
离线推送需要在个应用市场申请推送服务:以下以vivo为例