2016-02-23 4 views
0

Я передаю серверу псевдоним, а затем я получаю идентификатор регистрации по нику из моей базы данных.gcm неверная ошибка регистрации

GOOGLE_API_KEY - это ключ сервера, созданный google gcm api.

это PHP код сервера:

<?php 

require_once("db_config.php"); 


$con = mysqli_connect(DB_SERVER, DB_USER, DB_PASSWORD) or  
die(mysqli_error()); 

$db = mysqli_select_db($con, DB_DATABASE) or die(mysqli_error()) or die(mysqli_error()); 


$nicknames = $_POST['nicknames']; 
$message = $_POST['message']; 




$registration_ids = mysqli_query($con, "SELECT regId FROM Users WHERE nickname = '$nicknames'"); 
$numOfRows = mysqli_num_rows($registration_ids); 

$row=mysqli_fetch_assoc($registration_ids); 
printf ("%s\n",$row["regId"]); 


if($numOfRows > 0) { 

$url = 'https://gcm-http.googleapis.com/gcm/send'; 
//$url = 'https://android.googleapis.com/gcm/send'; 
$fields = array('registration_ids' => array($registration_ids), 'data' => array("message" => $message),); 
$headers = array('Authorization: key=' . GOOGLE_API_KEY, 'Content-Type: application/json'); 

    $ch = curl_init(); 

    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)); 

    $result = curl_exec($ch); 
    if ($result === FALSE) { 
     die('Curl failed: ' . curl_error($ch)); 
    } 

    curl_close($ch); 
    echo $result; 
} 
else { 
    echo 'false'; 
}  

?> 

после того, как я отправить сообщение, я получаю:

{ "multicast_id": 4772095405461687926, "успех": 0, "неудача": 1, «canonical_ids»: 0, «results»: [{«error»: «InvalidRegistration»}]}]

Я также напечатал себе идентификатор регистра, который я получаю из своей базы данных, и он соответствует идентификатор регистрации устройства.

ty для вашей помощи.

ответ

0

Вы должны проверить маркер регистрации, который вы передаете на сервер. См. Downstream message error response codes.

Вы также можете посмотреть на этот documentation, который предлагает проверить срок действия регистрационного токена.

+0

как я уже сказал, я проверил, и идентификатор регистрации моего устройства соответствует идентификатору регистрации, который я отправляю на сервер gcm. – Ofek

+0

Документация - это предлагаемое решение. Пожалуйста, еще раз проверьте, есть ли место где-то. Удачи! – gerardnimo

1

ОК я решил свою проблему. проблема заключалась в том, что в этой строке «array ($ registration_ids)» $ register_ids - это объект результата, поэтому я изменил его на $ row ["regId"], и я получил идентификатор регистрации.

сейчас он работает.

Смежные вопросы