2013-06-24 4 views
8

У меня возникла проблема с уведомлением GCM push. Я получаю следующую ошибку.Сообщение об ошибке PHP GCM MismatchSenderId

{ 
    "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; 
} 
+0

Возможный дубликат [При отправке сообщений с использованием GCM я получаю ответ: MismatchSenderId] (http://stackoverflow.com/questions/11307689/when-sending-messages-using-gcm-i-keep-getting-response -mismatchsenderid) –

+0

Привет, пожалуйста, проверьте это http://stackoverflow.com/questions/11307689/when-sending-messages-using-gcm-i-keep-getting-the-response-mismatchsenderid. Я надеюсь, что это полезно для вас. –

ответ

8

«MismatchSenderId» является очевидной проблемой, что мы получаем в настоящее время.

Вот возможные случаи, вызывающие эту проблему.

Случай 1: Несоответствие идентификатора отправителя -> Пожалуйста, проверьте номер проекта, который вы используете. Если это правильно или нет.

Дело 2: Неверный ключ API -> Убедитесь, что используете тот же API_Key или нет. И в большинстве случаев нам нужно генерировать Server_Key вместо Android_Key.

Случай 3: ID Ошибочное устройства -> Большую часть времени проблема связана с неправильным ID устройства (регистрация ID генерируется ГКМ).

Будьте уверены, что каждый раз, когда вы создаете новый ключ API, меняются идентификаторы устройства вашего устройства. Затем для достижения эффекта потребуется около 5 минут.

Примечание: Идентификатор устройства связан с API-ключом.

Так ....

--Новая Ключ создан.

--GCM для Android Включено «включено» в Google Dev. Консоль.

- Дискография, зарегистрированная с использованием бэкэнда (проект Android выполняет свою работу). Ключ устройства на сервере.

--Отправить на устройство. Потерпеть неудачу! Это же сообщение возвращается из GCM каждый раз.

Резюме. Это НЕ ОС Android, ОС Android или устройства. Серверы GCM даже не пытаются отправить сообщение на устройство. Мой сервер отправляет в GCM, он возвращает сообщение ...

{"multicast_id":6047824495557336291,"success":0,"failure":1,"canonical_ids":0,"results":[{"error":"MismatchSenderId"}]} 

к серверу. Насколько я могу сказать, это означает Идентификатор устройства (тот, который возвращается на устройство, когда он зарегистрирован для push, а тот, который сохранен на бэкэнд (на панели управления), не соответствует или каким-то образом не связан с API Ключ, используемый при отправке сообщения.

отправка, конечно, начинается на моем сервере, идет в МОЦ, затем переходит к устройству.

Это то, что не происходит. сообщение идет от моего сервера к GCM и обратно на мой сервер - с ошибкой.

Супер разочарование, как все вы можете себе представить, - мы все прошли через эти кошмарные вещи, прежде чем :-)

Ссылка: https://www.buzztouch.com/forum/thread.php?tid=C3CED924C86828C2172E924

Надеется, что это решит вашу проблему.