2015-04-23 11 views
5

Gdy używam GCM, otrzymałem komunikat o błędzie: pole "data" musi być tablicą JSON. Ktoś ma jakiś pomysł, jak go rozwiązać? Dziękuję Ci. Jest pierwsza część mojego kodu, fragmenty kodu zostały pominięte:Błąd powrotu GCM: dane pola muszą być tablicą 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); 
} 

?> 

Oto druga część:

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

Odpowiedz

0

Zastosowanie json_encode na obiekcie $fields powrotu reprezentacji JSON.

Przejrzyj zaakceptowaną odpowiedź here, aby zobaczyć, jak jest używana.

4

Zmiana od linii 5 kodzie

$message = $gcm_data; 

$fields = array(
    'registration_ids' => $registrationIDs, 
    'data' => array("message" =>$message) 
); 
Powiązane problemy