APNS与Firebase版本3

时间:2016-05-31 17:01:28

标签: ios firebase firebase-cloud-messaging

我已将Firebase设置为向我的应用用户发送推送通知。但是,我不确定有关用户对用户通信的最佳做法,例如聊天客户端。我应该在应用程序的每次启动时获取设备令牌并将其用于发送,还是应该为双方都需要订阅的每个“聊天室”创建一个新主题?例如,当接受聊天请求时。

如果第一个选项是最好的,这是如何工作的?如果在应用启动时为设备分配了新令牌,我如何确定给定ID指向特定设备?整个概念似乎很脆弱 - 但有人可以指导我找到最有效的解决方案吗?

我只想用推送

发送聊天消息/聊天邀请

1 个答案:

答案 0 :(得分:2)

根据聊天室的大小和隐私,您可以选择使用:

  • 主题为大型团体制作,没有加入/离开的保护
  • 您需要存储在服务器实施中的
  • 设备令牌 从好的方面来说,它们可以让你控制谁接收了 消息,以及向单个设备发送消息。

每次启动时设备令牌都不会更改。 它是在第一次启动应用程序时创建的,可以在特殊情况下更新。当令牌改变时(再次,这很少见),将调用FirebaseInstanceIdService.onTokenRefresh()回调。

在通用聊天应用程序中,您可能希望:

  1. 首先使用您的登录系统验证用户
  2. 将映射用户ID>上传到您的服务器设备令牌
  3. 通过FCM服务器端API向用户发送消息。
  4. 更新以解决其中一条评论:

    1. 服务器端API允许将相同的消息发送到同一HTTP请求中的多个令牌。请参阅https://firebase.google.com/docs/cloud-messaging/http-server-ref#downstream-http-messages-json
    2. 中的registration_ids
    3. 您不应该在客户端使用服务器端API,因为这需要您在应用程序中添加API-KEY,这是一个安全问题(人们可以反编译应用程序并读取密钥)
    4. 存储结构取决于您。对于用户ID>一个字典可以工作的多设备令牌。
    5. 如果令牌不可重复使用。因此,将邮件发送到过期的令牌是安全的。
    6. 令牌生成需要互联网连接,因此可能需要一些时间。
    7. 在用户注册后处理令牌请参阅此问题: How to launch FCM ID Service only after a particular activity is triggered?