Liq*_*tal 3 web firebase firebase-realtime-database firebase-cloud-messaging
我有一台运行网站的服务器.我需要此服务器能够管理(仅下游)通知三个独立的设备组,Android,iOS和客户端Web应用程序.
我正在尝试使用firebase云消息传递.使用FCM,我计划使用http协议发送json消息.
除此之外,我对去哪里感到很困惑.我知道,GCM教程应该几乎是完全一样的FCM教程,但我无法找到一个教程,以找出我需要的东西在做,因为每个教程似乎在服务器和客户端应用程序混淆在一起,这令我困惑.
我经历过
https://firebase.google.com/docs/cloud-messaging/server#choose
非常彻底,但它似乎掩盖了我还没有的一些必要知识.任何人都可以建议如何以我正在寻找的方式实施FCM的良好起点?我对Web开发人员来说非常新,不到2个月,(使用node,mongo和scss)并且对如何开始使用FCM感到有些不知所措.
我感谢你们提供的任何反馈.
正如您所写,您计划在Android,iOS和客户端Web应用程序的所有三个平台上收到通知.您可以使用firebase获取实时通知或所需的数据,但您必须牢记这一点,即每个人都有一个不同的过程来实现这一点.首先,您必须选择任何一个并开始实施.让我们从头开始......
在https://console.firebase.google.com/上将firebase用于应用程序以创建项目的常见过程.
创建项目后,您将能够看到将在您的应用程序中使用的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
}
}
Run Code Online (Sandbox Code Playgroud)
对于存储,请留下这个......
service firebase.storage {
match /b/project-[your_project_number].appspot.com/o {
match /{allPaths=**} {
allow read, write;
}
}
}
Run Code Online (Sandbox Code Playgroud)
它将定义您可以公开使用它,而不需要在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>
Run Code Online (Sandbox Code Playgroud)
在服务器端,用于触发事件或通知,您可以使用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;
}
}
Run Code Online (Sandbox Code Playgroud)
现在让我们看看如何从服务器端触发通知.
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.
Run Code Online (Sandbox Code Playgroud)
这将帮助您找出令您困惑的地方.让我知道如果这对你有用,我也会为Android和iOS改进它.
归档时间: |
|
查看次数: |
8189 次 |
最近记录: |