【问题标题】:FCM for android: popup system notification when app is in backgroundFCM for android:应用程序在后台时弹出系统通知
【发布时间】:2017-02-18 12:45:03
【问题描述】:

是否可以在屏幕顶部显示 Firebase 系统通知的弹出窗口(当应用程序在后台时)?为此,我使用setPriority(Notification.PRIORITY_MAX) 在前台显示来自onMessageReceived 的通知。

我同时使用notificationdata 字段,因此我无法访问前台收到的通知。我尝试将 priority 设置为 high 并使用仅通知推送 - 没有任何帮助。

【问题讨论】:

标签: android firebase push-notification firebase-cloud-messaging


【解决方案1】:

仅当您的应用在后台使用data 有效负载时,才能处理onMessageReceived 中的消息。

在您的负载中同时使用notificationdata 时,预期的行为是Android 系统将在应用程序处于后台时处理通知,而不管您的priority 的值是什么。

更多详情请参阅Handling Android Messages 上的官方文档。

【讨论】:

  • 谢谢!我只在有效负载中留下了data 字段,并显示了来自onMessageReceivedNotification.Builder 的自定义通知。一开始我认为自己显示通知是不必要的代码,而 FCM 可以自己做,但后来我发现这种方式更灵活。
【解决方案2】:

如果你只在通知中发送数据字段,你可以在下面的函数中处理通知

@Override
public void onMessageReceived(RemoteMessage remoteMessage) {

    if (remoteMessage.getData().size() > 0) {
        Log.d(TAG, "Message data payload: " + remoteMessage.getData());
    }

    // Check if message contains a notification payload.
    if (remoteMessage.getNotification() != null) {
        Log.d(TAG, "Message Notification Body: " +remoteMessage.getNotification().getBody());
    }

}

请注意不要在该请求中包含通知字段

【讨论】:

  • 应用在后台时不会被调用。来自文档:“在后台时,应用程序在通知托盘中接收通知负载,并且仅在用户点击通知时处理数据负载。”
  • 仅发送数据字段。不是通知字段。如果两者都发送,FCM 将自动显示通知。如果您只发送数据字段,它将在 onMessageReceived() 中接收
猜你喜欢
  • 1970-01-01
  • 2018-05-31
  • 2017-12-04
  • 2016-12-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-11
  • 2019-02-25
相关资源
最近更新 更多