我正在尝试使用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);