PubNub Server не форматирует сообщение должным образом

У меня есть конфигурация сервера, чтобы говорить с клиентами Android:

<?php require_once("mysql.class.php"); require_once("lib/autoloader.php"); // Setting up the PubNub Server: use Pubnub\Pubnub; $pubnub = new Pubnub( "pub-c...", ## PUBLISH_KEY "sub-c..." ## SUBSCRIBE_KEY ); // Publishing : $post_data = json_encode(array("type"=> "groupMessage", "data" => array("chatUser" => "SERVER", "chatMsg" => "Now lets talk", "chatTime"=>1446514201516))); $info = $pubnub->publish('MainChat', $post_data); print_r($info); print_r($post_data); ?> 

и html:

 <!doctype html> <html> <head> <title>PubNub PHP Test Page</title> </head> <body> <form method="POST" action="index.php"> <input type="submit" name="submit" value="TestSendMessage" /> </form> </body> </html> 

Функция публикации работает на сервере, так как я вижу, что сообщения поступают в консоль журнала клиентского приложения Android, но сообщение никогда не обрабатывается правильно и, следовательно, не отображается в списке, указанном в SubscribeCallback:

 public void subscribeWithPresence(String channel) { this.channel = channel; Callback subscribeCallback = new Callback() { @Override public void successCallback(String channel, Object message) { if (message instanceof JSONObject) { try { JSONObject jsonObj = (JSONObject) message; JSONObject json = jsonObj.getJSONObject("data"); final String name = json.getString(Constants.JSON_USER); final String msg = json.getString(Constants.JSON_MSG); final long time = json.getLong(Constants.JSON_TIME); if (name.equals(mPubNub.getUUID())) return; // Ignore own messages final ChatMessage chatMsg = new ChatMessage(name, msg, time); presentActivity.runOnUiThread(new Runnable() { @Override public void run() { // Adding messages published to the channel mChatAdapter.addMessage(chatMsg); } }); } catch (JSONException e) { e.printStackTrace(); } } Log.d("PUBNUB", "Channel: " + channel + " Msg: " + message.toString()); } @Override public void connectCallback(String channel, Object message) { Log.d("Subscribe", "Connected! " + message.toString()); //hereNow(false); // setStateLogin(); } }; try { mPubNub.subscribe(this.channel, subscribeCallback); //presenceSubscribe(); } catch (PubnubException e) { e.printStackTrace(); // Checking if success Log.d("Fail subscribe ", "on channel: " + channel); } } и public void subscribeWithPresence(String channel) { this.channel = channel; Callback subscribeCallback = new Callback() { @Override public void successCallback(String channel, Object message) { if (message instanceof JSONObject) { try { JSONObject jsonObj = (JSONObject) message; JSONObject json = jsonObj.getJSONObject("data"); final String name = json.getString(Constants.JSON_USER); final String msg = json.getString(Constants.JSON_MSG); final long time = json.getLong(Constants.JSON_TIME); if (name.equals(mPubNub.getUUID())) return; // Ignore own messages final ChatMessage chatMsg = new ChatMessage(name, msg, time); presentActivity.runOnUiThread(new Runnable() { @Override public void run() { // Adding messages published to the channel mChatAdapter.addMessage(chatMsg); } }); } catch (JSONException e) { e.printStackTrace(); } } Log.d("PUBNUB", "Channel: " + channel + " Msg: " + message.toString()); } @Override public void connectCallback(String channel, Object message) { Log.d("Subscribe", "Connected! " + message.toString()); //hereNow(false); // setStateLogin(); } }; try { mPubNub.subscribe(this.channel, subscribeCallback); //presenceSubscribe(); } catch (PubnubException e) { e.printStackTrace(); // Checking if success Log.d("Fail subscribe ", "on channel: " + channel); } } 

Тестирование вывода сервера в браузере, нажав TestSendMessage дает:

 Array ( [0] => 1 [1] => Sent [2] => 14465159776373950 ) {"type":"groupMessage","data":{"chatUser":"SERVER","chatMsg":"Now lets talk","chatTime":1446514201516}} 

и в приложении вывод журнала из строки: Log.d("PUBNUB", "Channel: " + channel + " Msg: " + message.toString());

Возвращает: D/PUBNUB: Channel: MainChat Msg: {"type":"groupMessage","data":{"chatUser":"SERVER","chatMsg":"Now lets talk","chatTime":1446514201516}}

как и следовало ожидать, но сообщение никогда не появляется в ListView сообщений и, таким образом, не выполняет разбор JSON.

Теги JSON прямо из класса Constants:

 public static final String JSON_GROUP = "groupMessage"; public static final String JSON_USER = "chatUser"; public static final String JSON_MSG = "chatMsg"; public static final String JSON_TIME = "chatTime"; 

Как можно перенаправить отправку сервера, чтобы обеспечить успех в анализе приложений?

    Отправка JSON через PubNub

    Отправьте объект JSON, не строгая его сначала . В случае для PHP не используйте json_encode сообщение. PubNub SDK будет кодировать и декодировать его для вас.

    Эта:

     $post_data = array("type"=> "groupMessage", "data" => array( "chatUser" => "SERVER", "chatMsg" => "Now lets talk", "chatTime"=>1446514201516)); 

    Не это:

     $post_data = json_encode(array("type"=> "groupMessage", "data" => array( "chatUser" => "SERVER", "chatMsg" => "Now lets talk", "chatTime"=>1446514201516))); 

    Прошу прокомментировать, если это разрешится или нет.