我正在尝试使用firebase云消息传递.
使用FCM,我计划使用http协议发送json消息.
除此之外,我对去哪儿很困惑.我知道GCM教程应该与FCM教程完全相同,但是我很难找到教程来弄清楚我需要做什么,因为每个教程似乎将服务器和客户端应用程序混合在一起,令我困惑.
我经历过
https://firebase.google.com/docs/cloud-messaging/server#choose
非常彻底,但它似乎掩盖了我还没有的一些必要知识.任何人都可以建议如何以我正在寻找的方式实施FCM的良好起点?我对Web开发人员来说是一个非常新的,不到2个月,(使用node,mongo和scss)并且对如何开始使用FCM感到有些不知所措.
我感谢你们提供的任何反馈.
解决方法
您可以使用firebase来获取实时通知或所需数据,但您必须牢记这一点,即每个人都有一个不同的过程来实现这一目标.
首先,您必须选择任何一个并开始实施.
让我们从头开始……
将firebase用于应用程序以在https://console.firebase.google.com/创建项目的常见过程.
创建项目后,您将能够看到将在您的应用程序中使用的firebase密钥.你可以在https://console.firebase.google.com/project/project-[your_project_number]/overview看到这个.
我希望你已经这样做但不要忘记在https://console.firebase.google.com/project/project-[your_project_number]/database/rules和https://console.firebase.google.com/project/project-[your_project_number]/storage/rules给予数据库和存储许可.
对于数据库,请留下这个……
{ "rules": { ".read": true,".write": true } }
对于存储,请留下这个……
service firebase.storage { match /b/project-[your_project_number].appspot.com/o { match /{allPaths=**} { allow read,write; } } }
它将定义您可以公开使用它,而不需要在firebase端进行任何验证.如果您想添加任何类型的验证,可以通过https://console.firebase.google.com/project/project-[your_project_number]/authentication/providers.
现在从SERVER到WEB APPLICATION通知开始.首先,我想告诉您FCM(firebase云消息传递)只能通过Android,iOS和Web(指定的Google Chrome)实现.因此,要在所有浏览器上使用它,我们必须实现firebase数据库.
在js方面.你必须在概述中加入类似的内容.
<script src="https://www.gstatic.com/firebasejs/3.1.0/firebase.js"></script> <script> // Initialize Firebase var config = { apiKey: "your_api_key",authDomain: "project-[your_project_number].firebaseapp.com",databaseURL: "https://project-[your_project_number].firebaseio.com",storageBucket: "project-[your_project_number].appspot.com",}; firebase.initializeApp(config); </script>
在服务器端,用于触发事件或通知,您可以使用CURL.正如您所提到的那样,您正在使用Node.js,因此https://firebase.google.com/docs/server/setup#add_firebase_to_your_app可以为您提供帮助.
我通过使用CodeIgniter在PHP服务器端应用CURL来实现它.我附上下面的代码.你可以在这里看到CURL示例https://firebase.google.com/docs/database/rest/save-data#section-put
<?PHP if (!defined('BASEPATH')) exit('No direct script access allowed'); //PHP CURL FOR NOTIFICATION function booking_notification($notif_arr,$notif_type) { //GET CI $CI =& get_instance(); $url = 'put_your_firebase_database_url_here'; $key = 'put_firebase_key'; $notif_arr = {'Key':'values'};//THIS IS THE DATA WHAT YOU WILL NEED TO SHOW ON FRONT END TO NOTIFY $notif_type = 'notification'; //THIS IS THE NAME JSON WHICH WILL BE CREATED IF NOT EXIST AT FIREBASE DATABASE $headers = array( 'Authorization: key=' . $key,'Content-Type: application/json' ); $ch = curl_init(); curl_setopt($ch,CURLOPT_URL,$url."/".$notif_type.".json"); curl_setopt($ch,CURLOPT_POST,true); curl_setopt($ch,CURLOPT_HTTPHEADER,$headers); curl_setopt($ch,CURLOPT_RETURNTRANSFER,true); // Disabling SSL Certificate support temporarly curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false); curl_setopt($ch,CURLOPT_POSTFIELDS,json_encode($notif_arr)); // Execute post $result = curl_exec($ch); if ($result === FALSE) { die('Curl Failed: ' . curl_error($ch)); // Close connection curl_close($ch); return FALSE; } else { // Close connection curl_close($ch); return TRUE; } }
现在让我们看看如何从服务器端触发通知.
JAVASCRIPT
var fireBaseJSONref = firebase.database().ref().child("notification"); //BY THIS YOU CAN GET THE JSON OF FIREBASE DATABASE fireBaseJSONref.on('child_added',function(snapshot) { if (!ignoreItems) { console.log(snapshot.val());//THIS WILL PRINT THE DATA WHAT YOU HAVE TRIGGERD FROM SERVER } }); /* WHEN FIRST TIME ANY DATA SENT TO DATABASE OF FIREBASE AFTER PAGE LOAD */ fireBaseJSONref.once('value',function(snapshot) {ignoreItems = false}); //THIS WILL HELP YOU TO NOT TO CALL FOR PREVIoUSLY ADDED ITEM IN FIREBASE DATABASE. WHEN NEW DATA WILL BE ONLY THEN IT WILL CALL.
这将帮助您找出令您困惑的地方.让我知道如果这对你有用,我也会为Android和iOS改进它.