GCM数据返回null

时间:2016-05-23 22:35:40

标签: 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'
    }));
});

我使用简单的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"
    }
}

1 个答案:

答案 0 :(得分:0)

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

数据 ,此参数指定邮件有效内容的自定义键值对。

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

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

通知 ,此参数指定通知有效内容的预定义的,用户可见的键值对。

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

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

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

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