1

我正在研究 NFC 标签阅读器。我想读取每个 NFC 卡的唯一 ID 的 NFC tagId,我在 iOS 13 Swift 中使用 NDEF 标签。但我无法得到它。我想知道有没有办法获得 tagId ,如果是的话,请帮助我,在此先感谢。

func readerSession(_ session: NFCNDEFReaderSession, didDetectNDEFs messages: [NFCNDEFMessage]) {

        print("Detected tag - \(messages)")

        for message in messages {
            for record in message.records {
                if let string = String(data: record.payload, encoding: .utf8) {
                    print("record -- \(string)")
                }
                if let iden = String(data: record.identifier,encoding: .utf8){
                    print("identifier - \(iden)")
                }
            }
        }

    }
4

1 回答 1

1

试试这个。。

class PatrolRouteDetailVC: NFCTagReaderSessionDelegate {
func tagReaderSessionDidBecomeActive(_ session: NFCTagReaderSession) {
    print("Session Begun!")
}

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

func tagReaderSession(_ session: NFCTagReaderSession, didDetect tags: [NFCTag]) {
    if tags.count > 1{
        session.alertMessage = MORE_ONE_TAG_DETECTED_STR
        session.invalidate()
    }
    let tag = tags.first!
    session.connect(to: tag) { (error) in
        if nil != error{
            session.invalidate(errorMessage: CONNECTION_FAILD_STR)
        }
        if case let .miFare(sTag) = tag{
            let UID = sTag.identifier.map{ String(format: STRING_IDENTIFER_STR, $0)}.joined()
            session.alertMessage = UID_CAPTURE_STR
            session.invalidate()
            DispatchQueue.main.async {
                self.nfcTagIdStr = "\(UID)"
               }
           }
       }
   }
}
于 2020-09-11T05:43:53.387 回答