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

Flutter中使用Firebase通知订阅主题报错SERVICE_NOT_AVAILABLE如何解决?

FCM订阅主题SERVICE_NOT_AVAILABLE报错解决方案

你遇到的报错:

Topic operation failed: SERVICE_NOT_AVAILABLE. Will retry Topic operation.

该报错是FCM服务无法与Firebase后台建立有效连接导致,和你现有订阅代码的逻辑无关,可按照以下步骤排查解决:

  • 基础环境校验
    • 安卓设备必须安装并启用符合版本要求的Google Play服务,国内无预置GMS的设备会直接触发该报错
    • 确认当前网络可正常访问Firebase服务,网络限制、代理配置错误都会导致连接失败
    • 确认安卓端google-services.json、iOS端GoogleService-Info.plist已正确放置到项目对应目录,包名、Firebase项目ID等配置完全匹配
  • 调整订阅执行时机
    不要直接在initState中调用订阅方法,FCM初始化、token生成需要一定耗时,建议监听token生成状态后再执行订阅:
    @override
    void initState() {
      super.initState();
      // 监听token刷新时重新订阅
      FirebaseMessaging.instance.onTokenRefresh.listen((token) {
        subscribeToTopic();
      });
      // 首次启动获取到token后执行订阅
      FirebaseMessaging.instance.getToken().then((token) {
        if (token != null) subscribeToTopic();
      });
    }
    
    void subscribeToTopic() async {
      try {
        await FirebaseMessaging.instance.subscribeToTopic('Notifications');
        print('subscribed to topic');
      } catch (e) {
        print('error is $e');
      }
    }
    
  • 依赖版本校验
    确认firebase_messaging版本与项目内其他Firebase相关依赖版本兼容,安卓端build.gradle建议使用统一的Firebase BOM版本,避免版本冲突导致的服务调用失败
  • 增加重试逻辑
    可以给订阅方法增加指数退避重试机制,避免临时网络波动导致的单次订阅失效。

内容的提问来源于stack exchange,提问作者Omar Abdelazeem

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 12:21:03