【发布时间】:2021-01-26 08:53:17
【问题描述】:
我目前正在制作一个类似于聊天室的应用程序,该应用程序与 firestore 一起使用以将用户连接到主机的会话。我遇到了一个问题,即客户端设备在锁定/后台时间过长时失去连接/停止侦听 Firestore 更改(据我所知,这是因为设备试图通过杀死长期存在的进程来节省电力)。我了解到一种解决方法是在更改 firestore 文档之前向设备发送 FCM 推送通知,以便重新唤醒应用程序并让应用程序监听 firestore 文档更改。我不确定如何实现推送通知,但我了解到它需要用户特定的令牌(必须受到保护)。忽略我不确定如何实现推送通知的事实(将不胜感激noob友好指针),将用户令牌作为字段上传到firestore是一种可行的方法吗?我在想我可以使用我的辅助函数(它获取特定会话的所有非主机)来向每个人发送推送通知。
_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 小时),并且所有信息都会在之后立即删除。
【问题讨论】:
标签: android firebase flutter dart google-cloud-firestore