// 开发文档: 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
|
}
|
}
|