Я столкнулся с проблемой уведомления GCM push. Я получаю следующую ошибку.
{ "multicast_id":4630467710672911593, "success":0, "failure":1, "canonical_ids":0, "results":[{ "error":"MismatchSenderId" }] }
Ниже приведен код. Любая помощь могла бы быть полезна. Заранее спасибо.
public function gcmPush() { $regId = "APA91bHFcgOssQZEqtdUk3EC1ojwC5-LVG3NPV2bMqKyC9rPymR6StmAbz-N7Ss8fnvruZhWWNrR3lmBqpjQItlu00AKHPbltBclUJF-EfC5qG4CF2xiuYYC0NCf8u5rbiYFk8ARhIT4lY2AEPWzGpl1OtTvQEC0gA"; $registatoin_ids = array($regId); $message = array("msg" => 12345); $this->send_notification($registatoin_ids, $message); } public function send_notification($registatoin_ids, $message) { // Set POST variables $url = 'https://android.googleapis.com/gcm/send'; define('GOOGLE_API_KEY', 'AIzaSyBavsIgQKo1Nf9wKZ5o_fGvE_6MI52LFR0'); $fields = array( 'registration_ids' => $registatoin_ids, 'data' => $message, ); $headers = array( 'Authorization: key=' . GOOGLE_API_KEY, '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; }
«MismatchSenderId» – очевидная проблема, которую мы получаем в настоящее время.
Вот возможные случаи, которые вызывают эту проблему.
Случай 1: Несоответствие идентификатора отправителя -> Пожалуйста, проверьте номер проекта, который вы используете. Если это правильно или нет.
Случай 2: Неверный ключ API -> Убедитесь, что вы используете тот же API_Key или нет. И в большинстве случаев нам нужно генерировать Server_Key вместо Android_Key.
Случай 3: неправильный идентификатор устройства -> В большинстве случаев проблема связана с неправильным идентификатором устройства (идентификатор регистрации, сгенерированный GCM).
Убедитесь, что при каждом генерации нового ключа API меняются идентификаторы устройства вашего устройства. Затем для достижения эффекта потребуется около 5 минут.
Примечание. Идентификатор устройства связан с API-ключом.
Так….
– Создан новый ключ.
–GCM для Android включился в Google Dev. Консоль.
-Device, зарегистрированный с поддержкой бэкэнда (Android Project выполняет свою работу). Ключ устройства на сервере.
–Отправить на устройство. Потерпеть неудачу! Это же сообщение возвращается из GCM каждый раз.
Передать. Это НЕ ОС Android, ОС Android или устройства. Серверы GCM даже не пытаются отправить сообщение на устройство. Мой сервер отправляет в GCM, он возвращает сообщение …
{"multicast_id":6047824495557336291,"success":0,"failure":1,"canonical_ids":0,"results":[{"error":"MismatchSenderId"}]}
к серверу. Насколько я могу сказать, это означает Идентификатор устройства (тот, который возвращается на устройство, когда он зарегистрирован для push, а тот, который сохранен на бэкэнд (на панели управления), не соответствует или каким-то образом не связан с API Используется при отправке сообщения.
Отправка, конечно, начинается на моем сервере, идет в GCM, затем идет на устройство.
Это то, чего не происходит. Сообщение отправляется с моего сервера на GCM и обратно на мой сервер – с ошибкой.
Супер разочарование, как вы можете себе представить – мы все прошли через этот кошмарный материал 🙂
Ссылка: https://www.buzztouch.com/forum/thread.php?tid=C3CED924C86828C2172E924
Надеюсь, что это решит вашу проблему.