2014-11-23 156 views
0

我正在尝试使用GCM将消息推送到我的android手机。GCM推送通知错误:MismatchSenderId

无论我尝试,我总是有相同的错误:MismatchSenderId

我从CLI简单的卷曲测试。

我产生3个键和我尝试了所有3:

  • 一个服务器AIzaSyDXz6HLhnRsyyBSKVpdsSrPEC8rFfFbHY8
  • 一个浏览器AIzaSyDAyBIP1Qlitli5Yj-F9VIORPwLLCCn3Vo
  • 一个用于Android系统AIzaSyCAum68Fu6U7LXpRkq0lLnCti9xQfBgL3s

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

我的注册ID是

APA91bENhVHjlNaf1OPo0VrxblBKkePzIcm14C4S7E0BSXsKDm9Nk0yk15Mwv54GFgPh5pP_gJTjp5Q3a5Xdfn4N8210GScD2fLmg73xDJBuaRVvjGOTh8juws5dbhYDpiSzGlaP1IhLaX6Vf9-rEEEn-JWrSa9oXUe9T7fMzgTLLrPHEosRUNw 

我试图2个卷曲命令:

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服务器具有相同的错误时,它试图推动的消息。

我得到了我REG ID有2种方法: - 其中发送REG ID到Web服务器与PHP和MySQL 一个应用程序 - 原木日食当我启动这个程序

我卡在这现在为期2天。 我试图打开一个新的开发人员项目,这个开发人员项目与我手机上的Google帐户不同。 我不知道这是否正常,但注册ID与2个不同的项目仍然相同。

据我所知,我的手机应该有不同的注册ID为每个项目。

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

我知道这个问题有很多问题,但没有人为我工作。

+0

是否提那些密钥不会暴露任何敏感信息?而且你说很多关于各种问题的答案都不适合你,你能否详细说明这些解决方案? – 2014-11-23 22:57:35

+0

是的,但可以重新生成密钥并删除项目。我试图切换服务器密钥和浏览器密钥,结果相同。我试图将项目ID和项目编号作为发件人ID进行切换。 – 2014-11-23 23:04:29

回答

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