当Android中Firebase数据库中的数据发生更改时将数据发送到应用程序[关闭]

Posted

技术标签:

【中文标题】当Android中Firebase数据库中的数据发生更改时将数据发送到应用程序[关闭]【英文标题】:Send data to App when data changed in Firebase Database in Android [closed] 【发布时间】:2019-12-25 07:40:22 【问题描述】:

我正在构建一个应用程序,我希望在 Firebase 实时数据库中的数据发生更改时为用户生成推送通知。我想知道使用 Firebase 云消息传递是否适合它,并且想了解如何使用 FCM 将数据发送到应用程序。

【问题讨论】:

【参考方案1】:

这是我写的script,用于在此处触发更改时发送通知

【讨论】:

这个问题是针对 android 的。 是的,但是有些事情你不能只打一个结。 或者错误的结:P 问题Push Notification for the user when a data has been changed in the Firebase Realtime Database 是脚本的内容。那么它是怎么打错结的呢?也许您可能想查看 repo,它实际上是针对 android 应用程序的。 完全没有冒犯。这个问题非常明确地表明需要针对 Android 的解决方案。【参考方案2】:

你需要使用值监听器来监听和发送数据变化的通知,例如:

ValueEventListener postListener = new ValueEventListener() 
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) 
        // Send notification here
        FirebaseFunctions.getInstance()
                .getHttpsCallable("sendNotification")
                .call(notificationData)
                .continueWith(new Continuation<HttpsCallableResult, String>() 
                    @Override
                    public String then(@NonNull Task<HttpsCallableResult> task) throws Exception 
                        return null;
                    
                );

    

    @Override
    public void onCancelled(DatabaseError databaseError) 
        // Getting Post failed, log a message
        Log.w(TAG, "loadPost:onCancelled", databaseError.toException());
        // ...
    
;
mPostReference.addValueEventListener(postListener);

在函数中:

exports.sendNotification = functions.https.onCall((data, context) => 

    // I am using FCM Topic to send notification to users.
    var fcmTopic = data.fcmTopic;
    console.log(data);

    var payload = 
        data:
            MESSAGE_TAG: "NEW_NOTIF",
            MESSAGE_TITLE: "Test!",
            MESSAGE_TEXT: "Test."
        ,
        topic: fcmTopic
    ;

    var options = 
        priority: "high"
    ;

    admin.messaging().send(payload)
        .then(() => 
            console.log("success");
            return null;
        )
        .catch(error => 
            console.log(error);
        );


);

更多信息:https://firebase.google.com/docs/database/android/read-and-write#listen_for_value_events

【讨论】:

这是一个 android 应用 :) 不是 node-js,但是解决方案是正确的 应该使用数据库触发器 如何触发正确的用户?意味着我也必须检查一下。 是的,您必须跟踪注册令牌或主题,以便用户发送通知/ 我添加了一个示例 firebase 函数来发送通知。

以上是关于当Android中Firebase数据库中的数据发生更改时将数据发送到应用程序[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

关于使用android studio在firebase实时数据库中的uid下创建随机密钥

已实现 Firebase 实时数据库存储的 Android 应用中的多个应用内产品

Android Firebase 数据库已损坏

从Android中的firebase下载多个文件时如何管理内存

你可以检查android代码中的firebase服务器问题吗?

我如何从firebase检索数据到android listview顶部[重复]