2017-04-13 58 views
0

我最近問了一個問題SO question詢問如何使用Firebase消息主題向組中的每個人發送消息,但觸發通知的人員(寫入數據庫中組的部分)除外。我得到了一個有趣的答案,其中包括爲我的iOS應用程序的每個用戶創建一個主題,然後使用爲每個成員創建的主題向每個成員發送一條消息。該主題的名稱只是該用戶的uid,因此我只是遍歷該組的成員的uid並將消息發送到其相應的主題(忽略觸發用戶的uid)。使用uid作爲Firebase消息傳遞主題?

使用此解決方案將意味着我的應用程序的每個用戶都有自己的主題(/topics/<uid1>,/topics/<uid2>等)。我想知道如果做這樣的事情有什麼缺點。它會簡化我發送郵件的雲功能,但我不確定是否有太多的主題在成本和性能方面很昂貴。任何人都可以幫我弄清楚這是否是一個好的解決方案?

回答

4

我使用類似的方法在這個博客帖子:Sending notifications between Android devices with Firebase Database and Cloud Messaging。唯一的區別是我們在那裏使用用戶名,使用例更容易閱讀。

這種方法的幾個問題:

  • 主題是公開的,任何人都可以訂閱一個主題。就你而言,UID可能比博客文章中的用戶名稱更難猜測,但它仍然不安全。
  • FCM針對具有大量令牌的合理數量的主題進行了優化。所以它會在技術上與更小的話題一起工作,但它不是爲此設計的。 YMMV
+0

在這種情況下使用[Device Group Messaging](https://firebase.google.com/docs/cloud-messaging/ios/device-group)會更好嗎?我只是很難看到如何在我的firebase雲功能中實現這一點。 – MarksCode

+0

@MarksCode請注意,設備組消息每個*組*的限制爲20個標記。 –

+0

設備組通常用於定位同一用戶的多個設備。所以如果那是你想要完成的,那麼他們確實可能是一個不錯的選擇。 –