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

Xamarin iOS配置NFC阅读器遇问题:NFCNdefReaderSession.ReadingAvailable恒为false

解决Xamarin iOS中NFCNDEFReaderSession读取不可用及服务连接失效问题

我之前在Xamarin iOS上配置NFC阅读器时也碰到过一模一样的问题,折腾了好久才搞定,给你列几个关键的排查点,应该能解决你的问题:

  • 先确认设备和系统是否达标
    别折腾模拟器了!NFCNDEFReaderSession只支持iPhone 7及以后的机型,而且系统必须是iOS 11或更高版本,模拟器压根没有NFC硬件支持,直接用真实设备测试。

  • 检查Info.plist的配置,这是最容易漏的
    必须添加两个核心配置项,少一个都不行:

    1. 加NFCReaderUsageDescription键,值要写清楚你用NFC做什么,比如"读取NFC标签中的商品信息"——iOS会在首次请求权限时显示这个描述,没这个配置的话系统直接拒绝NFC访问。
    2. 加com.apple.developer.nfc.readersession.formats数组,里面一定要包含NDEF这个字符串,告诉系统你的应用需要读取NDEF格式的标签。
      在Xamarin里你可以直接双击Info.plist文件编辑,或者去项目属性的iOS应用设置里添加这些键值对。
  • 代码里的会话初始化要规范
    首先,必须在主线程初始化NFC会话,后台线程创建会直接导致服务连接失败。另外,一定要把会话对象设为强引用,别让GC给回收了!比如:

    private NFCNdefReaderSession _nfcSession;
    
    public void StartNfcScan()
    {
        if (NFCNdefReaderSession.ReadingAvailable)
        {
            // 这里的this要实现INFCNdefReaderSessionDelegate接口处理回调
            _nfcSession = new NFCNdefReaderSession(this, null, false);
            _nfcSession.BeginSession();
        }
    }
    
  • 检查开发者权限和签名配置
    去Apple开发者后台看看你的App ID有没有启用"NFC Tag Reading"功能,要是没开的话赶紧打开,然后重新生成Provisioning Profile,再回到Xamarin项目里选择正确的配置文件。签名不对的话,系统也会拒绝你的应用连接NFC服务。

  • 关于那个服务连接失效的错误
    你看到的com.apple.nfcd.service.corenfc连接失效错误,大多是因为上面的配置没做好导致的——要么是Info.plist缺项,要么是会话初始化在后台线程,或者签名权限没开。另外,别频繁创建销毁会话,容易触发系统的服务保护机制。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 08:34:06