📜  如何从 java 中的 firebase 通知中获取数据(1)

📅  最后修改于: 2023-12-03 14:51:45.393000             🧑  作者: Mango

如何从 Java 中的 Firebase 通知中获取数据

Firebase 为开发人员提供了一个云服务平台,其中包括实时数据库、身份验证、分析和推送通知等功能。其中,推送通知是开发中常用的一个功能,本文将介绍如何从 Java 中的 Firebase 通知中获取数据。

前置条件

在开始本文之前,需要先完成 Firebase 的基础设置:

  1. 创建 Firebase 项目
  2. 添加 Firebase 配置文件
  3. 启用 Firebase Cloud Messaging 功能,并取得 Server key 和 Sender ID
获取 Firebase 通知数据

以下是从 Firebase 通知中获取数据的步骤:

  1. 实现 FirebaseMessagingService

FirebaseMessagingService 是 Firebase Cloud Messaging 的核心服务,它负责将接收到的消息传递给应用程序。要获取 Firebase 通知的数据,需要实现 FirebaseMessagingService,并覆盖 onMessageReceived 方法:

public class MyFirebaseMessagingService extends FirebaseMessagingService {

    @Override
    public void onMessageReceived(RemoteMessage remoteMessage) {
        // 在此处获取 Firebase 通知的数据
    }
}
  1. 解析 RemoteMessage

RemoteMessage 包含了 Firebase 通知的所有信息,包括 data 和 notification 字段。其中,data 字段是一个 Map 对象,它包含了自定义的键值对数据,而 notification 字段包含了通知的标题、内容、图标等信息。

以下是从 data 中获取自定义键值对数据的代码示例:

@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
    Map<String, String> data = remoteMessage.getData();
    String myData = data.get("my_data_key");
}
  1. 显示通知

如果 Firebase 通知包含了 notification 字段,可以通过 NotificationManager 将通知显示出来:

@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
    ...
    NotificationCompat.Builder builder = new NotificationCompat.Builder(this, "default")
            .setSmallIcon(R.drawable.notification_icon)
            .setContentTitle(remoteMessage.getNotification().getTitle())
            .setContentText(remoteMessage.getNotification().getBody())
            .setPriority(NotificationCompat.PRIORITY_DEFAULT)
            .setAutoCancel(true);
    NotificationManagerCompat notificationManager = NotificationManagerCompat.from(this);
    notificationManager.notify(notificationId, builder.build());
}

这里使用了 NotificationCompat 类构建通知,并使用 NotificationManagerCompat 类将通知显示出来。

结论

本文介绍了从 Java 中的 Firebase 通知中获取数据的步骤,包括实现 FirebaseMessagingService、解析 RemoteMessage 和显示通知。开发人员可以根据自己的需求进行调整,以实现最佳的 Firebase 通知体验。