GCM推送通知错误:MismatchSenderId

时间:2014-11-23 22:50:12

标签: android google-cloud-messaging

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

无论我尝试什么,我总是有同样的错误:MismatchSenderId

我正在使用来自CLI的简单curl进行测试。

我生成了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将注册ID发送到Web服务器的应用程序 - 当我启动这个应用程序时从日食中记录

我现在已经坚持了2天。 我试图打开一个新的开发人员项目,而不是我手机上的谷歌帐户。 我不知道这是否正常,但是对于2个不同的项目,reg ID仍然是相同的。

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

注册ID是问题吗?我该如何解决这个问题? 是否有另一种获取注册ID的方法?

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

1 个答案:

答案 0 :(得分:0)

尝试使用此代码:

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);