2015-01-21 66 views
1

GCM推送通知。当我使用GCM推送通知,错误与PHP

Field"data"mustbeaJSONarray: { 
    "details": [ 
     { 
      "regid": "APA91bH8zxTxfoSLWhE21IbTR9a10cvIcm17-zsPY_0OAy3JhO_8gTwMwwAUd_4vZiLu5UF4A1m8R3TEIffDaChVR0y2us9iebngkaWlOM34ix4PUeOgIoM9aGOcxLLECAGjKNSwupTY0p2O0BeXjSCp8RYFaD-xzg", 
      "status": "true", 
      "post_userid": "34", 
      "post_id": "7", 
      "postuser_name": "dev", 
      "message": "gggggg" 
     }]} 

而且给我的错误:“字段的数据必须是一个JSON阵列”

请指导我

我的代码:

$fields = array('data'=> $message); 
$headers = array('Authorization: key=' . API_ACCESS_KEY, 'Content-Type: application/json'); 
$ch = curl_init(); 
curl_setopt($ch,CURLOPT_URL, 'android.googleapis.com/gcm/send';);  
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; 
+1

请显示用于发送消息到GCM的代码。 – Eran 2015-01-21 10:31:29

+0

$ fields = array('data'=> $ messsssagedddd); \t \t \t \t \t \t \t \t \t \t \t \t $头=阵列( '授权:键=' API_ACCESS_KEY,\t '内容类型:应用/ JSON'。\t \t); \t \t \t \t \t \t \t \t $ CH = curl_init(); \t \t \t \t curl_setopt($ ch,CURLOPT_URL,'https://android.googleapis.com/gcm/send'); \t \t \t \t curl_setopt($ ch,CURLOPT_POST,true); \t \t \t \t curl_setopt($ ch,CURLOPT_HTTPHEADER,$ headers); \t \t \t \t curl_setopt($ ch,CURLOPT_RETURNTRANSFER,true); \t \t \t \t curl_setopt($ ch,CURLOPT_SSL_VERIFYPEER,false); \t \t \t \t curl_setopt($ ch,CURLOPT_POSTFIELDS,json_encode($ fields)); \t \t \t \t $ result = curl_exec($ ch); \t \t \t \t curl_close($ ch); echo $ result; – 2015-01-21 10:37:42

+0

我的代码是:$ fields = array('data'=> $ message); \t \t \t \t \t \t \t \t \t $头=阵列( '授权:键=' API_ACCESS_KEY,\t。 '内容类型:应用/ JSON' \t \t); \t \t \t \t \t \t \t \t $ CH = curl_init(); \t \t curl_setopt($ ch,CURLOPT_URL,'https://android.googleapis。com/gcm/send'); \t \t curl_setopt($ ch,CURLOPT_POST,true); \t \t curl_setopt($ ch,CURLOPT_HTTPHEADER,$ headers); \t \t curl_setopt($ ch,CURLOPT_RETURNTRANSFER,true); \t curl_setopt($ ch,CURLOPT_SSL_VERIFYPEER,false); \t \t \t \t curl_setopt($ ch,CURLOPT_POSTFIELDS,json_encode($ fields)); \t \t $ result = curl_exec($ ch); \t \t \t \t curl_close($ ch); \t \t \t \t echo $ result; – 2015-01-21 10:39:33

回答

1

嗯,你的JSON确实不是n像它应该看起来一样。 它应该是这样的:

{ 
    "data": { 
     "status": "true", 
     "post_userid": "34", 
     "post_id": "7", 
     "postuser_name": "dev", 
     "message": "gggggg" 
    }, 
    "registration_ids":["APA91bH8zxTxfoSLWhE21IbTR9a10cvIcm17-zsPY_0OAy3JhO_8gTwMwwAUd_4vZiLu5UF4A1m8R3TEIffDaChVR0y2us9iebngkaWlOM34ix4PUeOgIoM9aGOcxLLECAGjKNSwupTY0p2O0BeXjSCp8RYFaD-xzg"] 
} 
+0

$字段=阵列( 'registration_ids'=> $ msgd,阵列( '数据'=> $消息)); “registration_ids” 字段不是JSON阵列 – 2015-01-21 12:10:27

+0

@DevangADD然后使其JSON数组。我不知道PHP,但可能类似'$ fields = array('registration_ids'=> array($ msgd),array('data'=> $ message));'会工作。 – Eran 2015-01-21 12:13:20

+0

我用这个代码:$ fields = array('registration_ids'=> $ msgd,array('data'=> $ message));它会显示这个错误“”registration_ids“字段不是JSON数组” – 2015-01-21 12:15:30