我遇到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"
}
}
答案 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。