2015-07-05 110 views
2

從GCM CCS服務器上游MSG接收值我使用由谷歌(repository URL)中提供的GCM演示應用程序。不同於「:」來自同一客戶端

在我的應用服務器中接收到上游XMPP消息時,從同一客戶端收到的連續令牌在其「」密鑰中有所不同,這是它應該如何實現的?

據我所知,「from」鍵總是指向由客戶端獲得的靜態GCM註冊ID,因此不應該改變(至少每個上游消息!)。

這裏有3個連續的上行信息轉換成JSON我從應用程序收到:

{u'category': u'com.google.android.gcm.demo', u'time_to_live': 86400, u'from': u'djrWhYFOLtE:APA91bE4kY9ZdM3N0RAQMJFqedDuTFQsTU6sdhbvJ-zEIWTwzw0kFLs_B05XZ-TgH_5y21VgqAXpWig59EZCSAaSBWKVjUFs-zFLG51uygvWMG6LBh_39IM', u'message_id': test1'} 

{u'category': u'com.google.android.gcm.demo', u'time_to_live': 86400, u'from': u'djrWhYFOLtE:APA91bHLqazSKrZGUUEPvMkIKdtWCVIxhdYILfPLeguPR_yDUrProRsCfeP3LQiFzR1o0-Ha-BUMor6pTxKuWmUr9zpE6hIZGEkDV2pcQDJSZUKH3DX91wE', u'message_id': test2'} 

{u'category': u'com.google.android.gcm.demo', u'time_to_live': 86400, u'from': u'djrWhYFOLtE:APA91bHAROejFamp-8qwFddOKmUl_EYc_A9HdwnB8ojkUIRX-5kFCjHsnIDQIFa-kWMOdE3NpqU643nTrQnzPFcswTFgd7wBo0KnAub29EEyGP3R01njxz8', u'message_id': test3'} 

這是預期的行爲還是我誤以爲的東西嗎?

任何幫助,非常感謝。

謝謝!

+0

這是正確的,它應該只會改變,如果應用程序的註冊令牌更改。你可以檢查應用程序是否有相同的註冊令牌或頻繁更改? – KayAnn

+0

@KayAnn應用程序註冊標記保持不變,但如上所述,每次在json對象的from字段中都會收到不同的標記。在這種情況下,我應該更新我保存在服務器中的註冊令牌還是保持不變?我可以將通知發送到From鍵的值嗎?在這種情況下,將通知發送到像100個不同的令牌將通知設備? – SpiXel

+0

我不認爲將通知發送到100個令牌將是必要的或有效的。你能告訴我你是否曾經爲同一個應用程序請求過多個註冊令牌?或者您的註冊令牌之前被刷新過多次?另外,你是否在「from」參數中得到任何重複令牌,或者每次都有不同的令牌? – KayAnn

回答

0

好了,所以後一點點挖和調查問題,似乎「來自:」鍵通常需要在從設備接收到的每個上行消息的不同的值。

有時也發送時通知給設備(使用從「來自:」截取的註冊ID鍵),GCM與Nack消息響應,表明該設備已註銷("DEVICE_UNREGISTERED"),所以我想谷歌經常無效登記「FROM:」內的ID在某段時間過後。

我最終做的是將實際的令牌(由GCM中的客戶端應用程序接收)發送到上游消息中的服務器,並完全忽略「From:」鍵,因爲它具有意外的行爲。採取這種方法到目前爲止我還沒有任何問題。

希望這可以幫助別人:)