Я немного смущен. У меня есть сервер приложений на стороне сервера GCM, который использует ключ от Google Developer Console. Я могу создать Android-ключ в соответствии с инструкциями, приведенными в руководстве по началу работы, или я могу создать ключ браузера, ключ сервера или ключ OAuth.GCM Push Server, какой ключ API использовать?
Может кто-нибудь сказать, какой ключ я должен использовать на стороне сервера PHP при отправке сообщений через GCM на устройства Android?
Это функция, которая отправляет сообщение GCM
public function send_notification($registatoin_ids, $message) {
// include config
include_once './config.php';
// Set POST variables
$url = 'https://android.googleapis.com/gcm/send';
$fields = array(
'registration_ids' => $registatoin_ids,
'data' => $message,
);
$headers = array(
'Authorization: key=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX',
'Content-Type: application/json'
);
// Open connection
$ch = curl_init();
// Set the url, number of POST vars, POST data
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// Disabling SSL Certificate support temporarly
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($fields));
// Execute post
$result = curl_exec($ch);
if ($result === FALSE) {
die('Curl failed: ' . curl_error($ch));
}
// Close connection
curl_close($ch);
echo $result;
}
Очевидно, что строка XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX заменяется моей api_key в исходном коде.
p.s: Мой андроид регистрируется в GCM, у меня есть идентификатор регистрации, отправленный на сервер, это запрос отправки сообщения, который всегда возвращает 401 Несанкционированный, боюсь, что я использую неправильный ключ?
p.s2: Я пробовал все 3 вида API_KEYs без успеха.
Пожалуйста разместим ваш код сервера – Eran
код добавил @Eran – basitj