Android Firebase实时数据库触发推送通知
我创建了一个类似Instagram的应用程序,使用Firebase作为后端数据库。该应用程序具有所有功能,即用户可以喜欢你的帖子,对你的帖子发表评论等。但是,现在我只能使用通知部分。我读了一些关于FCM的文档,并学习了一些教程。但是,我找不到任何关于如何创建通知的具体教程,该通知的标题是喜欢/评论文章的人的姓名,消息正文是评论的内容。我必须使用PHP和mySQL来完成这一切吗?或者它可以单独使用JAVA来完成?没有足够的代表发表评论,所以我将把它放在这里 Firebase最近发布 函数通过允许您编写响应事件的代码和调用其他Firebase功能公开的功能来集成Firebase平台 幸运的是,当一个用户跟随另一个用户时发送通知的问题是Firebase函数的示例用例之一。Android Firebase实时数据库触发推送通知,android,firebase,firebase-cloud-messaging,Android,Firebase,Firebase Cloud Messaging,我创建了一个类似Instagram的应用程序,使用Firebase作为后端数据库。该应用程序具有所有功能,即用户可以喜欢你的帖子,对你的帖子发表评论等。但是,现在我只能使用通知部分。我读了一些关于FCM的文档,并学习了一些教程。但是,我找不到任何关于如何创建通知的具体教程,该通知的标题是喜欢/评论文章的人的姓名,消息正文是评论的内容。我必须使用PHP和mySQL来完成这一切吗?或者它可以单独使用JAVA来完成?没有足够的代表发表评论,所以我将把它放在这里 Firebase最近发布 函数通过允许您
您可以查看。是的,您需要创建一个应用服务器,以便将通知从设备发送到另一个设备。您的应用服务器将具有firebase FCM的API和firebase数据库的服务帐户 下面是node.js代码。函数listenForNotifications()是一个连接到数据库的侦听器,用于在任何时候发送follow请求。在应用程序中单击follow按钮,您将在“follow”根节点的数据库中添加一个条目。然后,当从您的移动应用程序中添加条目时,如果有条目,则会触发request.on(“child_added.”)。然后,该函数通过令牌将消息路由到要向其发送请求的人。i、 e request.requesttooken “以下”节点的数据库结构:
设置fcm需要5次点击和代码的微小更改。我建议您再次查看该网站,了解我们刚刚发布的Firebaser的逐步安装说明,它可能扮演应用程序服务器的角色。看看这个例子:。谢谢奥马尔的回答。然而,我选择了使用云函数来执行相同的操作,而且更简单!谢谢TrueKojo!我已经使用云函数成功地实现了followerpush通知。但是,你有没有想法在一台设备下为不同的用户生成不同的令牌?我必须进行调查。我的第一个倾向是使用Firebase身份验证流中用户的唯一ID。
+--Root
+-.
+--.
+----Following
+---------pushKey /auto-generated
+----------------requestToToken /token of device you want to send notification
+---------------- requestFromToken / token of device that sent the notification
var firebase = require('firebase-admin');
var request = require('request');
const express = require('express');
const app = express();
app.get('/', (req, res) => {
res.status(200).send('Hello, world!');
});
// Start the server
const PORT = process.env.PORT || 8080;
app.listen(PORT, () => {
console.log(`App listening on port ${PORT}`);
console.log('Press Ctrl+C to quit.');
});
var API_KEY = ".......your key"; // Your Firebase Cloud Messaging Server API
// Fetch the service account key JSON file contents
var serviceAccount = require("....your database service account.json");
// Initialize the app with a service account, granting admin privileges
firebase.initializeApp({
credential: firebase.credential.cert(serviceAccount),
databaseURL: "https://dropit-b357a.firebaseio.com"
});
ref = firebase.database().ref();
process.stdout.write("I AM HERE... SERVER RUNNING MAYBE: ");
function listenForNotificationRequests() {
var requests = ref.child('Following');
requests.on('child_added', function(requestSnapshot) {
var request = requestSnapshot.val();
sendNotificationToUser(
request.requestToToken,
request.requestFrom,
function() {
return;
}
);
}, function(error) {
console.error(error);
});
};
function sendNotificationToUser(username, message, onSuccess) {
request({
url: 'https://fcm.googleapis.com/fcm/send',
method: 'POST',
headers: {
'Content-Type' :' application/json',
'Authorization': 'key='+API_KEY
},
body: JSON.stringify({
notification: {
title: message
},
to : username
})
}, function(error, response, body) {
if (error) { console.error(error); }
else if (response.statusCode >= 400) {
console.error('HTTP Error: '+response.statusCode+' '+response.statusMessage);
}
else {
onSuccess();
}
});
}
// start listening
listenForNotificationRequests();