带有 Firebase 版本 3 的 APNS
APNS with Firebase version 3
我已将 Firebase 设置为向我的应用程序的用户发送推送通知。但是,我不确定关于用户到用户通信(例如聊天客户端)的最佳做法是什么。我应该在每次启动应用程序时获取设备令牌并将其用于发送,还是应该为双方都需要订阅的每个 "chatroom" 创建一个新主题?例如在接受聊天请求时。
如果第一个选项是最好的,它是如何工作的?如果在应用程序启动时为设备分配了一个新令牌,我如何确定给定的 ID 指向特定设备?整个概念似乎很脆弱 - 但有人可以指导我找到最有效的解决方案吗?
我只想通过推送发送聊天消息/聊天邀请
根据聊天室的大小和隐私,您可以选择使用:
- 主题 为大型团体制作,加入/离开时没有保护措施
- 您需要存储在服务器实现中的设备令牌。
从好的方面来说,它们允许您控制接收信息的人员
消息,并将消息发送到单个设备。
设备令牌不会在每次启动时更改。
在应用首次启动时创建,特殊情况下可以更新。当令牌更改时(同样,这种情况很少见),将调用 FirebaseInstanceIdService.onTokenRefresh()
回调。
在通用聊天应用程序中,您可能希望:
- 首先使用您的登录系统验证用户
- 将映射用户 ID > 设备令牌上传到您的服务器
- 通过 FCM 服务器端向用户发送消息 APIs.
更新以解决评论之一:
- 服务器端API允许在同一个HTTP请求中向多个令牌发送相同的消息。请参阅 https://firebase.google.com/docs/cloud-messaging/http-server-ref#downstream-http-messages-json
中的 registration_ids
- 你不应该在客户端使用服务器端 API,因为那会要求你在应用程序中添加 API-KEY,这是一个安全问题(人们可以反编译应用程序并读取密钥)
- 存储结构由你决定。对于 user-id > multiple-device-tokens,字典可以工作。
- 如果令牌不可重复使用。因此向过期令牌发送消息是安全的。
- 令牌生成需要互联网连接,因此可能需要一些时间。
- 要在用户注册后处理令牌,请参阅以下问题:
我已将 Firebase 设置为向我的应用程序的用户发送推送通知。但是,我不确定关于用户到用户通信(例如聊天客户端)的最佳做法是什么。我应该在每次启动应用程序时获取设备令牌并将其用于发送,还是应该为双方都需要订阅的每个 "chatroom" 创建一个新主题?例如在接受聊天请求时。
如果第一个选项是最好的,它是如何工作的?如果在应用程序启动时为设备分配了一个新令牌,我如何确定给定的 ID 指向特定设备?整个概念似乎很脆弱 - 但有人可以指导我找到最有效的解决方案吗?
我只想通过推送发送聊天消息/聊天邀请
根据聊天室的大小和隐私,您可以选择使用:
- 主题 为大型团体制作,加入/离开时没有保护措施
- 您需要存储在服务器实现中的设备令牌。
从好的方面来说,它们允许您控制接收信息的人员 消息,并将消息发送到单个设备。
设备令牌不会在每次启动时更改。
在应用首次启动时创建,特殊情况下可以更新。当令牌更改时(同样,这种情况很少见),将调用 FirebaseInstanceIdService.onTokenRefresh()
回调。
在通用聊天应用程序中,您可能希望:
- 首先使用您的登录系统验证用户
- 将映射用户 ID > 设备令牌上传到您的服务器
- 通过 FCM 服务器端向用户发送消息 APIs.
更新以解决评论之一:
- 服务器端API允许在同一个HTTP请求中向多个令牌发送相同的消息。请参阅 https://firebase.google.com/docs/cloud-messaging/http-server-ref#downstream-http-messages-json 中的
- 你不应该在客户端使用服务器端 API,因为那会要求你在应用程序中添加 API-KEY,这是一个安全问题(人们可以反编译应用程序并读取密钥)
- 存储结构由你决定。对于 user-id > multiple-device-tokens,字典可以工作。
- 如果令牌不可重复使用。因此向过期令牌发送消息是安全的。
- 令牌生成需要互联网连接,因此可能需要一些时间。
- 要在用户注册后处理令牌,请参阅以下问题:
registration_ids