0

我想使用iOS 11 中引入的Core NFC 框架从我的 NFC-Tag (NXP NTAG213) 扫描 NDEF 数据。

我成功读取了标签中的有效负载:

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.
}


}
4

2 回答 2

2

CoreNFC 不支持解析复杂的 NFC NDEF 消息负载。我创建了一个开源解析器VYNFCKit来解析有效负载。查看我的教程https://medium.com/@vinceyuan/reading-and-parsing-nfc-tag-on-ios-11-60f4bc7a11ea

于 2017-09-04T03:33:27.250 回答
0

我不确定你是否可以describing:payload.payload这里使用。但我相信老式的StringfromNSData会奏效。(不是日常的 Swift 编码器,所以不确定这些天它如何使用 Swift 3/4 处理这个问题)。

在 Objective-C 中,我可以这样做:

NSString *dataString = [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding];

或在您的情况下NSUTF8StringEncoding为日语字符串。

是我制作的一个示例项目(在 Objective-C 中)。

于 2017-06-14T01:34:24.700 回答