0

我正在尝试使用 GCM 将数据发送到设备,但在输出中得到花括号(如下图所示)。我是 php 新手,我想知道如何解决这个问题。这是PHP服务器代码的一部分:

 public function send_notification($registatoin_ids, $message, $title) {
    // include config
    include_once './config.php';


    $url = 'https://android.googleapis.com/gcm/send';
$data = array("title" => $title, "message" => $message);
    $fields = array(
        'registration_ids' => $registatoin_ids,
        'data' => $data
    );

   $headers = array(
        'Authorization: key=' . GOOGLE_API_KEY,
        'Content-Type: application/json'
    );
    // Open connection
    $ch = curl_init();

    // Set the url, number of POST vars, POST data
    curl_setopt($ch, CURLOPT_URL, $url);

    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, json_encode($fields));

    // Execute post
    $result = curl_exec($ch);
    if ($result === FALSE) {
        die('Curl failed: ' . curl_error($ch));
    }

    // Close connection
    curl_close($ch);
    echo $result;
}

/////////

我改变了send_message.php这样的并修复了。

if (isset($_GET["regId"]) && isset($_GET["message"]) && isset($_GET["title"])) {
$regId = $_GET["regId"];
$messagem = $_GET["message"];
$titlem = $_GET["title"];

include_once './GCM.php';

$gcm = new GCM();

$registatoin_ids = array($regId);
$message = array("message" => $messagem);
$title = array($titlem);


$result = $gcm->send_notification($registatoin_ids, $messagem, $titlem);

echo $result;`

}

在此处输入图像描述

4

2 回答 2

1

编辑:抱歉,使用 JSON GCM 有效负载数据应该是一个 assoc 数组。与旧版本的协议混合在一起。也就是说,您在 Android 方面的意图是什么?

编辑:转储整个额外的捆绑包。

Bundle b = intent.getExtras();
for(String k : b.keySet())
    Log.d("tag", k + "=" + b.get(k).toString());
于 2013-10-23T19:04:50.127 回答
0

编辑:

好的,我认为您的问题是您发布的值 {.....} 没有密钥。这就像说

http://..... com?{myjson:"stuff"}

我还没有查看 api,但它似乎应该类似于 post "data=".json_encode($fields);

于 2013-10-23T18:53:36.980 回答