6

我正在完成一個由Ruby on Rails 5中開發的後端支持的移動應用程序(離子,但無關緊要)的開發,因爲這更多的是一個理論問題/問題。如何在移動應用程序後端處理讀取通知

這裏的事情是,鑑於移動應用程序中的用戶可以登錄或不能登錄(他們有一堆功能,也許有一半可以通過未登錄的用戶訪問),應該怎麼做我處理通知本身的存儲和讀取狀態?注意:有了通知,我並不是指推送通知,而是指停留在應用程序內部側邊菜單中的「消息」(我已推送了推送服務)。

這裏的主要問題是:我希望能夠跟蹤讀取的通知,以防止它們在用戶重新安裝應用程序時被標記爲未讀(想象僅僅因爲您重新安裝了50條未讀通知)。

我開始有用於存儲在後端通知如下模型:

  • ID
  • USER_ID
  • push_notification_id(參照推送通知的ID,不相關)
  • 讀:布爾
  • 內容:文本

使用此模型時,我會爲每個需要通知的用戶插入一行,並使用布爾列跟蹤它是否被讀取。問題是,只有註冊用戶可以收到通知。

第二種選擇是刪除user_id引用和「讀取」屬性服務器端,並假設我總是要通知所有人,而不是某些用戶。但是現在,我需要一種方法來跟蹤讀取哪些通知。我可以在本地存儲本地存儲器中的某些ID的移動應用程序在本地執行此操作,但是如果重新安裝,這些操作將再次刪除。

我想到的第三個選項是實現第二個選項,它包含一個「expiry」列服務器端,它指示在新應用程序安裝的情況下,通知應該在默認情況下停止爲「未讀」。這是迄今爲止最好的,但我並不確信。

我知道我在這裏要求很多東西,但我只是在尋找一個很好的實現模型,因爲我一直找不到任何Google搜索,我相信這是重複的設計模式。

謝謝!

+1

我們可能需要更多的上下文才能在這裏獲得幫助。這些通知的目的是什麼?他們是否爲用戶定製?從你的描述來看,它聽起來像是每個人都一樣,每個用戶同時出門。 – Michael

+0

其目的是作爲推送通知的伴侶。每次向用戶發送推送通知時,服務器端都會創建一個「通知」對象,客戶端可以在側邊欄中列出相同的內容或可能擴展的內容。 至於一個用戶的定製,它最初的目的是這樣,即使它不是一個要求,如果需要它,它會很高興。 但是,主要觀點只是監視「讀取」狀態(客戶端或服務器端)的模型,因爲客戶端可能會在不登錄的情況下重新安裝。 –

回答

0

我們使用類似的方法就像你有了一些變化:

  • 與註冊/註冊用戶的問題,您可以更改USER_ID一些設備UID,因此用戶並不需要先登錄跟蹤讀取
  • 而不是累積關於在一個表中讀取的信息,我們有一個未讀通知的表格,並在chnage時刻,我們將讀取的一個移動到新表格 - >表格不會變得巨大,並且對它的操作(如計數)將保持快速(取決於用戶數量,但考慮未來!)
  • 加上一些功能喜歡存儲date_insert並運行每月作業來清除超過一年的條目
相關問題