Flutter 2.0 与 Firebase Cloud Messaging:在 Android 上未调用 onMessage

2024-04-20

我在 Flutter 2.0 中遇到了 Firebase Cloud Messaging onMessage 问题。

功能

FirebaseMessaging.onMessage.listen((RemoteMessage message) { ... }

is 没有被调用当在前台收到消息时。然而,日志说

收到广播消息

在第一次收到消息时,我收到其他警告,例如:

访问隐藏方法 Landroid/os/WorkSource

但警告在后续消息中消失。

The 有趣的事情就是它

FirebaseMessaging.onBackgroundMessage(firebaseMessagingBackgroundHandler);

works.

如果我将应用程序发送到后台,我会收到通知并调用定义的方法。

Code

@override
void initState() {
    initializeFlutterFire()
        .then((value) => subscribeToMessages);

    super.initState();
}

Future<void> initializeFlutterFire() async {
    try {
        Firebase.initializeApp();
        setState(() {
            _initialized = true;
            print("Firebase has been initialized");
        });
    } catch (e) {
       setState(() {
           _error = true;
       });
    }
}

void subscribeToMessages() {
    // The following handler is called, when App is in the background.
    FirebaseMessaging.onBackgroundMessage(firebaseMessagingBackgroundHandler);

    // The following function is not called, when a message was received by the device.
    FirebaseMessaging.onMessage.listen((RemoteMessage message) {
        print('Got a message whilst in the foreground!');
        print('Message data: ${message.data}');

        if (message.notification != null) {
            print('Message also contained a notification: ${message.notification}');
        }
    });
}

Future<void> firebaseMessagingBackgroundHandler(RemoteMessage message) async {
    print('message from background handler');
    print("Handling a background message: ${message.messageId}");
}

我有一种感觉,没有来自 onMessage().listen(...) 的订阅,这就是为什么没有执行任何操作。

你有什么建议吗,我做错了什么?

提前致谢, 乌韦

环境

Firebase 控制台云消息传递

on

华为 P20 和三星 Galaxy Tab A 10,均运行 Android 10。

pubspec.yaml

firebase_core: "^1.0.1"
firebase_messaging: "^9.0.0"

android/build.gradle

dependencies {
    ...
    classpath 'com.google.gms:google-services:4.3.5'

android/app/build.gradle

apply plugin: 'com.android.application'
apply plugin: 'com.google.gms.google-services'
...

android {
    compileSdkVersion 30
    ...
    defaultConfig {
        minSdkVersion 16
        targetSdkVersion 30
        ...

AndroidManifest.xml

<activity ...>
    ...
    <intent-filter>
        <action android:name="FLUTTER_NOTIFICATION_CLICK" />
        <category android:name="android.intent.category.DEFAULT" />
    </intent-filter>
    <intent-filter>
        <action android:name="com.google.firebase.MESSAGING_EVENT"/>
    </intent-filter>
</activity>

扑医生

Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel beta, 2.0.2, on macOS 11.2.1 20D75 darwin-x64, locale de)
[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.3)
[!] Xcode - develop for iOS and macOS
    ✗ Xcode installation is incomplete; a full installation is necessary for iOS development.
    Download at: https://developer.apple.com/xcode/download/
    Or install Xcode via the App Store.
    Once installed, run:
        sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer
        sudo xcodebuild -runFirstLaunch
[✓] Chrome - develop for the web
[✓] Android Studio
[✓] Android Studio (version 4.1)
[✓] IntelliJ IDEA Community Edition (version 2020.1.2)
[✓] VS Code (version 1.53.0)
[✓] Connected device (3 available)

! Doctor found issues in 1 category.

有一个issue https://github.com/FirebaseExtended/flutterfire/issues/4949使用 firebase_messaging 9.0.0 插件。

如果您使用 Cmd+Click 或 Ctrl+Click(同时将鼠标悬停在 RemoteMessage 类上)导航到工厂 RemoteMessage.fromMap() 的定义,请在 return 语句中更改

contentAvailable: map['contentAvailable'], 
mutableContent: map['mutableContent'],

to

contentAvailable: map['contentAvailable'] ?? false,
to mutableContent: map['mutableContent'] ?? false,

您可能必须确认您想要修改包。这应该可以帮助您完成直到软件包更新为止。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Flutter 2.0 与 Firebase Cloud Messaging:在 Android 上未调用 onMessage 的相关文章

随机推荐

  • 预测误差指标的差距是什么:MAPE 和 WMAPE?

    我知道 MAPE 和 WMAPE 作为预测误差指标 它们有一些好处 但差距是什么 有人说 For MAPE Combinations with very small or zero volumes can cause large skew
  • Treeview——如何滚动直到所选项目位于顶部?

    我正在开发个人文件浏览器应用程序一年 我正在尝试关注我选择的文件夹 例如 如果我说我的默认文件夹是 C Users Me 那么它会自动展开 C 然后是 Users 等等 最后 我选择了 我 文件夹 我没有设法滚动到 自动 这样我就可以在我的
  • 带有异步等待的 chrome.runtime.onMessage 响应

    我想在 onMessage 侦听器中使用异步等待 chrome runtime onMessage addListener async request sender sendResponse gt var key await getKey
  • 简要说明:JDBC 是如何工作的? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 访问对象中的属性[重复]

    这个问题在这里已经有答案了 可能的重复 JavaScript 属性访问 点符号与方括号 https stackoverflow com questions 4968406 javascript property access dot not
  • 如何撤消“git重置”?

    如何撤消该命令 git reset HEAD 简短回答 git reset HEAD 1 长答案 Git 保留所有引用更新的日志 例如 签出 重置 提交 合并 您可以通过输入以下内容来查看它 git reflog 此列表中的某个位置是您丢失
  • 使用 C++ 的音频流教程和示例代码 [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我想学习音频流的基础知识 特别是 我
  • 在 Protractor 中定位父元素的推荐方法

    根据最新公布的时尚指南 https github com angular protractor blob master docs style guide md never use xpath 使用by xpath 定位器被认为是一种不好的做
  • Qt5 链接器错误:找不到版本“Qt_5”

    1 问题 我正在尝试构建开源motorcar https github com evil0sheep motorcar在 Arch Linux 机器上从头开始项目 Motorcar 是一款 Linux VR 窗口管理器 可与 Oculus
  • 无法打开原子

    我无法打开 Atom 编辑器 昨天还好好的 今天不知道为什么打不开了 我的电脑上没有 Windows 更新或任何东西 我尝试删除一些在线论坛中提到的 存储 文件夹 但没有帮助 有什么建议么 我使用的是 Atom 版本 1 19 6 0 如果
  • Kafka 连接教程停止工作

    我在此链接中执行了步骤 7 使用 Kafka Connect 导入 导出数据 http kafka apache org documentation html quickstart http kafka apache org documen
  • 链接描述文件未按预期跳过字节

    因此 我有这个汇编文件 我使用 GNU as 进行汇编 并使用链接器脚本与 GNU ld 进行链接 链接描述文件 boot ld INPUT boot o OUTPUT boot out ENTRY boot start SECTIONS
  • 并行处理 vec:如何安全地进行,或者不使用不稳定的功能?

    我有一个巨大的向量 我希望能够并行加载 操作 例如在一个线程中加载前十万个索引 然后在另一个线程中加载下一个索引 依此类推 由于这将是代码中非常热门的部分 因此我提出了以下概念验证不安全代码来在不使用 Arcs 和互斥体的情况下执行此操作
  • 自动持有自旋锁时返回是否不安全?

    受人尊敬的书说 The flags参数传递给spin unlock irqrestore必须与传递给的变量相同spin lock irqsave 您还必须致电spin lock irqsave and spin unlock irqrest
  • C 编程中 @ 符号的使用

    我正在使用一些最初编写的代码IAR https en wikipedia org wiki IAR Systems IAR Embedded Workbench并使用 GCC 编译器将其转换为编译 然而 我被困在某一行 因为我不理解语法或发
  • 创建无法在其板条箱外部实例化的零大小结构的惯用方法是什么?

    我有类似的东西 mod private My crate pub struct A impl A pub fn new gt Self Self fn main External code let obj private A new let
  • 两个或多个(哈希)映射的并集

    我有两个包含相同类型对象的地图 Map
  • 如何使用Delphi 2010优化上传例程?

    My 尚未发布Delphi 2010 应用程序允许用户将他们的文件上传到我的服务器 现在我使用 HTTPS POST 发送文件 简化的 算法基本上是 将文件拆分为 片 每个片 256KB 对于每个切片 将其 POST 到服务器 IE 对于
  • Flex/AS3很奇怪的简单数字运算问题

    我的问题在 Flex 中描述起来非常简单 0 8 0 2 0 6000000000000001 以前有人得到过这个 我确定前两个成员是 0 8 和 0 2 并且是 Number 类 为什么会发生这种情况 另一件事 我从 像这样输入 var
  • Flutter 2.0 与 Firebase Cloud Messaging:在 Android 上未调用 onMessage

    我在 Flutter 2 0 中遇到了 Firebase Cloud Messaging onMessage 问题 功能 FirebaseMessaging onMessage listen RemoteMessage message is