Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/214.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Firebase实时数据库触发推送通知_Android_Firebase_Firebase Cloud Messaging - Fatal编程技术网

Android Firebase实时数据库触发推送通知

Android Firebase实时数据库触发推送通知,android,firebase,firebase-cloud-messaging,Android,Firebase,Firebase Cloud Messaging,我创建了一个类似Instagram的应用程序,使用Firebase作为后端数据库。该应用程序具有所有功能,即用户可以喜欢你的帖子,对你的帖子发表评论等。但是,现在我只能使用通知部分。我读了一些关于FCM的文档,并学习了一些教程。但是,我找不到任何关于如何创建通知的具体教程,该通知的标题是喜欢/评论文章的人的姓名,消息正文是评论的内容。我必须使用PHP和mySQL来完成这一切吗?或者它可以单独使用JAVA来完成?没有足够的代表发表评论,所以我将把它放在这里 Firebase最近发布 函数通过允许您

我创建了一个类似Instagram的应用程序,使用Firebase作为后端数据库。该应用程序具有所有功能,即用户可以喜欢你的帖子,对你的帖子发表评论等。但是,现在我只能使用通知部分。我读了一些关于FCM的文档,并学习了一些教程。但是,我找不到任何关于如何创建通知的具体教程,该通知的标题是喜欢/评论文章的人的姓名,消息正文是评论的内容。我必须使用PHP和mySQL来完成这一切吗?或者它可以单独使用JAVA来完成?

没有足够的代表发表评论,所以我将把它放在这里

Firebase最近发布

函数通过允许您编写响应事件的代码和调用其他Firebase功能公开的功能来集成Firebase平台

幸运的是,当一个用户跟随另一个用户时发送通知的问题是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();