【问题标题】:Should I store Android device tokens for sending push notifications?我应该存储 Android 设备令牌以发送推送通知吗?
【发布时间】:2017-09-05 13:42:17
【问题描述】:

我正在开发一个需要实现 Android 推送通知的应用。

我决定直接使用 Firebase Cloud Messaging;不使用任何其他抽象,例如 AWS SNS 或 Pusher。

我想避免在后端存储和管理设备令牌,方法是使用以下方法。

在安卓应用中。

  1. 用户登录安卓应用时,获取设备令牌,但不发送到服务器。
  2. 订阅基于约定约定的主题,以便该主题对该用户而言是唯一的。
  3. 注销时退订主题。

在服务器中。

  1. 每当出现向特定用户发送通知的情况时,根据约定向主题发送推送通知。

我想知道这是否是避免管理设备令牌的可行策略?

反对使用主题的案例。

来自官方docs

基于发布/订阅模型,FCM 主题消息传递允许您向已选择加入特定主题的多个设备发送消息。您可以根据需要编写主题消息,FCM 会处理路由并将消息可靠地传递到正确的设备。

例如,本地天气预报应用程序的用户可以选择加入“恶劣天气警报”主题并接收风暴威胁指定区域的通知。体育应用的用户可以订阅他们最喜欢的球队的实时比赛比分的自动更新。

当要通知多个设备时,我看到建议使用主题。但是我决定为每个用户创建一个主题,这意味着大多数主题最终只会被一台设备订阅;这种方法可以吗?

【问题讨论】:

  • 所以本质上你想避免使用device groups?我不明白为什么您的方法不起作用,但是您会将主题用于他们不打算做的事情,因此您一定会遇到一些问题。所以我的问题是为什么当你的用例正是它们的用途时,你想避免使用令牌?
  • @Bryan 从长远来看,不必在后端存储数据是一种更好的方法。存储令牌意味着我需要在用户注销应用程序或用户会话到期时删除这些令牌。使用主题将帮助我不管理数据。我发现主题更简单。

标签: android firebase-cloud-messaging android-push-notification


【解决方案1】:

当要通知多个设备时,我看到推荐主题

是的,多个设备具有共同的聆听内容,这就是主题。主题用于一般客户端可以接收的消息,因为它是公开的——即任何人都可以订阅和接收发送给它的消息。

建议用于多个设备,但对于同一用户 是使用设备组(有关Managing Device Groups 的提示,请参阅我的答案)。但是,如果您不介意“topics are public”部分,那么您的方法应该没问题。

【讨论】:

  • 公开话题是什么意思?这是否意味着知道主题名称的任何人都可以订阅它?
  • 使用设备组是否有助于而不是存储和管理令牌?
  • 是的。这就是想法。但一般来说,您只能在应用程序内订阅主题,通过 callibg subscribeToTopic 或使用 InstanceID API,这需要服务器密钥进行身份验证,所以我认为说它不完全公开是足够安全的。
  • 使用设备组需要您完全管理令牌。
  • Topics are public。如果您对应用程序的安全性有足够的信心来订阅您的主题,那么就像我说的那样,您的方法应该没问题。
【解决方案2】:

是的,如果我们想向安装您的应用程序的人发送推送通知,这里需要设备令牌。 根据我的研究,我们可以在第一次安装您的应用程序时将设备令牌保存在后端,这更好,以便我们可以轻松地在所有设备上发送推送通知。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多