3

我正在研究一種需要支持允許多個用戶的應用程序的推送體系結構。這意味着多個用戶可以使用他們的憑證登錄到應用程序。我遇到的問題是,如果用戶A允許推送通知,然後註銷,然後用戶B登錄並開始獲取用戶A的推送通知?多用戶應用程序中推送通知的最佳做法?

處理這類事情的一些最佳實踐是什麼?我的一個想法是,你可以記住登錄的最後一位用戶,並且只向「登錄」用戶顯示推送通知。您將不得不在消息負載中發送某種用戶上下文,以便可以根據登錄用戶進行檢查。然而這感覺有點時髦。

其他人碰到過這個嗎?這似乎是一個真正相關的問題,特別是對於家庭傾向於共享設備的平板電腦而言。

+0

雖然您的應用程序可以檢查是否爲預期的接收者和當前登錄的用戶之間的匹配通知;當應用程序處於後臺或根本不在運行狀態時,以前註冊的令牌通知仍會到達手機/平板電腦,並根據設置顯示爲橫幅或警報彈出窗口。我認爲最終你的服務器必須知道用戶什麼時候註銷(顯式地,超時或其他人登錄),並且不要爲該用戶發送通知,直到他們再次登錄。 –

回答

1

我認爲你的建議在多用戶應用程序中是可以接受的。在客戶端實現它比在服務器端更簡單。缺點是浪費了額外的帶寬來發送不需要的通知。但絕大多數用法可能是單用戶,所以這可能沒什麼關係。

另一種方法是跟蹤服務器上已登錄的用戶及其當前的reg_id。這可能會更復雜,因爲A可能在多個設備上登錄,然後從設備1註銷,B登錄到設備1等,您的服務器必須跟蹤所有這些設備。因此,可能還有另一個表來追蹤「登錄用戶」與「註冊用戶」之間的關係。

如果您討厭發送不需要的通知的想法,請使用服務器路由。如果您重視保持簡單的原則,請與客戶路線一起前往。

+0

偉大的分析 - 感謝分享您的想法。給我一些好的東西在這裏考慮。 –

2

我們通過向APSN註冊設備,獲取設備令牌並通過ws將其發送到我們的服務器來實現此目的。

在服務器端,設備令牌只與最後登錄的用戶相關聯。

New app 
User A (first ever user) uses IPAD A 
Register with APSN, get token 
Send token to our servers through ws 
Search for token in db, token is new, store it 
assign token to USER A 

Next user logs into app 
Register with APSN, get token 
Send token to our servers through ws 
Search for token in db, token exists already 
Remove connection to USER A 
assign token to USER B 

SEND Notification to device WITH USERNAME 
if username is logged in show it - else dont 

還不夠完善作爲其發送到主屏幕第一次這樣對所有用戶