【发布时间】:2018-04-23 08:51:04
【问题描述】:
我们有一个使用 Firebase 云消息传递来驱动应用内聊天功能的跨平台应用。一些用户可能会在不止一台设备上主动使用该应用程序。因此,只要用户的设备收到onTokenRefresh 触发器,我们就会将该新注册令牌发送到服务器以针对用户进行保存。现在假设用户已经在服务器数据库中存储了一些注册令牌,我们如何知道这些令牌是否用于同一设备并且现在应该被删除,或者它们是否用于不同的设备并且我们应该继续向所有设备发送?
我已阅读 docs on Device Group Messaging,但它看起来对我们的应用程序来说开销太大,而且 Firebase 服务器似乎不会自动为您从组中删除被取代的注册令牌。
如果我们简单地假设记录的所有用户注册令牌都处于活动状态并发送给所有人,我们是否可以使用响应来决定是否需要修剪服务器上的令牌?
{
"multicast_id": 6538766984100364080,
"success": 1,
"failure": 0,
"canonical_ids": 0,
"results": [
{
"message_id": "0:1510294979553090%029da28f029da28f"
}
]
}
根据this answer 和一些针对带有替换令牌的HTTP API 的测试,看起来"success":1 结果不是不应该删除令牌的可靠指标,因为替换的令牌往往会继续存在。此外,"success": 0 结果可能不是我们可以删除令牌的可靠指标,因为它可能只是表明有效、活动令牌上的临时网络错误。
API documentation 讨论了如何解释结果中的可选registration_id,但目前尚不清楚这与NotRegistered 错误有何不同以及采取什么最佳措施。
任何关于如何处理和管理 FCM 设备令牌到达服务器的见解或最佳实践将不胜感激。
【问题讨论】:
标签: push-notification firebase-cloud-messaging