// 开发文档: https://uniapp.dcloud.net.cn/uniCloud/cloud-obj
function uniPush(appId) {
return uniCloud.getPushManager({appId})
}
const uniID = require('uni-id-common')
module.exports = {
_before: async function() {
const clientInfo = this.getClientInfo()
this.uniID = uniID.createInstance({
clientInfo
})
const token = this.getUniIdToken()
let payload = await this.uniID.checkToken(token)
let role = payload.role||[]
//检查是不是管理员,或者自己的云函数调用此云函数
if(clientInfo.source != 'server' && !role.includes('admin')){
return {
errCode: 'uni-push-co-permission-denied',
errMsg: '你没有访问此接口权限'
}
}
},
async sendMessage(data) {
const appId = data.appId
data.must_report = true //默认为false,消息接受者为单设备时,不统计推送结果。开启此项将都会统计。但整体推送速度会慢100-500毫秒
// delete data.appId
let res = await uniPush(appId).sendMessage(data)
if (res.errCode == 0 && res.before_id) {
const UniPushCo = uniCloud.importObject("uni-push-co")
data.before_id = res.before_id //查询的初始id,用于高性能分页查询
data.taskid = res.data.taskid || Object.keys(res.data)[0]
UniPushCo.sendMessage(data).catch(e=>{
// console.log(e.message);
})
// 等待500毫秒给下一个请求发出去的时间
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve(res)
}, 500)
})
}
return res
},
async getReport({
appId,
taskid
}) {
let res = await uniPush(appId).getReport({
taskid
})
//获取推送结果
console.log(JSON.stringify(res));
return res
},
async getAdminUrl(appId) {
let res = await uniPush(appId).getAdminUrl() //获取推送结果
console.log(JSON.stringify(res));
return res
}
}