【问题标题】:Get receiver's device token to send notification in Firebase获取接收者的设备令牌以在 Firebase 中发送通知
【发布时间】:2018-02-02 18:39:06
【问题描述】:

所以我正在学习如何使用 firebase 发送设备到设备的通知,我看到了这个 answer 来发送通知,这看起来很简单。 现在,我知道要获取发送者的令牌,它应该是这样的:-

FirebaseInstanceId.getInstance().getToken();

但我似乎无法找到如何获得其他需要的令牌。如何获取接收者的令牌以便消息直接发送给他们?

【问题讨论】:

    标签: java android firebase firebase-realtime-database firebase-cloud-messaging


    【解决方案1】:

    接收者也一样。

    来自文档:

    在您的应用首次启动时,FCM SDK 会为客户端应用实例生成一个注册令牌。如果您想定位单个设备或创建设备组,则需要通过扩展 FirebaseInstanceIdService 来访问此令牌。

    注册令牌可能会在以下情况下发生变化:

    应用删除实例 ID

    应用在新设备上恢复

    用户卸载/重新安装应用程序

    用户清除应用数据。

    所以要获取您需要的任何设备(接收方或发送方)的令牌:

      FirebaseInstanceId.getInstance().getToken();
    

    上面会为你生成一个令牌,最好在用户在他的设备上安装应用程序时执行代码(在开始时)。

    现在接收者的令牌已生成,接下来要做的是将令牌存储在您的数据库中,以便能够使用该令牌并向该特定用户发送通知,因为您没有其他方法可以知道其他设备的令牌。

    要存储它,只需这样做:

     String token=FirebaseInstanceId.getInstance().getToken();
     DatabaseReference ref=FirebaseDatabase.getInstance().getReference().child("Tokens");
     ref.child(user.getUid()).setValue(token);
    

    现在这只是一个示例,您可以根据需要存储它。我使用了用户 ID,因为它很容易获得,因为用户就是将使用他的手机的人。

    这样您将拥有接收者的令牌,然后您可以根据需要使用云功能向该特定令牌发送通知。

    欲了解更多信息:https://firebase.google.com/docs/cloud-messaging/admin/send-messages#send_to_individual_devices

    令牌正在发送到设备,因此令牌与设备相关。现在要获取uid,那么用户需要登录并通过身份验证,然后您就可以使用数据库中的uid了。

    如果用户有很多设备,那么你还需要其他设备的令牌。 同样,它与设备有关,与用户无关

    但是你使用数据库中的 uid 来知道这个令牌是给谁的。

    总结:

    1. 令牌与设备而非用户相关
    2. userid只是用来识别db中的用户
    3. 如果用户有多台设备,则需要生成每台设备的token(同上代码)。
    4. 数据库是指firebase-database

    【讨论】:

    • 当您指的是数据库时,您是指在 Firebase 上吗?或与我的应用程序关联的数据库?另外,如果你能回答这个问题,我想知道,但是如果用户在多个设备上登录到应用程序,它是否仍然能够使用一个令牌并发送给所有人?我是否也仅在用户登录后才生成令牌?
    • 在 firebase 数据库中是的。您可以随时生成令牌,如果用户登录,那么您可以获得他的 uid 以便能够在数据库中使用它。所以登录后,就可以得到uid了。如果有多个设备,则不会,因为每个设备都有自己的令牌
    • 非常感谢。我会试试这个,如果它有效,我会把它标记为答案。谢谢
    • 你好,我也有这个问题,希望你能回答。我已经成功地将用户设备令牌保存在我的 mongodb 数据库中,并且我可以根据每个用户 ID 检索令牌,但是如果我将令牌传递给 fcm-node send,我仍然无法发送通知。我是否也需要将设备令牌存储在 firebase 数据库中才能工作?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-06
    • 2021-05-25
    • 1970-01-01
    • 2016-10-06
    • 2016-05-08
    • 2018-02-13
    • 1970-01-01
    相关资源
    最近更新 更多