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

如何读取Mifare Classic 1k ISO14443-3A卡?MAUI iOS NFC适配求助

排查Mifare Classic 1k无法触发DidDetectTags的问题

核心问题定位

Mifare Classic 1k 不属于ISO 7816标准卡片,因此你配置的com.apple.developer.nfc.readersession.iso7816.select-identifiers对它完全无效——该配置仅针对ISO 7816智能卡。以下是针对性排查步骤:

1. 确认使用正确的Session类型

必须使用NFCTagReaderSession而非NFCNDEFReaderSession:

  • NFCNDEFReaderSession仅能检测包含NDEF数据的标签,而Mifare Classic 1k默认不支持NDEF(除非被专门写入NDEF结构),如果你的卡片无NDEF数据,该session不会触发回调。
  • 正确初始化NFCTagReaderSession的示例代码:
    let session = NFCTagReaderSession(pollingOption: .iso14443, delegate: self, queue: DispatchQueue.main)
    session?.begin()
    
    其中pollingOption: .iso14443会覆盖Mifare Classic所属的ISO14443A标准卡片。

2. 验证Info.plist配置的正确性

确保以下配置准确无误:

  • 必须包含NFCReaderUsageDescription(NFC读取权限描述),否则session无法启动:
    <key>NFCReaderUsageDescription</key>
    <string>需要读取NFC卡片信息</string>
    
  • com.apple.developer.nfc.readersession.formats需为数组类型,包含TAG值(NDEF可选):
    <key>com.apple.developer.nfc.readersession.formats</key>
    <array>
        <string>TAG</string>
        <string>NDEF</string>
    </array>
    
    注意:无需在此添加Mifare相关自定义标识,iOS会自动识别支持的TAG类型。

3. 检查DidDetectTags的处理逻辑

在回调方法中,先确认标签类型是否被正确识别:

func tagReaderSession(_ session: NFCTagReaderSession, didDetect tags: [NFCTag]) {
    guard let tag = tags.first else {
        session.invalidate(errorMessage: "未检测到有效卡片")
        return
    }
    // 确认是否为Mifare Classic标签
    switch tag {
    case .miFare(let mifareTag):
        print("检测到Mifare Classic卡片,UID: \(mifareTag.uid.map { String(format: "%02x", $0) }.joined())")
        // 后续读取操作
        session.connect(to: tag) { error in
            // 处理连接结果
        }
    default:
        print("非Mifare Classic卡片")
        session.invalidate()
    }
}

如果标签未进入.miFare分支,可尝试更换卡片确认是否为卡片本身损坏。

4. 排除设备与系统问题

iPhone 7 Plus和iOS 15.8本身支持Mifare Classic读取,测试时确保卡片紧贴iPhone顶部NFC感应区域,避免外部干扰。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 06:07:51