GCM return error: field data must be json array

When I use GCM, I got an error: the "data" fields must be a JSON array. Does anyone have an idea on how to solve it? Thanks. The first part of my code, parts of the code are omitted:

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

Here is the second part:

 <?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; ?> 
+5
source share
2 answers

From line 5 of your code

 $message = $gcm_data; $fields = array( 'registration_ids' => $registrationIDs, 'data' => array("message" =>$message) ); 
+4
source

Use json_encode for your $fields object to return a JSON representation.

Look at the accepted answer here to find out how it is used.

0
source

All Articles