您写道,您计划在Android、iOS和客户端Web应用程序三个平台上接收通知。您可以使用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进行。
现在开始介绍从服务器到Web应用程序的通知。首先,我想让您知道FCM(Firebase云消息传递)仅可在Android、iOS和Web(指定Google Chrome)上实现。因此,为了在所有浏览器上使用它,我们必须实现Firebase数据库。在js方面,您必须像概述中看到的那样放置一些东西。
<script src="https://www.gstatic.com/firebasejs/3.1.0/firebase.js"></script>
<script>
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来帮助您。我已经通过在PHP中应用CodeIgniter的服务器端CURL实现了它。以下是代码示例。您可以在
https://firebase.google.com/docs/database/rest/save-data#section-put中查看CURL示例。
<?php
if (!defined('BASEPATH')) exit('No direct script access allowed');
function booking_notification($notif_arr, $notif_type)
{
$CI =& get_instance();
$url = 'put_your_firebase_database_url_here';
$key = 'put_firebase_key';
$notif_arr = {'Key':'values'};
$notif_type = 'notification';
$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);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($notif_arr));
$result = curl_exec($ch);
if ($result === FALSE) {
die('Curl failed: ' . curl_error($ch));
curl_close($ch);
return FALSE;
}
else
{
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
}
});
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进行改进。