Swift 如何在iOS中获取NFC标签的icManufacturerCode
使用CoreNFC,我想读取NFC标记的ICmenufacturerCode。根据苹果公司的文档,NFCISO15693Tag具有名为icManufacturerCode的属性,该属性可以理解为:Swift 如何在iOS中获取NFC标签的icManufacturerCode,swift,ios11,core-nfc,Swift,Ios11,Core Nfc,使用CoreNFC,我想读取NFC标记的ICmenufacturerCode。根据苹果公司的文档,NFCISO15693Tag具有名为icManufacturerCode的属性,该属性可以理解为: func readerSession(_ session: NFCReaderSession, didDetect tags: [NFCTag]) { for tag in tags { let rfidTag = tag as! NFCISO15693Tag
func readerSession(_ session: NFCReaderSession, didDetect tags: [NFCTag]) {
for tag in tags {
let rfidTag = tag as! NFCISO15693Tag
print("- Is available: \(rfidTag.isAvailable)")
print("- Type: \(rfidTag.type)")
print("- IC Manufacturer Code: \(rfidTag.icManufacturerCode)")
print("- IC Serial Number: \(rfidTag.icSerialNumber)")
print("- Identifier: \(rfidTag.identifier)")
}
}
但是我感到困惑了。。这是正确的标签阅读器会话,还是有其他方法读取iOS 11中NFC标签的制造商Id。
在iOS 11中,我们有nfcndefredersession
。我使用nfcndefredersessiondelegate
实现代码,但这些方法不提供任何读取icManufacturerCode的方法。用nfcreadersessionelegate
方法替换该代码可以吗??
那么NFCReaderSession
将读取什么类型的标记
我知道这不是一个好问题,但我的困惑是奇怪的。谢谢。iOS11的问题与苹果的类和协议签名有关(如果我不混淆的话,协议
NFCTag
已经成为iOS13的枚举)。但是,您可以使用此代码,它应该适用于iOS11的所有版本+
extension YourViewController: __NFCReaderSessionDelegate {
func readerSessionDidBecomeActive(_ session: NFCReaderSession) {
}
func readerSession(_ session: NFCReaderSession, didInvalidateWithError error: Error) {
}
func readerSession(_ session: NFCReaderSession, didDetect tags: [__NFCTag]) {
for tag in tags {
let rfidTag = tag as! NFCISO15693Tag
print("- Is available: \(rfidTag.isAvailable)")
print("- Type: \(rfidTag.type)")
print("- IC Manufacturer Code: \(rfidTag.icManufacturerCode)")
print("- IC Serial Number: \(rfidTag.icSerialNumber)")
print("- Identifier: \(rfidTag.identifier)")
}
}
}
有两种必需方法和一种可选方法(来自Obj-C),只需获取icManufacturerCode
使用NFCNDEFReaderSession或NFCTagReaderSession的实例。只有
一次可以在系统中激活一个任何类型的读卡器会话
再次感谢。。还有一件事,你能告诉我rfidTag.icManufacturerCode返回的数据类型吗??字符串或数字,是十六进制还是十进制?在我的示例中,它是用于检测ISO7816、ISO15693、FeliCa和MIFARE标记的读卡器会话。如果要使用NDEF消息的检测NFC标记,请使用
NFCNDEFReaderSession
icManufacturerCode
isvar icManufacturerCode:Int{get}
Ok它的Int,正如我在Apple开发者网站上看到的那样。所以,我需要在我的项目中使用icManufacturerCode的反向十六进制。。为此,我应该将此int转换为十六进制,然后将其反转吗?让hex=String(icManufacturerCode,基数:16)
-它是转换器如果我想使用NFCNDEFReaderSession,那么如何获取NFC标记的icManufacturerCode??