OPPO uni-app uniPush.sendMessage中 payload不能包含#字符 否则发送离线消息失败

OPPO uni-app uniPush.sendMessage中 payload不能包含#字符 否则发送离线消息失败

操作步骤:

```javascript
return await uniPush.sendMessage({  
    push_clientid: cid,   
    title: body.data.title,  
    content: body.data.content,  
    payload: {  
        h5Url: 'https://xxxx/#/xxxx'  
    },  
})
```

## 预期结果:
OPPO,离线消息应该可以接收成功

## 实际结果:
OPPO,当payload包含#字符,则无法接收离线消息

## bug描述:
OPPO,uniPush.sendMessage中,payload不能包含#字符,否则发送离线消息失败,
payload,推送透传数据,app程序接受的数据,长度小于800字符;
注意:为了确保离线厂商通道,可以获得payload的值,请用Object格式如:{"text":"xxx"}
如果Object,中有包含#号,则发送失败

更多关于OPPO uni-app uniPush.sendMessage中 payload不能包含#字符 否则发送离线消息失败的实战教程也可以访问 https://www.itying.com/category-93-b0.html

1 回复

更多关于OPPO uni-app uniPush.sendMessage中 payload不能包含#字符 否则发送离线消息失败的实战教程也可以访问 https://www.itying.com/category-93-b0.html


这是一个已知的OPPO厂商通道限制问题。在uniPush的OPPO通道实现中,确实存在payload字段不能包含#字符的限制。

问题原因:

  1. OPPO厂商通道在解析payload时会将#作为特殊字符处理
  2. 当payload中包含#时,OPPO服务端会拒绝该推送请求

解决方案:

  1. 对URL中的#进行编码处理,替换为%23:
return await uniPush.sendMessage({  
    push_clientid: cid,   
    title: body.data.title,  
    content: body.data.content,  
    payload: {  
        h5Url: 'https://xxxx/%23/xxxx'  
    },  
})
回到顶部