从mysql获取数组并将其传递给方法

时间:2014-02-15 16:30:08

标签: php mysql arrays google-cloud-messaging

您好我正在使用以下代码发送推送通知。我在这段代码中遇到了问题。

<?php

class GCMPushMessage
{

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

    function setDevices($deviceIds)
    {

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

    function send($message)
    {

        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(
                "msg" => $message
            )
        );

        $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));

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

        $this->StripResponseFromGCM(json_decode($result));

        // Close connection
        curl_close($ch);

        return $result;
    }

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

    function StripResponseFromGCM($response)
    {
        //canonicalID's are the 
        if ($response->failure == 0 && $response->canonical_ids == 0)
            return;

        for ($i = 0; $i < sizeof($response->results); $i++) {
            if (isset($response->results[$i]->registration_id)) { //if new registrationID is sent as canonicalID
                //update this registrationID in the database
            } else if ($response->results[$i]->error == "Unavailable") {
                // user with index == $i is unavailable
            } else if ($response->results[$i]->error == "InvalidRegistration") {
                // user with index == $i has InvalidRegistration ID
            } else if ($response->results[$i]->error == "NotRegistered") {
                // user with index == $i is not registered              
            }
        }
    }

}

$msg = array(
    'data' => array(
        'msg' => 'just a simple message'
    )
);

require_once('connection.php');

$sql = mysql_query("select gcmid from gcmid");

$new_array = mysql_fetch_array($sql);

print_r($new_array);

$obj = new GCMPushMessage();

$obj->setDevices($new_array);

$obj->send($msg);
?>

如果我在setDevices方法中放入一个id,那么它工作正常,但如果我 从数据库中获取gcm ID并将其传递给方法setDevices然后代码无效。它假设向设备发送推送通知但它无法正常工作。

0 个答案:

没有答案