获取NFC标签iOS的UID和序列号

问题描述

我正在开发一个想要获取NFC序列号和NFC标签标识符的应用程序。当我按下按钮时,我希望应用程序查找NFC卡的UID和序列号。唯一的问题是,如果在iOS上可行,我不知道如何获取UID和序列号。我正在尝试获取NFC标识符,但我不知道如何获取NFC标签的序列号。

代码:-

class ScanNFCTag: NFCTagReaderSessionDelegate {

import CoreNFC

var session: NFCTagReaderSession?

func scanNFCTag(sender: UIButton!) {
     self.session = NFCTagReaderSession(pollingOption: .iso14443,delegate: self)
     self.session?.alertMessage = "Hold Your Phone Near the NFC Tag"
     self.session?.begin()
}

func tagReaderSessionDidBecomeActive(_ session: NFCTagReaderSession) {
    print("Session Begin!")
}

func tagReaderSession(_ session: NFCTagReaderSession,didInvalidateWithError error: Error) {
    print(error.localizedDescription)
}

func tagReaderSession(_ session: NFCTagReaderSession,didDetect tags: [NFCTag]) {
    if tags.count > 1{
        session.alertMessage = "More Than One Tag Detected,Please try again"
        session.invalidate()
    }
    
    let tag = tags.first!
    session.connect(to: tag) { (error) in
        if nil != error{
            session.invalidate(errorMessage: error?.localizedDescription ?? "")
        }
        if case let .mifare(sTag) = tag{
            let UID = sTag.identifier.map{ String(format:"%.2hhx",$0)}.joined()
            session.alertMessage = "Successfully linked tag to location"
            session.invalidate()
            dispatchQueue.main.async {
                print("NFC Identifer = ","\(UID)")
               }
           }
       }
   }
}

信息列表:-

Screen Shot

所以,这是我的代码,如果我做错了,请告诉我,请纠正我。有人可以告诉我如何获取NFC标签的序列号和UID,

任何帮助将不胜感激。

谢谢。

解决方法

由于UID是唯一的标识符,因此似乎没有API可以获取MiFare标签的序列号。

但是,如果您仍然想要CSN(序列号),它应该是UID的一部分,如果我没记错的话,它是MiFare的十进制形式的第三个头字节。

例如,如果您的CSN为341777,则UID类似于053711a2345C81。
使用online tool,您可以看到0x053711是341777

,

有一种方法可以获取序列号,它也是标签 ID,因为它是每个标签的唯一编号。在 iOS 中使用 NFCTagReadSession 而不是使用 NFCNDEF 扫描:
Apple's iOS documentation

根据标签类型,可以直接检索标签相关数据。或者,您可以发送特定于供应商的命令以获取有关标签的更多信息。

如果您需要帮助,请联系我。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...