【问题标题】:GCM data returning null [duplicate]GCM 数据返回 null [重复]
【发布时间】:2016-09-20 23:06:27
【问题描述】:

我在使用 GCM 平台时遇到问题,并且从请求中获取任何类型的数据。我可以看到推送通知,但可以从中检索任何数据。

self.addEventListener('push', function(event) {
  console.log('Push message', event); //<--- event.data == null !!! :(

  var title = 'Push message';

  event.waitUntil(
    self.registration.showNotification(title, {
    'body': 'Some Messages',
    'icon': 'images/myImageSmall.png'
    }));
});

我用一个简单的curl 请求进行测试

curl --header "Authorization: key=MY_KEY" --header "Content-Type: application/json" 
https://android.googleapis.com/gcm/send -d 
"{\"data\" : {\"THIS_DOESNT\":\"SHOW_HELP_ME\"}, \"to\":\"THERE_ID\"}"

有人知道为什么我会收到没有数据正文的通知吗?

编辑:我也试过这个json。

{
"registration_ids":
    [
        "xxxxxxxxx"
    ],
"data":
    {
        "title": "some title",
        "message": "some message"
    }
}

【问题讨论】:

    标签: javascript google-cloud-messaging google-cloud-platform


    【解决方案1】:

    基于Official Google Documentation,可以使用两个不同的键进行设置。

    数据,该参数指定消息负载的自定义键值对。

    密钥不应是保留字(“from”或任何以“google”或“gcm”开头的字)。请勿使用此表中定义的任何字词(例如 collapse_key)。

    建议使用字符串类型的值。您必须将对象或其他非字符串数据类型(例如整数或布尔值)中的值转换为字符串。

    Notification,此参数指定通知负载的预定义、用户可见的键值对。

    您应该使用数据键并在通知的有效负载中设置。发送后,您可以打印收到的通知结果,并查看数据键中是否存在正确的有效负载。

    您的消息应该类似于以下 JSON 数据:

    {
    "registration_ids" => "some_target_device_id",
    "data": {
    "title": "My title",
    "message": "This is the message!",
    }
    }
    

    有关通知消息和数据消息选项的更多信息,请参阅Payload

    【讨论】:

    • 感谢您的回复!但即使使用这种格式,我还没有在数据字段中看到任何内容。 data: null。太奇怪了,我在event.data 中什么都看不到
    猜你喜欢
    • 2022-01-03
    • 2022-01-18
    • 2019-10-04
    • 2011-11-01
    • 2017-05-09
    • 2012-02-01
    • 2015-09-11
    • 2011-11-09
    • 1970-01-01
    相关资源
    最近更新 更多