向每个设备发送不同的推送通知

时间:2014-06-04 06:55:34

标签: php android push-notification google-cloud-messaging

我已经设置了php脚本,它将发送推送通知。一切正常,它会向阵列中的每个设备发送相同的消息。但是有什么问题,如果我想发送不同的消息做每个设备怎么办(例如,取决于设备的偏好)?

这里的方法是什么?我的第一个想法是分别为每个设备调用pushNotification函数而不是一次调用它并将设备数组发送到GCM?

这是我正在使用的代码,所以请指教......

function sendPushNotificationToGCM($registatoin_ids, $message) {
    //Google cloud messaging GCM-API url
        $url = 'https://android.googleapis.com/gcm/send';
        $fields = array(
            'registration_ids' => $registatoin_ids,
            'data' => $message,
        );
    // Google Cloud Messaging GCM API Key
    define("GOOGLE_API_KEY", "my_api_key");    
        $headers = array(
            'Authorization: key=' . GOOGLE_API_KEY,
            'Content-Type: application/json'
        );
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_POST, true);
        curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST, 0); 
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($fields));
        $result = curl_exec($ch);       
        if ($result === FALSE) {
            die('Curl failed: ' . curl_error($ch));
        }
        curl_close($ch);

        return($result);
}

$devices = array();

    while($results = $result->fetch_array()) {
        $devices[] = $results['dev_reg_id'];
    }

    //return $devices;

    $pushMessage = $message;

    $message = array("m" => $pushMessage); 
    $pushStatus = sendPushNotificationToGCM($devices, $message);

1 个答案:

答案 0 :(得分:2)

您无法向GCM服务器发送同一HTTP请求中的不同设备。如果每个设备都需要唯一的消息,则还需要对sendPushNotificationToGCM功能进行唯一调用。如果某些设备共享相同的消息,您可以在同一个函数调用中将该消息发送给它们。