GCM数据返回空值。

5

我在使用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

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

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

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

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

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

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

您的消息应该像以下JSON数据一样:

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

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


1
谢谢您的回复!但即使使用这种格式,我仍然没有看到数据字段中的任何内容。data:null。真是太奇怪了,我无法看到event.data中的任何内容。 - Jay

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接