当应用程序处于前台时,Firebase 云消息传递 (FCM) 会向系统托盘发送推送通知

问题描述 投票:0回答:1

背景

根据有关 Android 消息处理的 FCM 文档,仅当应用程序处于后台时才会显示推送通知。当应用程序处于前台时,通知不可能出现在“系统托盘”中。

enter image description here但是!我有一个使用

Capacitor

构建的应用程序。该应用程序目前处于测试阶段,使用 Playstore 的内部测试工具套件。在其上,发送推送通知时,我通过 onMessageReceived 回调 AND

系统托盘
接收它们,即使应用程序处于前台 根据文档,这应该是不可能的。所以,我想也许(无法确认):

我是否读错了 FCM 文档?

    内部测试
  • 阻止FCM正确检测应用程序是否处于前台(尽管我不这么认为,因为
  • onMessageReceived
  • 被触发) 电容器出现问题(我使用的是旧的且不受支持的版本,所以我不会对意外行为感到惊讶)
    我发送的 FCM 消息格式有问题(见下文)?
  • 我使用
  • firebase-admin
  • SDK(最新版本)发送的 FCM 消息包示例。这是一条通知消息,其中提供了可选的
data

负载:

{
  data: { // data },
  notification: { title: "My title", body: 'My body' },
  android: { notification: { priority: 'max', visibility: 'public' } },
  apns: { payload: { aps: [Object] } },
  tokens: // token
}
一些观察:

在 iOS 上(Capacitor 是跨平台的),我通过系统托盘中的通知和触发的回调得到相同的行为

在 Android 上,应用程序处于前台时出现的通知
    不可点击
  • 当应用程序在后台运行时,我会按预期在系统托盘中收到通知。这些按预期工作并且可点击(例如,它们打开应用程序并触发正确的回调)
  • 刚刚
  • 从非常旧的
  • firebase-admin
  • SDK(使用现已关闭的旧版 API)更新到最新版本的 SDK。以前我没有这样的问题。
    我的问题(最后)
这个问题是由

内部测试

引起的吗?如果是这样,那就表明现场版本将按预期工作
  • 如果没有,您遇到过这个问题吗?如果是这样,您是否修复了它以及如何修复? 如果没有,您知道可能是什么问题吗?
  • 我尝试了什么
我尝试删除

android.notification.priority

    .visibility
  • 道具,但我遇到了同样的问题。
    我所做的所有研究都指向讨论是否可以在应用程序处于前台时向系统托盘发送通知的主题和帖子。虽然
    我处于这种情况,但想摆脱它
    (真正讽刺)。
  • 如果您需要在应用程序处于前台和后台时获取onMessageReceived
  • ,您应该将通知对象发送为空并使用数据对象发送数据,如下
android push-notification firebase-cloud-messaging capacitor
1个回答
-1
投票


© www.soinside.com 2019 - 2024. All rights reserved.