问题描述
我正在开发一个想要获取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)")
}
}
}
}
}
信息列表:-
所以,这是我的代码,如果我做错了,请告诉我,请纠正我。有人可以告诉我如何获取NFC标签的序列号和UID,
任何帮助将不胜感激。
谢谢。
解决方法
由于UID是唯一的标识符,因此似乎没有API可以获取MiFare标签的序列号。
但是,如果您仍然想要CSN(序列号),它应该是UID的一部分,如果我没记错的话,它是MiFare的十进制形式的第三个头字节。
例如,如果您的CSN为341777,则UID类似于053711a2345C81。
使用online tool,您可以看到0x053711是341777
有一种方法可以获取序列号,它也是标签 ID,因为它是每个标签的唯一编号。在 iOS 中使用 NFCTagReadSession 而不是使用 NFCNDEF 扫描:
Apple's iOS documentation
根据标签类型,可以直接检索标签相关数据。或者,您可以发送特定于供应商的命令以获取有关标签的更多信息。
如果您需要帮助,请联系我。