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字段不能包含#字符的限制。
问题原因:
- OPPO厂商通道在解析payload时会将#作为特殊字符处理
- 当payload中包含#时,OPPO服务端会拒绝该推送请求
解决方案:
- 对URL中的#进行编码处理,替换为%23:
return await uniPush.sendMessage({
push_clientid: cid,
title: body.data.title,
content: body.data.content,
payload: {
h5Url: 'https://xxxx/%23/xxxx'
},
})