是否有可能在屏幕顶部显示Firebase系统通知(当应用程序在后台)的弹出窗口?我使用setPriority(Notification.PRIORITY_MAX)
来显示前景中来自onMessageReceived
的通知。FCM for android:弹出系统通知当应用程序在后台
我使用notification
和data
这两个字段,所以我没有权限访问前台收到的通知。我试过设置priority
到high
,并使用通知推送 - 没有任何帮助。
是否有可能在屏幕顶部显示Firebase系统通知(当应用程序在后台)的弹出窗口?我使用setPriority(Notification.PRIORITY_MAX)
来显示前景中来自onMessageReceived
的通知。FCM for android:弹出系统通知当应用程序在后台
我使用notification
和data
这两个字段,所以我没有权限访问前台收到的通知。我试过设置priority
到high
,并使用通知推送 - 没有任何帮助。
这是通知场只有在使用data
唯一有效负载时,您的应用在后台才能处理onMessageReceived
中的消息。
在您的有效内容中同时使用notification
和data
时,预期的行为是Android系统将在应用程序处于后台时处理通知,而不管您的priority
的值是多少。
查看官方文档Handling Android Messages了解更多详情。
谢谢!我只在有效负载中留下了'data'字段,并通过'onMessageReceived'中的'Notification.Builder'显示了自定义通知。首先,我认为这将是不必要的代码,而FCM可以自行显示通知,但后来我发现这种方式更加灵活。 – prcu
如果仅在通知发出数据场,你可以处理通知下面的函数内部
@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());
}
}
请注意,不包括在该请求
它不是在应用程序在后台调用。来自文档:“当在后台时,应用程序会在通知托盘中收到通知有效内容,并且只在用户点击通知时处理数据有效内容。” – prcu
只发送数据字段。不通知字段。如果两者都发送,FCM将自动显示通知。如果只发送数据字段,它将在onMessageReceived()中收到() –
检查文档您查找的行为在这里描述:https://firebase.google.com/docs/cloud-messaging/concept-options –
不可能我猜 –