Flutter Firebase 通知消息传递

Posted

技术标签:

【中文标题】Flutter Firebase 通知消息传递【英文标题】:Flutter Firebase Notification Messeging 【发布时间】:2021-02-19 12:39:31 【问题描述】:

我正在尝试在我的颤振应用程序中实现 firebase_messaging。在 android 集成上,当我编写本机应用程序级代码时,我收到重复类的错误,但不知道为什么。

import io.flutter.app.FlutterApplication;
import io.flutter.plugin.common.PluginRegistry;
import io.flutter.plugin.common.PluginRegistry.PluginRegistrantCallback;
import io.flutter.plugins.GeneratedPluginRegistrant;
import io.flutter.plugins.firebasemessaging.FlutterFirebaseMessagingService;

class Application: FlutterApplication(), PluginRegistrantCallback 

    override fun onCreate() 
        super.onCreate()
        FlutterFirebaseMessagingService.setPluginRegistrant(this)
    
    override fun registerWith(registry: PluginRegistry?) 
        io.flutter.plugins.firebasemessaging.FirebaseMessagingPlugin.registerWith(registry?.registrarFor("io.flutter.plugins.firebasemessaging.FirebaseMessagingPlugin"));     
    

D8:程序类型已存在:com.project.my_project.Application com.android.builder.dexing.DexArchiveMergerException:合并 dex 档案时出错: 在https://developer.android.com/studio/build/dependencies#duplicate_classes 了解如何解决问题。 程序类型已存在:com.project.my_project.Application 在 com.android.builder.dexing.D8DexArchiveMerger.getExceptionToRethrow(D8DexArchiveMerger.java:131) 在 com.android.builder.dexing.D8DexArchiveMerger.mergeDexArchives(D8DexArchiveMerger.java:118) 在 com.android.build.gradle.internal.transforms.DexMergerTransformCallable.call(DexMergerTransformCallable.java:102) 在 com.android.build.gradle.internal.tasks.DexMergingTaskRunnable.run(DexMergingTask.kt:444) ...

出了什么问题: 任务“:app:mergeProjectDexDebug”执行失败。

执行 com.android.build.gradle.internal.tasks.Workers$ActionFacade 时发生故障 com.android.builder.dexing.DexArchiveMergerException:合并 dex 档案时出错: 在https://developer.android.com/studio/build/dependencies#duplicate_classes 了解如何解决该问题。 程序类型已存在:com.project.my_project.Application

颤振医生 [✓] Flutter (Channel stable, 1.22.3, on Mac OS X 10.15.7 19H2, locale pt-BR) • Flutter 版本 1.22.3,位于 /Users/developer/Documents/Documents/开发/flutter • 框架修订 8874f21e79(8 天前),2020-10-29 14:14:35 -0700 • 发动机版本 a1440ca392 • Dart 版本 2.10.3

[✓] Android 工具链 - 为 Android 设备开发(Android SDK 版本 30.0.2) • Android SDK 位于 /Users/developer/Library/Android/sdk • 平台 android-30,构建工具 30.0.2 • Java 二进制文件位于:/Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java • Java 版本 OpenJDK 运行时环境(构建 1.8.0_242-release-1644-b3-6222593) • 接受所有 Android 许可证。

[✓] Xcode - 为 ios 和 macOS 开发 (Xcode 12.1) • Xcode 位于 /Applications/Xcode.app/Contents/Developer • Xcode 12.1,内部版本 12A7403 • CocoaPods 版本 1.10.0

[!] Android Studio(4.1 版) • Android Studio 位于 /Applications/Android Studio.app/Contents ✗ 未安装 Flutter 插件;这增加了 Flutter 特定的功能。(即使知道它已安装工作) ✗ Dart 插件未安装;这增加了 Dart 特定的功能。(即使知道它已安装并工作) • Java 版本 OpenJDK 运行时环境(构建 1.8.0_242-release-1644-b3-6222593)

[✓] VS 代码(版本 1.50.1) • /Applications/Visual Studio Code.app/Contents 中的 VS 代码 • Flutter 扩展版本 3.16.0

[✓] 已连接设备(1 个可用) • sdk gphone x86 arm(移动) • emulator-5554 • android-x86 • Android 11 (API 30)(模拟器)

【问题讨论】:

【参考方案1】:

这是我项目中的一个工作示例。我记得我偶然发现了类似的事情。我写信只是为了快速回复,不确定这是否是正确的解决方案。

import io.flutter.app.FlutterApplication;
import io.flutter.plugin.common.PluginRegistry;
import io.flutter.plugin.common.PluginRegistry.PluginRegistrantCallback;
// import io.flutter.plugins.GeneratedPluginRegistrant;
import io.flutter.plugins.firebasemessaging.FlutterFirebaseMessagingService;

public class Application extends FlutterApplication implements PluginRegistrantCallback 
  @Override
  public void onCreate() 
    super.onCreate();
    FlutterFirebaseMessagingService.setPluginRegistrant(this);
  

  @Override
  public void registerWith(PluginRegistry registry) 
    registry.registrarFor("io.flutter.plugins.firebasemessaging.FirebaseMessagingPlugin");
  

【讨论】:

Kotlin 上的源应用程序代码。在 Java 中不起作用。还是谢谢【参考方案2】:

我通过更新颤振插件来解决它。不知道会发生什么。

【讨论】:

以上是关于Flutter Firebase 通知消息传递的主要内容,如果未能解决你的问题,请参考以下文章

Flutter Firebase 消息传递 - 应用打开时未显示推送通知

Flutter:iOS 富图像通知在 Firebase 消息传递中不起作用

Firebase 消息传递 - 当应用程序关闭或在 Flutter 中休眠时不会发送通知

Flutter 和 FCM(Firebase 云消息传递)onMessage、onResume 和 onLaunch 在单击通知时未触发(包:firebase_messaging 7.0.0)

Flutter sendMessage()中的Firebase消息传递

使用 Flutter 测试 Firebase 云消息传递