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

iezvtpos  于 12个月前  发布在  iOS
关注(0)|答案(1)|浏览(226)

这是我如何读取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字节和空。我怎样才能读取一种唯一标识符或序列号?

rbpvctlc

rbpvctlc1#

NFC标签没有唯一的标识符或序列号,它们有一个不能保证唯一的ID。
Ndef spec打印的Ndef记录标识符是:
可选的负载标识符允许用户应用程序识别NDEF记录中携带的负载
它是一个标识符,用于帮助应用确定Ndef结构中存储的数据类型,它补充了Payload Type。
要获取非唯一ID,请尝试打印tag.identifier,这可能会返回十六进制字符串。但由于这是非唯一的,它不应该用于任何与安全相关的事情(对于某些NFC设备,ID是一个随机的十六进制数,或者它可以被编程为一个特定的十六进制数)

相关问题