Android 的 Firebase 通知,onTokenRefresh 方法

Firebase Notification for Android, onTokenRefresh Method

谁能帮我 notificationFirebase 学习好东西。对我来说,我认为更新 token 时不需要 sendRegistrationToServer() 方法。

在所有情况下,通知将发送到应用程序所在的所有设备。

sendRegistrationToServer()方法有什么用?

@Override
public void onTokenRefresh() {
  String refreshedToken = FirebaseInstanceId.getInstance().getToken();
  //I talked about this method. :)
  sendRegistrationToServer(refreshedToken);
}

private void sendRegistrationToServer(String token) {
  // Add custom implementation, as needed.
}

通知将发送到由令牌识别的设备,因此如果您的令牌已更新但您没有使用新令牌更新您的服务器,那么当您的服务器使用旧令牌时您的通知将会消失无处。因此,您应该在每次刷新令牌时更新您的服务器。

令牌用于识别您的设备。在使用 FCM 的简单 android 应用程序中(如在教程和 firebase-chat 中),根据您的代码猜测(如果我错了请纠正我),我们不需要将令牌发送到服务器,因为我们不需要t 实现我们的服务器来发送消息。我们直接与 google FCM 服务器对话。

当我们implementing our own server发送通知消息时,我们需要高度自信地知道我们的服务器'talk'具有有效的设备。所以它使用从设备生成的令牌作为标识符。

服务器会将带有令牌的通知发送到FCM服务器(即Google服务器),然后FCM服务器将处理发送过程。

所以你只需要构造sendRegistrationToServer(refreshedToken);当你想要授权你的应用程序从你的服务器接收通知。


让我们用CodePath Google Cloud Messaging tutorial来解释一下:

在 Android 上支持推送通知的大部分繁重工作都是由 Google 提供支持的 connection servers 完成的。这些 Google 服务器为要从您的服务器发送的消息提供 API 并将这些消息中继到任何 Android/iOS 授权接收它们的设备。

具有 Google 播放服务的 Android 设备将已经具有可用的 FCM 客户端支持。要接收推送通知,应用程序必须首先通过向 Google 服务器注册来获取令牌:

然后必须将此令牌传递到您的服务器,以便它可用于发送后续推送通知:

假设您的应用已注册侦听基于 FCM 的消息,则可以接收推送通知:

换句话说,为了实现 FCM,您的应用将需要 Google 服务器和您自己的服务器。当您的应用从 Google 获取令牌时,它需要将此令牌转发到您的服务器。此令牌应由服务器保留,以便它可用于对 Google 服务器进行 API 调用。使用这种方法,您的服务器和 Android 设备不需要创建持久连接,排队和中继消息的责任全部由 Google 的服务器处理。