4

我遇到了GCM平台问题,并从请求中获取任何类型的数据。我可以看到推送通知,但可以从中检索任何数据。GCM数据返回null

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

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

数据,该参数指定消息有效负载的custome键值对。

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

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

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

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

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

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

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

+0

谢谢你的回应!但即使使用这种格式,我还没有看到数据字段中的任何内容。 'data:null'。它太奇怪了,我不能在'event.data'中看到任何东西 – Jay