2012-09-14 108 views
1

您是否可以驗證我的使用Firebase管理用戶通知系統的方法?驗證清除通知的方法

基本上我想有用戶特定的頻道,以及持有通知更廣泛的渠道。如果用戶之前沒有查看過這些通知,則這些通知將顯示在Intranet上。

的想法是一個服務器端的操作將更新使用或者爲特定用戶或播報給大家的REST API火力地堡端點。我可以很容易地標記爲已讀的特定用戶消息,因此不會再顯示它們,這是我一直在苦苦掙扎的廣播。

我一個標誌(用戶ID)添加到一個普通的廣播,以表明其讀,但我關心的性能,客戶端會檢查歷史廣播消息這個標誌的存在。我可以添加一個用戶ID來創建一個更快的新端點。
例如/ notification/general/- 包含消息,這會觸發客戶端,然後檢查/ users/USERID/MessageID是否存在,如果它不顯示消息並創建此端點。

有什麼我失蹤或是最好的辦法?

回答

1

消息是否總是按順序消耗?如果是這樣,您可以讓每個客戶記住它在每個公共頻道中閱讀的最後一條消息的ID。然後,您可以使用隊列上的「startAt」將其限制爲僅限新消息。

如果他們不是爲了消費,那麼你就需要存儲有關哪些是讀的,哪些不是數據的一些方法。也許你可以將每封郵件發送給每個人的個人隊列,然後讓每個用戶刪除閱讀郵件。

+0

有趣的方法 - 我也考慮過每天的批次,這意味着我只需要閱讀今天的批次,並與讀取消息的列表進行比較。 – markbarton

+0

經過反思,我會去找最後一次讀取的ID,這些都是畢竟的消息隊列,並且指出你在隊列中的位置是有意義的。謝謝 – markbarton

1

既然已經有undividual用戶的消息,爲什麼不提供這些節目給大家單獨(認爲電子郵件),而不是試圖存儲一個副本,並找出誰讀它。

爲了減少體積,你可以單獨存儲的郵件內容,並簡單的ID存儲在用戶的隊列中。然後,當他們被查看時,您可以標記他們每個用戶沒有任何額外的複雜性。

在100k的用戶每天收到100條消息,包括帶有標準Firebase ID(大約20個字符)的廣播,每年出現210,000,000個字符(即數據庫沒有任何數據,並且可能仍然遠遠小於實際值批量存儲消息正文),假設它們永不過期並被刪除。

+0

這絕對是最簡單也是最合乎邏輯的方法,但是使用REST API不需要爲每個消息/用戶執行一次API調用?這會導致擴展問題。 – markbarton