获取接收方的设备令牌以在 Firebase 中发送通知



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

FirebaseInstanceId.getInstance().getToken();

但我似乎一辈子都找不到如何获得另一个需要的令牌。 如何获取接收方的令牌,以便消息直接发送给他们?

对于接收器也是如此。

从文档中:

在应用首次启动时,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. 用户 ID 仅用于在数据库中标识用户
  3. 如果用户有多个设备,则需要生成每个设备的令牌(与上面的代码相同)。
  4. 通过数据库,我的意思是火碱数据库

相关内容

  • 没有找到相关文章

最新更新