2017-02-15 80 views
3

我們有一種爲每個註冊用戶創建主題的設計方法。爲每個用戶創建Firebase主題

  1. 創建一個新用戶
  2. 將其保存到我們的數據庫與生成的令牌
  3. 訂閱/topics/{user-token}當Android或 iOS設備用戶登錄。

因此,如果用戶有多個設備,並且我們想發送用戶特定的通知,我們只需將它發送到/topics/{user-token},以便它被所有設備接收。

我們還沒有遇到過一些用戶的問題,但是對於Firebase的限制還可以,這是一個好方法嗎?

+0

聽起來不錯。爲什麼你給uid或userId一個名字「user-token」,就像Google的傳道人一樣? –

+2

如果用例適用於具有多個設備的單個用戶,爲什麼不使用[設備組消息](https://firebase.google.com/docs/cloud-messaging/android/device-group)? –

+0

@AL。你是對的,我錯過了,但我們必須管理組列表,如果我們使用它,就像有人從Android設備註銷,我發送請求到我的服務器,刪除它的registration_id等,但如果我使用'主題',我只是在客戶端取消訂閱。如果Firebase沒問題,我會選擇主題。但謝謝你的建議。 – ocanal

回答

7

(我感動我的意見爲答案)

大多數時候創建每個用戶的FCM話題是不是一個好主意。

發送給FCM TOPICS的消息是公開的。任何用戶(甚至是來自 不同的應用程序)都可以訂閱/ topics/{用戶名}並接收那些 消息。

例子:
另一名開發者可以從您的APK複製谷歌與services.json文件。
然後他可以訂閱任何主題。
要攔截您的用戶消息,攻擊者仍需要猜測您正在使用的{用戶名}或任何其他標識符。但是,如果您認爲這會發生,那麼問題就很大,因爲您永遠不知道是否有人收到您的郵件副本,而且您通常不會更改{用戶名}。

這不是FCM的安全問題。這是主題API設計的一部分。
如果您需要安全消息,則可以直接將它們發送到設備令牌。

如果您還想爲每個用戶做一個主題,請注意不要發送敏感數據或不應被第三方攔截的數據。

+0

請解釋**如果您需要安全消息,則可以直接將它們發送到設備令牌。** –