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

Flutter使用NFC_MANAGER插件报设备NFC不可用异常求助

报错触发原因

PlatformException(unavailable, NFC is not available for device., null, null)是nfc_manager插件初始化NFC会话时抛出的可用性校验失败异常,触发场景包含以下几类:

  • 设备无NFC硬件:包括所有iOS模拟器、部分低端安卓机型、未搭载NFC模块的旧款iPhone/平板设备
  • 系统NFC开关未开启:安卓端用户手动关闭了NFC功能,iOS端NFC模块临时异常被系统限制调用
  • 项目原生配置缺失:未声明NFC相关权限、未配置对应系统能力,导致插件无权限调用NFC接口
  • 系统版本不满足要求:安卓系统版本低于API 19(Android 4.4)、iOS系统版本低于13.0,不支持插件依赖的NFC基础接口
  • 特殊场景限制:设备处于飞行模式、NFC模块被其他系统/应用占用、部分定制ROM默认禁用第三方应用NFC调用权限
修复方案

按以下步骤逐一排查处理:

  • 调用NFC逻辑前先做可用性判断
    所有NFC相关操作执行前,必须先调用插件自带的可用性检查接口,从根源避免异常抛出,参考代码:
    import 'package:nfc_manager/nfc_manager.dart';
    
    // 前置校验
    final bool nfcAvailable = await NfcManager.instance.isAvailable();
    if (!nfcAvailable) {
      // 弹出提示告知用户当前设备不支持NFC或NFC未开启,终止后续NFC流程
      return;
    }
    
  • 补全双端原生配置
    • 安卓端:打开项目路径下的android/app/src/main/AndroidManifest.xml文件,在<manifest>节点下添加NFC权限声明:
      <uses-permission android:name="android.permission.NFC" />
      
      同时打开android/app/build.gradle,将defaultConfig下的minSdkVersion修改为19及以上。如果需要监听NFC标签唤起,还要在主Activity的<intent-filter>节点下补充NFC发现的action配置。
    • iOS端:打开项目路径下的ios/Runner/Info.plist文件,添加NFC权限说明和读取能力配置:
      <key>NFCReaderUsageDescription</key>
      <string>应用需要使用NFC读取标签信息</string>
      <key>com.apple.developer.nfc.readersession.formats</key>
      <array>
        <string>NDEF</string>
        <string>TAG</string>
      </array>
      
      注意iOS端必须使用真机调试,模拟器不支持NFC能力,同时需要在苹果开发者后台给对应App ID开启NFC Tag Reading能力。
  • 增加异常兜底逻辑
    所有NFC读写、扫描相关的逻辑都要用try-catch包裹,单独处理unavailable类型的异常,避免闪退:
    try {
      // 自定义NFC业务逻辑
    } on PlatformException catch (e) {
      if (e.code == 'unavailable') {
        // 单独处理NFC不可用场景,比如弹提示、跳设置页
      }
      // 其余异常的统一处理
    }
    
  • 引导用户开启NFC
    对于硬件支持NFC但功能未开启的用户,可以配合系统跳转插件直接引导用户跳转到NFC设置页开启功能,iOS端由于系统限制,需要弹窗提示用户手动进入设置开启。

内容的提问来源于stack exchange,提问作者хэлоу

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 21:39:04