MissingPluginException(在通道 plugins.flutter.io/firebase_messaging 上找不到方法 getToken 的实现)

Posted

技术标签:

【中文标题】MissingPluginException(在通道 plugins.flutter.io/firebase_messaging 上找不到方法 getToken 的实现)【英文标题】:MissingPluginException(No implementation found for method getToken on channel plugins.flutter.io/firebase_messaging) 【发布时间】:2021-05-18 01:00:42 【问题描述】:

在我的 Flutter android 应用的发布版本中,我收到了这个错误。

我试过了:

在 Firebase 中从 Google Play 控制台更新 SHA-1 密钥 更新 google-services.json 重建和推出。

我仍然收到此错误。 我也启用了 INTERNET_PERMISSIONS 并且 cleartext=true。

应用程序在 ios 和 android 调试模式下也能正常工作。

2021-02-15 00:47:37.450 2888-2932/? E/flutter:[错误:flutter/lib/ui/ui_dart_state.cc(177)] 未处理的异常:MissingPluginException(未找到通道 plugins.flutter.io/firebase_messaging 上的方法配置的实现) #0 MethodChannel._invokeMethod (package:flutter/src/services/platform_channel.dart:157) 2021-02-15 00:47:37.450 2888-2932/? E/flutter:[错误:flutter/lib/ui/ui_dart_state.cc(177)] 未处理的异常: #0 MethodChannel._invokeMethod (package:flutter/src/services/platform_channel.dart:157) #1 FirebaseMessaging.getToken(包:firebase_messaging/firebase_messaging.dart:146)

【问题讨论】:

【参考方案1】:

请确保您已实施以下步骤:

1:在 pubspecs.yaml 中添加 dep

firebase_core: // latest version
firebase_messaging: // latest version

2:在应用程序build.gradle文件中添加依赖和服务。

dependencies 

 implementation platform('com.google.firebase:firebase-bom:26.5.0')
 
 implementation 'com.google.firebase:firebase-messaging'
 


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

3:仅在 app 目录下的正确 google-service.json

4:main.dart中的初始化

Future<void> main() async 
  WidgetsFlutterBinding.ensureInitialized();
  await Firebase.initializeApp();
  runApp(MyApp());

5:将此代码添加到您的主类或第一个执行类中

FirebaseMessaging.instance.getToken().then((token)
  print("token $token");
); 

【讨论】:

您可以将安装应用程序的日志添加到您收到的错误中吗?所以我可以理解确切的问题 对不起,我忘了提这个。您是否像这样初始化了 Firebase 应用程序? Firebase.initializeApp() 不,我应该在哪里初始化它? @TamimChowdhury 我用第 4 步更新了我的答案:初始化,请检查 在您提到的 firebase 版本中,不推荐使用 FirebaseMessaging(),取而代之的是 FirebaseMessaging.instance 或 FirebaseMessaging.instanceFor()。【参考方案2】:

假设您的 pubspec.yaml 中有以下内容(并运行隐式颤振 pub get):

dependencies:
  firebase_messaging: ^10.0.9

进口, 现在在你的 Dart 代码中,你可以使用:

import 'package:firebase_messaging/firebase_messaging.dart';

那么在您的班级中,您可能想使用一种方法,也许是为了订阅主题:

Future<void> subscribeToChallenge(String topic) async 
    // subscribe to topic on when user clicks join
    await Firebase.initializeApp();
    await FirebaseMessaging.instance.subscribeToTopic(topic);

  

即使您已经在主文件中调用了 initializeApp(),您也注意到了吗?是的,不知何故,这就是我凭直觉让它工作的方式。

【讨论】:

【参考方案3】:

在应用程序build.gradle 文件中添加此依赖项。

implementation 'com.google.firebase:firebase-messaging:21.0.1'

【讨论】:

我已经实现了 'com.google.firebase:firebase-messaging:20.1.0'

以上是关于MissingPluginException(在通道 plugins.flutter.io/firebase_messaging 上找不到方法 getToken 的实现)的主要内容,如果未能解决你的问题,请参考以下文章

MissingPluginException(未找到通道上的方法的实现)

GoogleMaps Flutter 插件 MissingPluginException

发布模式android中的MissingPluginException

尝试直接从 FLUTTER 发出呼叫:MissingPluginException(未找到方法 callNumber 的实现

android Unhandled Exception 上的 Flutter 运行错误:MissingPluginException(未找到方法的实现)

MissingPluginException(在通道 com.amazonaws.amplify/amplify 上找不到方法配置的实现)