我已经找到了firebase,并根据手册和许多文章,它将有助于在php项目中创建推送功能。
我完全理解使用Curl,我可以将数据发送到firebase服务器。但我无法想到将这些数据实时转发给目标用户的好主意。 Javascript会启用它,但是它与Ajax Polling不一样吗?
使用PHP和Javascript,推送像firebase这样的云服务,如何进行实时推送通知?粗略的机制草图会有所帮助!
答案 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;
}