GCM 推送通知错误:发件人 ID 不匹配



我正在尝试使用GCM将消息推送到我的安卓手机。

无论我尝试什么,我总是遇到相同的错误:MismatchSenderId

我正在使用 CLI 的简单卷曲进行测试。

我生成了 3 个密钥,并尝试了所有 3 个:

  • 一个用于服务器AIzaSyDXz6HLhnRsyyBSKVpdsSrPEC8rFfFbHY8
  • 一个用于浏览器AIzaSyDAyBIP1Qlitli5Yj-F9VIORPwLLCCn3Vo
  • 一个适用于安卓AIzaSyCAum68Fu6U7LXpRkq0lLnCti9xQfBgL3s

我的项目 ID 是starlit-verve-773,我的项目编号是 401070672185

我的注册 ID 是

APA91bENhVHjlNaf1OPo0VrxblBKkePzIcm14C4S7E0BSXsKDm9Nk0yk15Mwv54GFgPh5pP_gJTjp5Q3a5Xdfn4N8210GScD2fLmg73xDJBuaRVvjGOTh8juws5dbhYDpiSzGlaP1IhLaX6Vf9-rEEEn-JWrSa9oXUe9T7fMzgTLLrPHEosRUNw

我尝试了 2 个 curl 命令:

curl --header "Authorization: key=<key>" --header Content-Type:"application/json" https://android.googleapis.com/gcm/send -d "{"registration_ids":["<reg ID>"]}"
curl --header "Authorization: key=<key>" --header Content-Type:"application/json" https://android.googleapis.com/gcm/send -d "{"registration_ids":["<reg ID>"],"data":{"message":"Hello"}}"

我的 php 服务器在尝试推送消息时遇到相同的错误。

我通过 2 种方法获得了我的注册 ID:- 一个应用程序,使用PHP和MySQL将reg ID发送到Web服务器- 当我启动此应用程序时从Eclipse记录

我现在被困在这个上面 2 天了。我尝试使用与手机上的Google帐户不同的Google帐户打开一个新的开发人员项目。我不知道这是否正常,但 reg ID 在 2 个不同的项目中仍然相同。

据我了解,我的手机应该为每个项目提供不同的注册 ID。

注册 ID 是问题所在吗,我该如何解决这个问题?有没有其他方法可以获取注册 ID?

我知道这个问题有很多问题,但没有一个适合我。

尝试使用以下代码:

define("GOOGLE_API_KEY", "[YOUR API KEY]");
define("GOOGLE_GCM_URL", "https://android.googleapis.com/gcm/send");
function send_gcm_notify($reg_id, $message) 
{
    $fields = array(
        'registration_ids'  => array( $reg_id ),
        'data'              => array( "[Attr]" => '[val]', "[Attr]" => '[val]'),
    );
    $headers = array(
        'Authorization: key=' . GOOGLE_API_KEY,
        'Content-Type: application/json'
    );
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, GOOGLE_GCM_URL);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($fields));
    $result = curl_exec($ch);
    if ($result === FALSE) {
        die('Problem occurred: ' . curl_error($ch));
    }
    curl_close($ch);
    echo $result;
}
$reg_id = "******";
$msg = 'hi!';
send_gcm_notify($reg_id, $msg);

最新更新