亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在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 關注
  • 143 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號