核心 NFC 负载错误
Core NFC Payload Error
我想使用 iOS 11 中引入的 核心 NFC 框架 从我的 NFC 标签 (NXP NTAG213) 扫描 NDEF 数据。
我成功读取了标签内的Payload:
TNF=1, Payload Type=<54>, Payload ID=<>, Payload=<026a61e3 8193e382 93e381ab e381a1e3 81af0a>
我想提取有效负载部分,所以这是我尝试过的方法:
print("payload.payload")
但是出现错误。
这是我的源代码:
import UIKit
import CoreNFC
class ViewController: UIViewController, NFCNDEFReaderSessionDelegate{
var payloadData = "HaveNoData"
func readerSession(_ session: NFCNDEFReaderSession, didDetectNDEFs messages: [NFCNDEFMessage]) {
print("エラーは発生しませんでした")
for message in messages{
for payload in message.records {
print (payload)
payloadData = String(describing: payload.payload)
}
}
print(payloadData)
}
func readerSession(_ session: NFCNDEFReaderSession, didInvalidateWithError error: Error) {
print("Error: \(error.localizedDescription)")
}
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
let session:NFCNDEFReaderSession = NFCNDEFReaderSession(delegate: self, queue: nil, invalidateAfterFirstRead: true)
session.begin()
}
@IBAction func launch(_ sender: Any) {
let session:NFCNDEFReaderSession = NFCNDEFReaderSession(delegate: self, queue: nil, invalidateAfterFirstRead: true)
session.begin()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
我不确定您是否可以在此处对 payload.payload
使用 describing:
。但我相信来自 NSData
的老式 String
会奏效。 (不是每天 Swift 的编码员,所以不确定这些天 Swift 3/4 如何处理这个问题)。
在 Objective-C 中,我可以这样做:
NSString *dataString = [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding];
或者在你的情况下 NSUTF8StringEncoding
用于日文字符串。
Here 是我制作的示例项目(在 Objective-C)。
CoreNFC 不支持解析复杂的 NFC NDEF 消息负载。我创建了一个开源解析器 VYNFCKit to parse payload. Check my tutorial https://medium.com/@vinceyuan/reading-and-parsing-nfc-tag-on-ios-11-60f4bc7a11ea
我想使用 iOS 11 中引入的 核心 NFC 框架 从我的 NFC 标签 (NXP NTAG213) 扫描 NDEF 数据。
我成功读取了标签内的Payload:
TNF=1, Payload Type=<54>, Payload ID=<>, Payload=<026a61e3 8193e382 93e381ab e381a1e3 81af0a>
我想提取有效负载部分,所以这是我尝试过的方法:
print("payload.payload")
但是出现错误。
这是我的源代码:
import UIKit
import CoreNFC
class ViewController: UIViewController, NFCNDEFReaderSessionDelegate{
var payloadData = "HaveNoData"
func readerSession(_ session: NFCNDEFReaderSession, didDetectNDEFs messages: [NFCNDEFMessage]) {
print("エラーは発生しませんでした")
for message in messages{
for payload in message.records {
print (payload)
payloadData = String(describing: payload.payload)
}
}
print(payloadData)
}
func readerSession(_ session: NFCNDEFReaderSession, didInvalidateWithError error: Error) {
print("Error: \(error.localizedDescription)")
}
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
let session:NFCNDEFReaderSession = NFCNDEFReaderSession(delegate: self, queue: nil, invalidateAfterFirstRead: true)
session.begin()
}
@IBAction func launch(_ sender: Any) {
let session:NFCNDEFReaderSession = NFCNDEFReaderSession(delegate: self, queue: nil, invalidateAfterFirstRead: true)
session.begin()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
我不确定您是否可以在此处对 payload.payload
使用 describing:
。但我相信来自 NSData
的老式 String
会奏效。 (不是每天 Swift 的编码员,所以不确定这些天 Swift 3/4 如何处理这个问题)。
在 Objective-C 中,我可以这样做:
NSString *dataString = [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding];
或者在你的情况下 NSUTF8StringEncoding
用于日文字符串。
Here 是我制作的示例项目(在 Objective-C)。
CoreNFC 不支持解析复杂的 NFC NDEF 消息负载。我创建了一个开源解析器 VYNFCKit to parse payload. Check my tutorial https://medium.com/@vinceyuan/reading-and-parsing-nfc-tag-on-ios-11-60f4bc7a11ea