janlionly / NFCReaderWriter

NFCReaderWriter which supports to read data from NFC chips(iOS 11), write data to NFC chips(iOS 13) and read NFC tags infos(iOS 13) by iOS devices. Compatible with both Swift and Objective-C. I will appreciate you if give me a star on the top right of page.
https://github.com/janlionly/NFCReaderWriter
MIT License
144 stars 27 forks source link

Get UID And Serial Number of the NFC Tag iOS #1

Closed ghost closed 4 years ago

ghost commented 4 years ago

I'm developing an application in which I want to get the NFC serial number and Identifier of a NFC tag. When I press a button, I want the application to find the UID and serial number of the NFC card. The only problem is that I have no idea how to get the UID and and serial number if that's possible on iOS. I m trying to get NFC identifier but i don't know how to get serial number of NFC Tag.

Code:-

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)")
               }
           }
       }
   }
}

So, Here is the my code please let me know if i m doing wrong please correct me. Can someone please explain to me how to get serial number and UID of NFC tag,

Any help would be greatly appreciated.

Thanks in advance.

janlionly commented 4 years ago

I'm developing an application in which I want to get the NFC serial number and Identifier of a NFC tag. When I press a button, I want the application to find the UID and serial number of the NFC card. The only problem is that I have no idea how to get the UID and and serial number if that's possible on iOS. I m trying to get NFC identifier but i don't know how to get serial number of NFC Tag.

Code:-

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)")
               }
           }
       }
   }
}

So, Here is the my code please let me know if i m doing wrong please correct me. Can someone please explain to me how to get serial number and UID of NFC tag,

Any help would be greatly appreciated.

Thanks in advance.

Hi, shamdass, please check these as follows:

  1. Please make sure that your device is iPhone 7 or later;
  2. Please make sure that add your NFC tag type to Info.plist(The key-value check my demo source's Info.plist);
  3. About the SerialNumber, now only the tag type of ISO15693 has the property of icSerialNumber;

All of the above, you can run my demo to check it. May these could help.

ghost commented 4 years ago

@janlionly Thanks for your reply.