You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Ionic Cordova应用中获取OneSignal推送的自定义附加数据

获取OneSignal推送中的自定义data字段

我来帮你搞定这个问题!首先要明确一个关键点:你后端PHP代码里fields数组中的data字段,在Ionic Cordova的OneSignal回调里,直接对应jsonData.payload.additionalData这个对象本身,不需要再加feilds这类额外的前缀——你之前试的jsonData.payload.additionalData.feilds是错误的,因为feilds只是你后端自己在返回响应里加的字段,根本不会被推送到客户端。

正确的获取步骤:

  1. 先确认additionalData的完整结构:
    你可以先在回调里打印整个additionalData的内容,这样就能清楚看到里面的属性名,避免拼写错误或者结构不匹配的问题:
    this.oneSignal.handleNotificationReceived().subscribe((jsonData) => {
        if(jsonData.payload.additionalData) {
            // 先打印完整的additionalData,查看内部结构
            console.log("完整的自定义数据:", JSON.stringify(jsonData.payload.additionalData));
            // 后续业务操作...
        }
    });
    
  2. 根据后端$received的结构获取对应字段:
    假设你的$received是一个类似这样的关联数组:
    $received = array('current' => '这是要推送的自定义内容');
    
    那在客户端里直接通过jsonData.payload.additionalData.current就能拿到对应的值:
    this.oneSignal.handleNotificationReceived().subscribe((jsonData) => {
        if(jsonData.payload.additionalData) {
            // 获取自定义的current字段
            const currentData = jsonData.payload.additionalData.current;
            this.myService.NotirefreshData(currentData);
            this.storage.set('current', JSON.stringify(currentData));
            this.presentAlert('From Server', currentData);
            // 其他存储或业务操作...
        }
    });
    

可能的坑点:

  • 注意后端拼写错误:你后端代码里写了$response['feilds'](正确拼写是fields),不过这个不影响推送,因为实际推送用的是$fields变量,所以不用修改这个。
  • 确保$received是合法的关联数组:如果$received是多维数组或非关联数组,你需要对应调整客户端的字段获取路径。

内容的提问来源于stack exchange,提问作者Shehryar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 07:14:15