菜鸟开发A
菜鸟开发A
  • 发布:2025-09-02 11:32
  • 更新:2025-09-02 11:32
  • 阅读:12

【报Bug】VIVO集成了厂商推送,但是通过uniapp自带的推送页面发通知收不到离线消息,

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: Win11

HBuilderX类型: 正式

HBuilderX版本号: 4.75

手机系统: Android

手机系统版本号: Android 14

手机厂商: vivo

手机机型: vivo NQ5

页面类型: vue

vue版本: vue3

打包方式: 云端

项目创建方式: HBuilderX

示例代码:

云函数地址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;
};

操作步骤:

1,操作步骤如下

VIVO的配置已经集成了厂商推送,通过uniapp自带的后端推送页面进行推送,进程被杀死以后,收到不到离线消息,但是通过故障排查输入cid b958b7663b91754a09ce2c6e54f63cb6 等到Device Token :v2-CRvmxiCN7us1tCak_EeUtWy8A6menVPPPG2tQ6FrnRbp6oT67xXSuCf1 拿到VIVO自己的推送平台去推送,是能收到离线消息的。
对应附件 1-5

2,通过云函数进行推送, "/pushMode": 0 设置为0的时候,同样的收不到离线消息,安装的App是已经通过云端签名打包过的,不是基座包, 设置成1的时候却能收到离线消息,开发文档说 正式设置成0或者不传这个参数,不传也收不到,

预期结果:

1,无论是通过uniapp自带的推送页面发消息还是通过云函数发消息,都要能收到离线通知

实际结果:

目前通过uniapp自带的后端消息推送页面发消息,收不到离线通知,只能收到在线通知

bug描述:

1,操作步骤如下

VIVO的配置已经集成了厂商推送,通过uniapp自带的后端推送页面进行推送,进程被杀死以后,收到不到离线消息,但是通过故障排查输入cid b958b7663b91754a09ce2c6e54f63cb6 等到Device Token :v2-CRvmxiCN7us1tCak_EeUtWy8A6menVPPPG2tQ6FrnRbp6oT67xXSuCf1 拿到VIVO自己的推送平台去推送,是能收到离线消息的。
对应附件 1-5

2,通过云函数进行推送, "/pushMode": 0 设置为0的时候,同样的收不到离线消息,安装的App是已经通过云端签名打包过的,不是基座包, 设置成1的时候却能收到离线消息,开发文档说 正式设置成0或者不传这个参数,不传也收不到,

2025-09-02 11:32 负责人:无 分享
已邀请:

要回复问题请先登录注册