簡體   English   中英

Firebase 為具有特定 Firestore 字段的用戶推送通知

[英]Firebase push notifications for users with specific firestore fields

我目前正在制作一個類似於聊天室的應用程序,它與 firestore 一起使用,以將用戶連接到主機的 session。 我遇到了一個問題,即客戶端設備在鎖定/后台時間過長時失去連接/停止偵聽 Firestore 更改(據我所知,這是因為設備試圖通過殺死長期存在的進程來節省電力)。 我了解到一種解決方法是在更改 firestore 文檔之前向設備發送 FCM 推送通知,以便重新喚醒應用程序並讓應用程序監聽 firestore 文檔更改。 我不確定如何實現推送通知,但我了解到它需要用戶特定的令牌(必須受到保護)。 忽略我不確定如何實現推送通知的事實(將不勝感激noob友好指針),將用戶令牌作為字段上傳到firestore是一種可行的方法嗎? 我在想我可以使用我的助手 function (它獲取特定會話的所有非主機)也可以向每個人發送推送通知。

 _vibrateAllDevices() async {
    var lobbies = await lobby
        .where('lobbyCode', isEqualTo: _lobbyCode)
        .where('userRole', isEqualTo: 2)
        .get();
    lobbies.docs.forEach(
      (document) async {
        document.reference.update(<String, dynamic>{'vibrate': true});
      },
    );
  }

每個大廳預計有 2-30 人,因此每人循環似乎不是那么大的問題。 這似乎是一種可行的方法,還是將令牌存儲到不安全的地方? 我還應該提到,每個大廳預計只會開放很短的時間(最多約 3 小時),並且所有信息都會在之后立即刪除。

Firebase 如果另一個人訂閱了您自己的主題,則通過通知確保在創建 Firestore 字段時另一個人訂閱了該主題。 當您觸發通知時,會在 FirebaseMessages 服務 class 中的另一個人中自動接收通知,其中 onmessagereceive 方法。 在 firebase 和 Firestore 中觸發通知的方法相同,因為服務器密鑰始終相同。 我建議您閱讀此文檔: https://medium.com/mindorks/send-device-to-device-push-notification-using-firebase-cloud-messaging-without-using-external-769476c79ffd

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM