我正在尝试使用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的方法?
我知道这个问题存在很多问题,但没有一个问题适合我。
答案 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);