为了账号安全,请及时绑定邮箱和手机立即绑定

如何在firestore android studio中获取新添加数据的通知?

如何在firestore android studio中获取新添加数据的通知?

繁花如伊 2023-10-12 17:12:30
我正在我的应用程序上执行通知,并且正在使用 firestore。snapshotlistener我的问题是,当检测到数据库中新添加的数据时,我想向用户发送通知,但是当我打开应用程序时,即使我没有添加新数据,它也会立即显示现有通知。我需要一些条件,在这些条件下我只能获取新添加的数据,或者如果我的数据库数据中缺少某些内容,则需要克服此问题。下面是我的数据库结构。db.collection("Buyers")                .document(userID)                .collection("Notifications")                .addSnapshotListener(new EventListener<QuerySnapshot>() {                    @Override                    public void onEvent(@Nullable QuerySnapshot snapshots, @Nullable FirebaseFirestoreException e) {                        if (e != null) {                            Log.e(LOG_DB, e.toString());                            return;                        }                        for (DocumentChange dc : snapshots.getDocumentChanges()) {                            if (dc.getType() == DocumentChange.Type.ADDED) {                                String title = dc.getDocument().getData().get("notificationTitle").toString();                                String body = dc.getDocument().getData().get("notificationBody").toString();                                //Method to set Notifications                                getNotification(title, body);                            }                        }                    }                });
查看完整描述

3 回答

?
鸿蒙传说

TA贡献1865条经验 获得超7个赞

如果您只想发送通知,可以使用 Firebase Cloud Messages,它可以提供您尝试自己实现的功能。 https://firebase.google.com/docs/cloud-messaging

如果您想在 Firestore 中的数据更改后发送通知,您可以使用 FireStore 触发器 ( https://firebase.google.com/docs/functions/firestore-events ) 并通过 firebase 函数调用发送通知 (发送推送使用 Cloud Functions for Firebase 的通知



查看完整回答
反对 回复 2023-10-12
?
呼唤远方

TA贡献1856条经验 获得超11个赞

我有一个类似的问题,这就是我解决它的方法:

  1. 获取当前添加的项目数并保存在共享首选项中

  2. 打开应用程序后,获取当前的项目数量,并与共享首选项中保存的数量进行比较

  3. 设置一个条件,如果当前项目数大于共享首选项中保存的数量,则调用通知。


查看完整回答
反对 回复 2023-10-12
?
神不在的星期二

TA贡献1963条经验 获得超6个赞

我能够得到我想要的东西,但我不确定这是否是正确的方法。


Calendar calendar = Calendar.getInstance();

    calendar.add(Calendar.MINUTE, -5);

    Date before = calendar.getTime();


    Calendar calendar1 = Calendar.getInstance();

    Date until = calendar1.getTime();


    for (DocumentChange dc : snapshots.getDocumentChanges()) {

        Date date = (Date) dc.getDocument().getData().get("notificationDate");

        if (dc.getType() == DocumentChange.Type.ADDED) {

            if (!before.after(date) && !until.before(date)){

                Log.d("life", "Data: "+date);

                String title = dc.getDocument().getData().get("notificationTitle").toString();

                String body = dc.getDocument().getData().get("notificationBody").toString();

                getNotification(title, body);

            }

        }

    }

我在这里所做的是检索当前时间和当前时间减去 5 分钟。(您可以选择所需的延迟分钟数),然后设定一个条件,必须仅显示延迟 5 分钟内的通知。


注意: 我知道这不是正确的做法,但这得到了我想要的结果。如果您不想要我的答案,请告诉我并发布您自己的答案,以便我确认您的答案。


查看完整回答
反对 回复 2023-10-12
  • 3 回答
  • 0 关注
  • 105 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信