Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Cannot read the NFC chip of the ePassport using iOS13

Tags:

swift

ios13

nfc

import UIKit
import CoreNFC

class ViewController: UIViewController, NFCTagReaderSessionDelegate {

    var nfcTagReaderSession: NFCTagReaderSession?

    func tagReaderSessionDidBecomeActive(_ session: NFCTagReaderSession) {
        print("Tag reader did become active")
        print("isReady: \(nfcTagReaderSession?.isReady)")
    }

    func tagReaderSession(_ session: NFCTagReaderSession, didInvalidateWithError error: Error) {
        print("\(error)")
    }

    func tagReaderSession(_ session: NFCTagReaderSession, didDetect tags: [NFCTag]) {
        // this part is never called!
        print("got a Tag!")
        print("\(tags)")
    }

    @IBAction func clickedNFC(_ sender: Any) {
        nfcTagReaderSession = NFCTagReaderSession(pollingOption: [.iso14443], delegate: self)

        nfcTagReaderSession?.alertMessage = "Place the device on the innercover of the passport"
        nfcTagReaderSession?.begin()
        print("isReady: \(nfcTagReaderSession?.isReady)")

    }

}

I also have in my entitlements file

<key>com.apple.developer.nfc.readersession.formats</key>
<array>
    <string>NDEF</string>
    <string>TAG</string>
</array>

and in my Info.plist

<key>NFCReaderUsageDescription</key>
<string>Read the NFC chip of ePassports</string>
<key>com.apple.developer.nfc.readersession.iso7816.select-identifiers</key>
<array>
    <string>A0000002471001</string>
</array>

My problem is that tagReaderSession(_ session: NFCTagReaderSession, didDetect tags: [NFCTag]) is never being called. What am I missing?

like image 702
Jan Moritz Avatar asked Jun 09 '19 15:06

Jan Moritz


People also ask

Can iPhone read NFC passport?

With the ReadID NFC app you can read the NFC chip that is in your passport or identity card, using the NFC capability of your iPhone (iPhone 7 or later).

How do I scan my NFC passport on my iPhone?

Make sure your phone is NFC ready and your passport has the chip symbol displayed, then use your phone's camera to extract the necessary info to enable NFC access. Place the top part of your phone on your passport and let it scan your data.


Video Answer


1 Answers

I found the solution I added 00000000000000 to the com.apple.developer.nfc.readersession.iso7816.select-identifiers entry in the Info.plist Now it looks like this:

<key>com.apple.developer.nfc.readersession.iso7816.select-identifiers</key>
<array>
    <string>A0000002471001</string>
    <string>00000000000000</string>
</array>
like image 189
Jan Moritz Avatar answered Oct 13 '22 17:10

Jan Moritz