GCM推送通知返回错误:字段数据必须是json数组


GCM push notification return error: field data must be a json array

当我使用GCM进行推送通知时,我得到了一个错误返回:字段"data"必须是JSON数组。当用户创建新帖子时,通知将发送到所有已注册的设备。有人知道如何解决它吗?非常感谢。

function Notification($post) {
    global $wpdb;
    $pub_post = get_post($post_ID);
    $post_title=$pub_post->post_title;
    $totalrecord = $this->get_allrecord(); 
     $message = "Your New post, " .$post_title." has been published";
      if (count($totalrecord) > 0) {
        //$display_row = null;
        foreach ($totalrecord as $row) {
        $a = $row->token;
        $this->sendPushNotification($a, $message);
            }
        } 
     } 
function get_allrecord(){
  global $wpdb;
  $results =$wpdb->get_results('SELECT token FROM wp_push_tokens ', OBJECT);
  return $results;
  }
 function sendPushNotification($registration_ids, $message) {
    $apiKey = "xxxxxxxxxxxxxxxxxxxxxxx";
     $headers = array("Content-Type:" . "application/json", "Authorization:" . "key=" .   $apiKey);
     $fields = array(
        'register' =>$registration_ids,
        'data' =>$message  );
     $ch = curl_init();
// Set the url, number of POST vars, POST data
curl_setopt($ch, CURLOPT_URL, "https://android.googleapis.com/gcm/send");
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, wp_json_encode($fields));
// Execute post
$result = curl_exec($ch);
   if($result === false)
        die('Curl failed ' . curl_error());
// Close connection
curl_close($ch);
return $result;

}

您的内容类型是"application/json",这意味着"data"字段必须是格式为的JSON

"data": {
    "message": "your message"
}

请注意,本例中的"message"密钥是自定义的。你可以使用你想要的任何密钥,当你的应用程序收到消息时,它必须搜索这些密钥。

我不懂PHP,但像这样的东西可能会起作用:

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