Flutter集成FCM报错:FlutterFcmService - failed to find callback
我之前也碰到过这个问题!这个Fatal: failed to find callback错误虽然不影响通知接收,但确实挺闹心的,本质是后台的FlutterFcmService找不到正确的插件注册回调导致的。结合你的配置,我给你几个亲测有效的修复步骤:
1. 修正Application类的插件注册逻辑
你当前的registerWith方法只手动注册了FirebaseMessagingPlugin,但这种方式很容易遗漏其他依赖插件,导致后台服务调用时找不到完整的回调上下文。把它改成用GeneratedPluginRegistrant自动注册所有插件:
修改后的Java Application类:
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) { // 替换成自动注册所有插件,避免遗漏 GeneratedPluginRegistrant.registerWith(registry); } }
2. 移除手动指定的Android端Firebase依赖版本
你在应用级build.gradle里手动添加了firebase-messaging和firebase-analytics的依赖,但firebase_messaging插件会自动管理对应的Android依赖版本,手动指定很容易出现版本不兼容的问题。直接删除这两行:
// 删掉这两行手动指定的依赖 implementation 'com.google.firebase:firebase-analytics:17.5.0' implementation 'com.google.firebase:firebase-messaging:20.2.4'
插件会自动引入和firebase_messaging: ^7.0.0匹配的依赖版本。
3. 清理项目缓存并重新构建
旧缓存经常会导致插件注册异常,执行以下命令彻底清理后重新运行:
flutter clean flutter pub get cd android && ./gradlew clean cd .. && flutter run
4. 确认Flutter端初始化逻辑(可选)
你的configure代码没问题,但可以确保应用启动时插件已正确初始化。如果后续出现其他初始化问题,可以在main函数里添加:
void main() async { WidgetsFlutterBinding.ensureInitialized(); // 若项目依赖firebase_core,需添加这行(7.x版本的firebase_messaging可能不需要) // await Firebase.initializeApp(); runApp(MyApp()); }
做完这些步骤后,再从Firebase控制台推送前台通知,那个恼人的错误应该就消失了!
内容的提问来源于stack exchange,提问作者Cyrus the Great
相关产品推荐
相关产品推荐

