我正在开发基于Firebase数据库和存储的聊天应用程序.一切都运行正常,但现在我需要实施FCM,以便在应用程序处于后台或前台时接收应用程序通知.我找不到在
PHP中实现的方法来监听firebase数据库中的任何更改,如果有任何更改,则将推送通知发送到应用程序.
有很多代码可以从PHP发送通知,但没有一个基于Firebase数据库,甚至官方文档都有我的共享主机不支持的Node.js指南.
我已经在我的应用程序端实现了FCM代码,该代码已经过Firebase控制台测试.
这是我的Firebase数据库结构
发送推送通知只是向FCM服务器发送发布请求的问题.
这是工作示例:
$data = json_encode($json_data); //FCM API end-point $url = 'https://fcm.googleapis.com/fcm/send'; //api_key in Firebase Console -> Project Settings -> CLOUD MESSAGING -> Server key $server_key = 'YOUR_KEY'; //header with content_type api key $headers = array( 'Content-Type:application/json','Authorization:key='.$server_key ); //CURL request to route notification to FCM connection server (provided by Google) $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,CURLOPT_SSL_VERIFYHOST,0); curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false); curl_setopt($ch,CURLOPT_POSTFIELDS,$data); $result = curl_exec($ch); if ($result === FALSE) { die('Oops! FCM Send Error: ' . curl_error($ch)); } curl_close($ch);
JSON工资负载示例:
[ "to" => 'DEVICE_TOKEN',"notification" => [ "body" => "SOMETHING","title" => "SOMETHING","icon" => "ic_launcher" ],"data" => [ "ANYTHING EXTRA HERE" ] ]