You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android端Flutter集成FCM获取Token失败报错求助

解决纯Android Flutter应用集成FCM获取Token时的Service Worker注册错误

你在纯Android平台的Flutter应用中集成Firebase Cloud Messaging(FCM)获取Token时,遇到以下错误:

FirebaseError: Messaging: We are unable to register the default service worker. Failed to register a ServiceWorker for scope ('http://localhost:34839/firebase-cloud-messaging-push-scope') with script ('http://localhost:34839/firebase-messaging-sw.js'): The script has an unsupported MIME type ('text/html'). (messaging/failed-service-worker-registration)

问题原因

这个错误的核心是FCM SDK误将Android环境判定为Web环境,触发了仅适用于Web平台的Service Worker注册逻辑。Service Worker是Web应用的特性,纯Android应用完全不需要这一组件,出现该问题通常是依赖版本bug、冗余Web配置或环境判断异常导致的。

解决步骤

  • 更新firebase_messaging依赖
    旧版本的firebase_messaging可能存在平台识别逻辑缺陷,先确保依赖为最新稳定版。修改pubspec.yaml:

    dependencies:
      firebase_messaging: ^latest_version # 替换为实际最新版本号
    

    执行命令更新依赖:

    flutter pub get
    
  • 删除Web相关冗余文件
    若之前为Web平台配置过FCM,项目中可能存在firebase-messaging-sw.js等Web专属文件,这些文件会干扰Android构建环境,直接删除项目根目录或web文件夹下的此类文件。

  • 显式限定Android平台执行FCM逻辑
    在初始化代码中添加平台判断,确保FCM相关操作仅在Android环境下执行,避免SDK误判:

    import 'dart:io' show Platform;
    import 'package:firebase_messaging/firebase_messaging.dart';
    
    class FirebaseApi{
      final _firebaseMessaging = FirebaseMessaging.instance;
    
      Future<void> initNotifications() async{
        if (Platform.isAndroid) {
          try{
            await _firebaseMessaging.requestPermission();
            final FCMToken = await _firebaseMessaging.getToken();
            print('Token: $FCMToken');
          } catch (e){
            print('error: $e');
          }
        }
      } 
    }
    
  • 清理缓存并重新构建
    执行以下命令清理项目缓存,避免旧配置残留:

    flutter clean
    flutter pub get
    flutter run
    
  • 验证Firebase配置正确性
    确认FirebaseOptions中的参数完全匹配Firebase控制台中Android应用的配置,不要混用Web应用的appId或其他参数。

测试验证

完成以上操作后重新运行应用,FCM应该能正常请求权限并返回Token,不会再触发Service Worker相关的错误。

内容的提问来源于stack exchange,提问作者hadil affes

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 06:06:02