应用开通 uni-push 功能时,需要提交应用相关信息,如下图所示:
APP手机厂商推送参数设置(可选,应用进程离线时推送通道)
打开manifest.json
- App模块配置
- 中勾选uni-push 2.0
监听推送消息的代码,需要在收到推送消息之前被执行。所以应当写在应用一启动就会触发的应用生命周期onLaunch
中
// 文件路径:项目根目录App.vue/uvue
export default {
onLaunch: function() {
console.log('App Launch')
uni.onPushMessage((res) => {
console.log("收到推送消息:",res) //监听推送消息
})
},
onShow: function() {
console.log('App Show')
},
onHide: function() {
console.log('App Hide')
}
}
// uni-app客户端获取push客户端标记
uni.getPushClientId({
success: (res) => {
let push_clientid = res.cid
console.log('客户端推送标识:',push_clientid)
},
fail(err) {
console.log(err)
}
})
注意:扩展库依赖3张opendb表:opendb-tempdata
,opendb-device
,uni-id-device
。公测版uniCloud,执行扩展库会自动创建。如果你使用的是uniCloud正式版需要自己创建这3张表
在已有的云函数目录点右键选择“管理公共模块或扩展库依赖”
根据云函数详情中设置的url封装一个请求向云函数发送推送需要的数据
在云函数日志中可以查看请求是否成功
云函数中调用uni-cloud-push扩展库的sendMessage
方法,向客户端推送消息
// 简单的使用示例
'use strict';
const uniPush = uniCloud.getPushManager({appId:"__UNI__XXXXXX"}) //注意这里需要传入你的应用appId,用于指定接收消息的客户端
exports.main = async (event, context) => {
return await uniPush.sendMessage({
"push_clientid": "xxx", //填写上一步在uni-app客户端获取到的客户端推送标识push_clientid
"title": "通知栏显示的标题",
"content": "通知栏显示的内容",
"payload": {
"text":"体验一下uni-push2.0"
}
})
};