uni-app unipush通知消息payload获取不到自定义参数
uni-app unipush通知消息payload获取不到自定义参数
开发环境 | 版本号 | 项目创建方式 |
---|---|---|
Windows | win10专业版 | HBuilderX |
示例代码:
// 监听个推消息事件
uni.onPushMessage(function (message) {
if(message.type == 'click'){
// 如果需要跳转app内指定页面,则自己实现下方的跳转代码。
console.log("接收到的消息内容",message);
console.log("接收到的消息内容",message.payload);
}
// 监听在线推送消息,若云函数设置了 "force_notification":true,则不会触发此 receive。
if(message.type == 'receive'){
console.log("接收到的消息内容",message);
}
});
操作步骤:
服务端请求云函数URL化的链接 (php)
$params = [
'cids'=>$push_clientid,
'force_notification'=>true,
'title'=>'测试推送',
'content'=>'你好1123456789',
'payload'=>[
"data1"=>"12",
],
'options'=>[
"XM" => ["/extra.channel_id"=>"*****"],
],
];
本地打包自定义基座真机测试打印推送 参数
预期结果:
{
"type": "click",
"data": {
"UUID": "****",
"title": "测试推送",
"appid": "****",
"content": "你好112345678",
"payload": {
"title": "测试推送",
"content": "你好112345678",
"data": {
"data1": "12",
}
}
}
}
实际结果:
{
"type": "click",
"data": {
"UUID": "****",
"title": "测试推送",
"appid": "****",
"content": "你好112345678",
"payload": {
"title": "测试推送",
"content": "你好112345678",
"data": {
"username": "uni-app",
"text": "这是透传的数据data的里面的内容"
}
}
}
看你写的结果里,有payload啊
你的预期结果和实际结果是一样的,你再详细描述下这问题
辛苦大佬解惑下,困在这好几天了…
回复 jy_yd: 你给云函数里的代码扔出来,然后给接受到的参数拿出来看看
回复 套马杆的套子: public function __construct() { $this->url = ‘https://fc-mp-ebba9d85-8e44-45ab-9fda-*****.next.bspapp.com’; }
// ‘force_notification’=>true, ‘title’=>‘测试推送’, ‘content’=>‘你好1123456789’, ‘payload’=>[ “data1”=>“12”, ], ‘options’=>[ “XM”=> ["/extra.channel_id"=>"****"], ], ‘click_type’=>‘intent’, ]; $result = Http::sendRequest($path, $params, ‘GET’); dump($result); }
{ “type”: “click”, “data”: { “UUID”: “androidPushMsg113662791”, “title”: “测试推送”, “appid”: “UNIF61A574”, “content”: “你好1123456789”, “payload”: { “title”: “测试推送”, “content”: “你好1123456789”, “data”: { “username”: “uni-app”, “text”: “这是透传的数据data的里面的内容” } } } }
这是里面加的内容,是我加的格式不对吗
我是php请求的云函数的url。上面是请求的参数
本地真机打包自定义基座,可以收到在线消息,但是payload自定义参数打印出来没有
你用unicloud发送是否正常?
能不能在跟进下呢
回复 jy_yd: 你先确定一下 unicloud是否正常,再用url话接口。
回复 DCloud_Android_THB: unicloud后台发送透传消息是有自定义参数的
回复 jy_yd: 那你需要排查一下url化的问题了
回复 DCloud_Android_THB: 能给个大概方向吗,url函数那看了好几遍,没看出啥问题
正常的,我请求 云函数url的链接,消息也是正常发送的
unicloud后台发送透传消息 能拿到自定义参数
在uni-app中使用unipush进行消息推送时,如果你发现无法获取到自定义参数,这通常是因为在推送消息时没有正确设置这些参数,或者在接收消息时没有正确解析这些参数。以下是一个示例,展示如何在发送和接收消息时设置和获取自定义参数。
发送消息时设置自定义参数
首先,确保你在发送推送消息时包含了自定义参数。这可以通过uniPush的API实现。以下是一个使用uniPush API发送消息的示例代码:
// 引入uniPush模块
const uniPush = require('uni-push');
// 推送消息配置
const message = {
title: '测试消息',
content: '这是一条测试消息',
to_user: ['user_id_1', 'user_id_2'], // 接收者用户ID列表
data: { // 自定义参数
key1: 'value1',
key2: 'value2'
}
};
// 发送推送消息
uniPush.sendMessage(message, (res) => {
if (res.code === 0) {
console.log('消息发送成功');
} else {
console.error('消息发送失败', res);
}
});
接收消息时获取自定义参数
在uni-app中,你可以通过监听onPush
或onPushNotification
事件来接收推送消息,并获取其中的自定义参数。以下是一个在App.vue中监听推送消息的示例代码:
<script>
export default {
onLaunch: function() {
// 监听推送消息
plus.push.addEventListener('receive', function(msg) {
// 打印收到的消息
console.log('收到推送消息:', msg);
// 获取自定义参数
const customData = msg.payload.data;
console.log('自定义参数:', customData);
// 示例:获取key1的值
const key1Value = customData.key1;
console.log('key1的值:', key1Value);
});
// 如果需要点击通知栏进入应用时获取消息,可以监听click事件
plus.push.addEventListener('click', function(msg) {
// 打印点击的消息
console.log('点击了推送消息:', msg);
// 同样可以获取自定义参数
const customData = msg.payload.data;
console.log('自定义参数:', customData);
});
}
}
</script>
确保你的uni-app项目已经正确配置了uniPush,并且已经获得了相应的推送权限。以上代码展示了如何在发送消息时设置自定义参数,以及在接收消息时获取这些参数。如果仍然无法获取自定义参数,请检查消息发送和接收的代码是否有误,或者查看uni-app和uniPush的官方文档以获取更多信息。