2015-04-23 2 views
5

Когда я использую GCM, я получил сообщение об ошибке: поля «data» должны быть массивом JSON. У кого-нибудь есть представление о том, как его решить? Спасибо. Существует первую часть моего кода, части кода опущены:Ошибка возврата GCM: данные поля должны быть json-массивом

<?php 

$gcm_regid = array(); 
$gcm_data = array(); 
while ($row = mysql_fetch_array($result)) { 
array_push($gcm_regid, $single_gcm_regid); 
array_push($gcm_data , $notificationMessage); 
} 

?> 

Вот вторая часть:

<?php 

$url = 'https://android.googleapis.com/gcm/send'; 

$apiKey = '******************************'; 
$registrationIDs = $gcm_regid; 

$data = $gcm_data; 

$fields = array('registration_ids' => $registrationIDs, 
      'data' => $data); 

//http header 
$headers = array('Authorization: key=' . $apiKey, 
      'Content-Type: application/json'); 

//curl connection 
$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); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($fields)); 

$result = curl_exec($ch); 

curl_close($ch); 

echo $result; 
?> 

ответ

0

Использование json_encode на вашем $fields объекте, чтобы вернуть представление JSON.

Посмотрите на принятый ответ here, чтобы узнать, как он используется.

4

Изменение от линии 5 кода

$message = $gcm_data; 

$fields = array(
    'registration_ids' => $registrationIDs, 
    'data' => array("message" =>$message) 
); 
Смежные вопросы