GCM返回空消息

时间:2016-02-01 07:27:32

标签: php android google-cloud-messaging

我试图从服务器获取消息作为android中的推送通知。但是当我将语言改为泰语但英语正常工作时,我从服务器收到了空信息。

PHP文件

class GCMPushMessage {

var $url = 'https://android.googleapis.com/gcm/send';
var $serverApiKey = "";
var $devices = array();

/*
    Constructor
    @param $apiKeyIn the server API key
*/
function GCMPushMessage($apiKeyIn){
    $this->serverApiKey = $apiKeyIn;
}

/*
    Set the devices to send to
    @param $deviceIds array of device tokens to send to
*/
function setDevices($deviceIds){

    if(is_array($deviceIds)){
        $this->devices = $deviceIds;
    } else {
        $this->devices = array($deviceIds);
    }

}

/*
    Send the message to the device
    @param $message The message to send
    @param $data Array of data to accompany the message
*/
function send($message, $data = false){

    if(!is_array($this->devices) || count($this->devices) == 0){
        $this->error("No devices set");
    }

    if(strlen($this->serverApiKey) < 8){
        $this->error("Server API Key not set");
    }

    $fields = array(
        'registration_ids'  => $this->devices,
        'data'              => array( "message" => $message ),
    );

    if(is_array($data)){
        foreach ($data as $key => $value) {
            $fields['data'][$key] = $value;
        }
    }

    $headers = array( 
        'Authorization: key=' . $this->serverApiKey,
        'Content-Type: application/json'
    );

    // Open connection
    $ch = curl_init();

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

    curl_setopt( $ch, CURLOPT_POST, true );
    curl_setopt( $ch, CURLOPT_HTTPHEADER, $headers);
    curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );

    curl_setopt( $ch, CURLOPT_POSTFIELDS, json_encode( $fields ) );

    // Avoids problem with https certificate
    curl_setopt( $ch, CURLOPT_SSL_VERIFYHOST, false);
    curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER, false);

    // Execute post
    $result = curl_exec($ch);

    // Close connection
    curl_close($ch);

    echo $result;
    return $result;
}

   function error($msg){
      echo "Android send notification failed with error:";
      echo "\t" . $msg;
      exit(1);
   }

onMessageReceived

public void onMessageReceived(String from, Bundle data) {
    String message = data.getString("message");
    String title = data.getString("title");

    /*Log.d(TAG, "From: " + from);
    Log.d(TAG, "Message: " + message);*/

     if (from.startsWith("/topics/")) {
        // message received from some topic.
    } else {
        // normal downstream message.
    }
请帮助我。

0 个答案:

没有答案