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