如何在应用程序关闭时在 Android 通知中显示操作按钮?

sha*_*yal 3 android push-notification react-native firebase-cloud-messaging

我有一个安卓应用程序。对于通知,我们必须显示一些操作按钮。当应用程序打开时,我们可以自由地构建通知并显示操作按钮。

但是当应用程序关闭时,通知会在 Android 的通知托盘中收到。应用程序开发人员无法控制构建用户界面和操作按钮。我们现在如何显示按钮?如何从服务器端格式化数据,以便当应用程序接收到数据时,我们可以看到操作按钮

Mas*_*eki 5

根据我的经验,发生这种情况是因为您正在发送通知消息。正如谷歌在这里清楚地解释的那样:

当应用程序处于后台时,通知消息将发送到通知托盘。对于前台应用程序,消息由回调函数处理。

现在,如果您想使用 Firebase Cloud Messaging 发送通知,并希望始终以您自己的自定义方式显示收到的通知,您可以使用不包含部分的FCM 数据消息notification,如下所示:

{
  "message":{
    "token":"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
    "priority":"high",
    "data":{
      "title" : "Custom notif",
      "body" : "This is a custom data notification!",
      "action" : "A|B|C"
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

收到此通知后,Firebase 不会将其显示在托盘面板中,而是将其传递到您的应用程序(无论您的应用程序位于前台还是后台)。然后,您可以使用该data部分中的字段来创建和显示具有自定义操作的自定义通知。

您还可以将任何字段放入data部分内,类似的字段title只是示例。

客户端中的额外实现细节:

为了在 android(本机和/或反应本机)中处理数据消息,您可以使用远程消息(但使用不同的方式)。

React Native: 对于 React Native 中仅处理数据的通知,您可以使用此示例

本机 android: 在本机 android 中,您可以使用onMessageReceived(RemoteMessage remoteMessage)服务的方法(实现 FirebaseMessagingService)。然后通过remoteMessage.getData()使用有效负载数据,如此处所述