Android GCM发送和MismatchSenderId

时间:2012-12-05 16:16:04

标签: android google-cloud-messaging

奇怪的是,通知之前正在发挥作用。所以我不确定发生了什么。我尝试将我的应用重新安装到设备上,但没有任何改变。

{"multicast_id":xxxxxxxxxxxxxxxxxxx,"success":0,"failure":1,"canonical_ids":0,"results":[{"error":"MismatchSenderId"}]}

因为这在某一点上起作用,我知道我正在使用正确的密钥。我甚至根据我遇到的其他SOF线程进行了三重检查。现在可能出现什么问题?我已经环顾了几天了,我还在茫然......

**编辑**

这是从我的服务器发送消息时的POST信息。

接头

Array
(
    [0] => Authorization: key=xxxxxxx-key-for-browser-apps-from-google-apis-console-xxxxxxx
    [1] => Content-Type: application/json
)

字段

Array
(
    [registration_ids] => Array
        (
            [0] => xxxxxxxxx-big-old-id-from-the-device-xxxxxxxx

    [data] => Array
        (
            [message] => hello
        )

)

另外

我使用的是与Key for browser apps (with referers)相关联的密钥。

4 个答案:

答案 0 :(得分:10)

显然,当您重新编译应用程序时,它有时会将设备ID生成丢弃到与先前ID不匹配的位置。

我要做的是在手机上完全卸载应用程序并再次重新编译应用程序(通过eclipse)。这看起来很可悲,但它最接近我目前可行的解决方案..

答案 1 :(得分:3)

我认为这必须与您在Google API控制台中为项目设置API访问权限的方式有关,特别是“允许的引用者”。正如开发人员所说

  

不匹配的发件人注册ID与某一组绑定   发件人。当应用程序注册GCM使用时,它必须指定   哪些发件人可以发送消息。确保你使用的是一个   尝试向设备发送消息时的那些。如果你切换到   不同的发件人,现有的注册ID将无法使用。发生   当错误代码是MismatchSenderId时。

我的项目设置为允许任何引用者:

Key for browser apps (with referers) 
API key: my secret  
Referers: Any referer allowed

也许您已将其限制在某个IP范围内,现在您正尝试从该范围外发送消息

答案 2 :(得分:1)

您没有使用正确的设备令牌,这就是您收到错误的原因。 因此,请获取新设备令牌(Android移动设备令牌)并使用它

答案 3 :(得分:1)

curl -X POST \
-H"授权:key =在这里写api_key" \
-H" Content-Type:application / json" \
-d' {" registration_ids":["在这里写下由gcm&#34生成的reg_id;],
"数据":{"消息":"来自Rajkumar"}的手动推送通知, "优先":"高" }' \ https://android.googleapis.com/gcm/send

MismatchSenderId,因为在同一设备中,您使用不同的密钥记录。解决此问题卸载应用程序并运行它againg并更新注册密钥。然后在你的teminal中运行CURL脚本,我在上面发布它将给出成功消息,你将收到通知你的设备