我想發送推送更新到一些android設備。同時他們中的一些人也得到了新的身份證,所以我Google告訴我有正規的ID。從文檔我讀:android GCM獲取標準ID的原始編號
如果MESSAGE_ID設置,檢查registration_id:
- 如果registration_id設置,在您的服務器數據庫中的新值(規範ID)取代原來的ID。請注意,原始ID不是結果的一部分,因此您需要從請求中傳遞的registration_ids列表中獲取它(使用相同的索引)。
我錯過了一個部分,或者如果您向Google發送超過1個註冊ID,這是否含糊不清?
我請求(爲便於閱讀,取代IDS):
"{"data":{"favorite":1},"registration_ids":["1","2","3","4","5","6"]}"
從谷歌的迴應是:
{
"multicast_id":7917175795873320166,
"success":6,
"failure":0,
"canonical_ids":4,
"results":[
{"registration_id":"3","message_id":"m1"},
{"message_id":"m1"},
{"message_id":"m1"},
{"registration_id":"3","message_id":"m1"},
{"registration_id":"3","message_id":"m1"},
{"registration_id":"3","message_id":"m1"}
]
}
從此,我知道ID 3是正確的,但其原有的ID應該我換成3?爲每個註冊的ID發送每條消息將是一種浪費。我已經在Stackoverflow(GCM and id handling)上讀過一篇關於解決它的Java服務器的帖子,但我的不是(RoR)。
有關如何解決此問題的任何想法?
啊,我沒有接,只是包含在「MESSAGE_ID」考慮到項目,所以我正在考慮在4項響應我6入場請求。你的第一份清單爲我做了。謝謝。 – Jos
如何在首次發送前過濾正確的「registration_id」?否則,在第一種情況下,服務器仍然發送三條重複消息,並且只有在接收到服務器響應後纔會清除重複。 – iBog