2014-11-23 158 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);