什么是使用javascript和php“推”的确切机制?

时间:2017-02-10 05:03:55

标签: javascript php ajax firebase push

我已经找到了firebase,并根据手册和许多文章,它将有助于在php项目中创建推送功能。

我完全理解使用Curl,我可以将数据发送到firebase服务器。但我无法想到将这些数据实时转发给目标用户的好主意。 Javascript会启用它,但是它与Ajax Polling不一样吗?

使用PHP和Javascript,推送像firebase这样的云服务,如何进行实时推送通知?粗略的机制草图会有所帮助!

1 个答案:

答案 0 :(得分:0)

首先,你应该拥有' 设备令牌'对于要向其发送推送通知的设备。其次,您必须拥有' 服务器密钥'您可以从firebase控制台轻松获取。现在,如果您想进行实时推送,只需在下面的函数中进行 ajax POST调用,这将使数组成为您希望在推送通知中传递 devicetoken 消息的参数。

public function sendNotification($postData = ""){

        //FCM api URL
        $url = 'https://fcm.googleapis.com/fcm/send';

        //api_key available in Firebase Console -> Project Settings -> CLOUD MESSAGING -> Server key
        $server_key = 'AAAA8mhm5CE:APA91bE420_Dl5GcRwpmNCvwB-m6QSLeEXhwTjNs5XR8RRSdBWcWkOuXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX';

        $data = $postData;

        $devicetoken = $data['devicetoken'];

        $message = $data['messege'];

        $fields = array (
            'registration_ids' => array (
                    $devicetoken
            ),

            'notification' => array (
                    "title" => "Title",
                    "text" => $message
            )
        );

        //header with content_type api key
        $headers = array(
            'Content-Type:application/json',
            'Authorization:key='.$server_key
            );

        $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('FCM Send Error: ' . curl_error($ch));
        }
        curl_close($ch);
        return TRUE;
}