云函数地址https://dcloud.infocare.org.cn/testPush
推送参数
{
"request_id": "456468547852229755",
"cids":"b958b7663b91754a09ce2c6e54f63cb6",
"title": "通知测试标题7766",
"content": "通知测试内容77 ",
"force_notification": true,
"settings": {
"ttl": 86400000
},
"options": {
"HW": {
"/message/android/target_user_type": 1
},
"HO": {
"/android/targetUserType": 1
},
"VV": {
"/pushMode": 0
},
"XM": {
"/extra.channel_id": "140794"
}
},
"category": {
"harmony":"MARKETING"
},
"payload": {
"data1": 1,
"data2": 2
}
}
云函数的写法
'use strict';
const uniPush = uniCloud.getPushManager({
appId: "UNI81D2719"
});
// 假设已在数据库中存储了clientid与平台的对应关系(如集合user_devices)
const db = uniCloud.database();
exports.main = async (event) => {
let obj = JSON.parse(event.body);
// 1. 获取目标平台(从请求参数传入,如 'android' 或 'iOS/Android')
const targetPlatform = obj.deviceType; // 新增参数:指定推送平台
// 2. 查询并筛选目标平台的clientid(关键:根据平台过滤设备)
let validClientIds = obj.cids; // 原始设备ID列表
// 3. 调用推送API,通过options指定平台专属配置
const res = await uniPush.sendMessage({
"push_clientid": validClientIds, // 经过平台筛选的设备ID
"title": obj.title,
"content": obj.content,
"settings": obj.settings,
"payload": obj.payload,
"category": obj.category,
"force_notification": true,
"request_id": obj.request_id,
"options":obj.options
});
return res;
};