作者:老鼠扛着刀找猫_592 | 来源:互联网 | 2023-02-06 11:00
在使用Firebase和设备组时,我正在测试令牌(注册ID)更改的情况(例如重新安装应用程序后)但我的逻辑失败,因为在重新安装应用程序后我无法知道以前存储的令牌.
问题是,现在我有一个设备组,其中有两个"ghost"
注册ID,我不知道因为它们已经改变了.
我知道在每个成员都未注册后该组被删除但我不知道注册ID以手动取消注册.
我能做什么?
有没有办法检索设备组的成员或立即删除它?
此外,有什么方法可以管理令牌刷新的情况?
1> AL...:
我知道在每个成员都未注册后该组被删除但我不知道注册ID是否手动取消注册.我能做什么?
当您向设备组发送消息时,您将收到包含a success
和failure
参数的响应.0
`failure的值意味着我们在FCM服务器中正确排队的消息.
它有失败的消息,失败的注册令牌列表将在响应中,建议重试发送消息.参考文档:
将下游消息发送到设备组
将消息发送到设备组与将消息发送到单个设备非常相似.将to参数设置为设备组的唯一通知密钥.请参阅消息类型以获取有效负载支持的详 此页面中的示例显示如何将数据消息发送到HTTP和XMPP协议中的设备组.
HTTP POST请求
https://fcm.googleapis.com/fcm/send
Content-Type:application/json
Authorization:key=AIzaSyZ-1u...0GBYzPu7Udno5aA
{
"to": "aUniqueKey",
"data": {
"hello": "This is a Firebase Cloud Messaging Device Group Message!",
}
}
HTTP响应
以下是"成功"的示例 - notification_key
有2个与之关联的注册令牌,并且消息已成功发送给它们:
{
"success": 2,
"failure": 0
}
这是一个"部分成功"的例子 - notification_key
有3个与之相关的注册令牌.邮件已成功发送到其中一个注册令牌.响应消息列出了未能收到消息的注册令牌:
{
"success":1,
"failure":2,
"failed_registration_ids":[
"regId1",
"regId2"
]
}
当消息未能传递给与a关联的一个或多个注册令牌时notification_key
,应用服务器应重试之间的退避重试.
但是,在执行重试之前,您可以首先验证FCM令牌是否仍然有效(通过使用dry_run
或Instance ID Server API).如果它显示设备不再有效(通常NotRegistered
,您应该从设备组和App Server中删除该令牌(或将其移至垃圾日志或其他内容).
此外,有什么方法可以管理令牌刷新的情况?
如果令牌被刷新(通过onTokenRefresh()
),那么要做的就是找到用户拥有的旧令牌并将其替换为新令牌,在重要的地方应用更改(这也是映射设备组).
另请在此处和此处查看我的答案.一些细节可能会有所帮助.