
生成证书

把生成的证书信息填入

开通uni-push2选择Android包名,Android包名格式可以百度,需要提前开通云服务,阿里云有免费的额度

在hbuilder里面找到项目,鼠标右键点击项目名称,创建云开发环境选择免费的阿里云,然后关联服务云空间


创建云函数


选择统一推送服务

创建的云函数的index.js,右键云函数上传部署,扩展库依赖3张opendb表:opendb-tempdata,opendb-device,uni-id-device。公测版uniCloud,执行扩展库会自动创建。如果你使用的是uniCloud正式版需要自己创建这3张表**

'use strict';
const uniPush = uniCloud.getPushManager({
appId: "__UNI__F46A574"
})
exports.main = async (event) => {
let obj = JSON.parse(event.body)
const res = await uniPush.sendMessage({
"push_clientid": obj.cids,
"title": obj.title,
"content": obj.content,
"payload": obj.payload,
"force_notification": false,
"request_id": obj.request_id
})
return res
};
uni.getPushClientId({
success: (res) => {
console.log(res.cid);
},
fail(err) {
console.log(err)
}
})
登录成功之后获取到cid(用于给指定用户推送),cid测试只能运行自定义基座才能生效,然后勾选配置文件,离线推送需要接入厂商推送

配置云函数url化后端直接调接口然后进行推送,函数执行内存如果业务逻辑不复杂建议设置128MB节省资源

然后可以用apipost测试,payload可以传页面地址参数拼接在后面

用户登录成功之后启动监听事件,type为receive则创建一条通知栏消息,type为click则用户点击通知栏可以处理跳转页面逻辑等等,用户退出在关闭监听事件 关闭推送消息监听事件
uni.onPushMessage((res) => {
const {
type,
data
} = res
if (type === "click") {
uni.navigateTo({
url: `/pages/appPages/appPages?route=${data.payload}`
})
} else if (type === "receive") {
uni.createPushMessage({
title: data.title,
content: data.content,
payload: data.payload
})
}
});