如何从NFC标签读取序列号?

问题描述 投票:0回答:1

这就是我读取 NFC 标签信息的方法:

func readerSession(_ session: NFCNDEFReaderSession, didDetect tags: [NFCNDEFTag]) {
    
    
    // Connect to the found tag and perform NDEF message reading
    let tag = tags.first!
    
    
    session.connect(to: tag, completionHandler: { (error: Error?) in
        
        tag.queryNDEFStatus(completionHandler: { (ndefStatus: NFCNDEFStatus, capacity: Int, error: Error?) in

            tag.readNDEF(completionHandler: { [self] (message: NFCNDEFMessage?, error: Error?) in
                
                for record in message!.records {
                    print("Type name: \(record.typeNameFormat)")
                    print("Payload size: \(record.payload)")
                    print("Type size: \(record.type)")
                    print("Identifier: \(record.identifier)")

                    print("Payload: " + String(data:record.payload, encoding: .utf8)!)
                    
                }
                
                
                session.invalidate()
            })
        })
    })
}

但标识符始终为 0 字节且为空。 我如何读取某种唯一标识符或序列号?

ios swift nfc core-nfc
1个回答
0
投票

NFC 标签没有唯一的标识符或序列号,它们的 ID 不能保证是唯一的。

您从 Ndef 规范打印的 Ndef 记录标识符是:-

可选的有效负载标识符允许用户应用程序识别 NDEF 记录中携带的有效负载

它是一个标识符,可帮助应用程序确定 Ndef 结构中存储的数据类型,它补充了 Payload Type。

要获取非唯一 ID,请尝试打印

tag.identifier
,这可能会返回十六进制字符串。但因为这不是唯一的,所以它不应该用于与安全相关的任何事情(对于某些 NFC 设备,ID 是随机的十六进制数字,或者可以编程为特定的十六进制数字)

© www.soinside.com 2019 - 2024. All rights reserved.