GCM数据返回null

Jay*_*Jay 5 javascript google-cloud-messaging google-cloud-platform

我遇到了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'
    }));
});
Run Code Online (Sandbox Code Playgroud)

我用一个简单的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\"}"
Run Code Online (Sandbox Code Playgroud)

任何人都知道为什么我没有数据正文得到通知?

编辑:我也试过这个json.

{
"registration_ids":
    [
        "xxxxxxxxx"
    ],
"data":
    {
        "title": "some title",
        "message": "some message"
    }
}
Run Code Online (Sandbox Code Playgroud)

And*_*ast 0

根据Google官方文档,可以使用两个不同的键进行设置。

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

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

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

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

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

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

{
"registration_ids" => "some_target_device_id",
"data": {
"title": "My title",
"message": "This is the message!",
}
}
Run Code Online (Sandbox Code Playgroud)

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