2013-05-22 42 views
1

幾個月前,我通過Google API控制檯激活了我的GCM,並在我的Android項目中實現了它,並且都工作得很好。我能夠註冊,獲得regId並使用我的服務器API密鑰從我的服務器發送通知。一切正常。新的senderID在GCM上不起作用mismatchedSenderID

昨天我創建了一個新的senderID與我的其他gmail帳戶,但是當我用新信息替換senderID和服務器API密鑰時,Google回覆了惱人的mismatchedSenderID錯誤消息,並且GCM將不會發送!

項目中沒有其他變化,只是一個新的senderID!可能是什麼問題呢?

+1

您是否替換了服務器應用上的服務器密鑰? –

+0

是的,我確定我是。 – MyFlashLab

+0

如果您的'senderId'發生了變化,用戶必須重新註冊該特定的'senderId'才能收到通知。 – guanabara

回答

2

那麼,如果您開始使用新的API密鑰發送通知,那麼爲舊的senderID生成的所有註冊ID將停止工作。您應清除數據庫並開始從您的用戶收集新的註冊ID(基於新的senderID)。

不匹配的發件人

註冊ID被綁定到一組特定的發件人。當應用程序註冊GCM使用情況時,它必須指定允許哪些發件人發送消息。確保在嘗試將消息發送到設備時使用其中的一種。如果您切換到不同的發件人,現有的註冊ID將不起作用。錯誤代碼爲MismatchSenderId時會發生。

+0

我有同樣的問題。你如何建議我「開始收集新的註冊ID」?我的目標是設備通過返回的id =「」來調用getRegistrationId()。然後服務器將存儲新的registrationId。爲此,設備必須首先取消註冊,但我不希望設備每次運行應用程序時都取消註冊並重新註冊。最好的解決方案是,如果我的服務器可以告訴GCM服務器重新註冊具有某些舊的註冊標識的設備...所以問題是設備/應用程序如何知道它的registrationId是否已過時(因爲它屬於舊的senderId)。 – x3m