1

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

{"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

4 回答 4

10

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

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

于 2012-12-17T17:42:30.933 回答
3

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

不匹配的发件人 注册 ID 与特定的发件人组相关联。当应用程序注册使用 GCM 时,它必须指定允许哪些发送者发送消息。确保您在尝试向设备发送消息时使用其中之一。如果您切换到其他发件人,现有的注册 ID 将不起作用。当错误代码为 MismatchSenderId 时发生。

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

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

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

于 2012-12-05T16:41:25.823 回答
1

curl -X POST \
-H "Authorization: key= write here api_key" \
-H "Content-Type: application/json" \
-d '{"registration_ids": ["write here reg_id generated by gcm"],
"data ": { "message": "来自 Rajkumar 的手动推送通知"}, "priority": "high" }' \ https://android.googleapis.com/gcm/send

MismatchSenderId 因为在同一设备上您使用不同的密钥登录。要解决此问题,请卸载应用程序并再次运行它并更新注册密钥。然后在您的终端中运行我在上面发布的 CURL 脚本,它将提供成功消息,您将收到通知到您的设备

于 2016-02-22T14:07:06.100 回答
1

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

于 2015-12-31T10:27:37.820 回答