Improve NFC history readers and prepare production build

This commit is contained in:
2026-05-08 05:40:52 +07:00
parent 1dc293c697
commit bd34467ddc
14 changed files with 688 additions and 182 deletions

View File

@ -28,9 +28,9 @@ public class ApduRunner: NSObject, NFCTagReaderSessionDelegate {
}
func startScan() {
let langCode = Locale.current.languageCode
let langCode = Locale.current.languageCode ?? "en"
self.sessionEx = NFCTagReaderSession(pollingOption: [.iso14443, .iso18092], delegate: self)
self.sessionEx?.alertMessage = "scanMessage".localizeString(string: langCode!)
self.sessionEx?.alertMessage = "scanMessage".localizeString(string: langCode)
self.sessionEx?.begin()
}
@ -47,28 +47,31 @@ public class ApduRunner: NSObject, NFCTagReaderSessionDelegate {
debugLog("Nfc Tag???.")
return
}
if case NFCTag.iso7816(_) = tags.first! {
sessionEx?.connect(to: tags.first!) { [self] (error: Error?) in
guard let firstTag = tags.first else {
return
}
if case NFCTag.iso7816(_) = firstTag {
sessionEx?.connect(to: firstTag) { [self] (error: Error?) in
if let err = error {
debugLog("Error connecting to Nfc Tag" + err.localizedDescription)
return
}
debugLog("Nfc Tag is connected.")
if (self.callback != nil){
self.callback!.connected(unifiedNfcApi: self.nfcApi!)
if let callback = self.callback, let nfcApi = self.nfcApi {
callback.connected(unifiedNfcApi: nfcApi)
}
}
} else if case .feliCa(let feliCaTag) = tags.first! {
sessionEx?.connect(to: tags.first!) { [self] (error: Error?) in
} else if case .feliCa(let feliCaTag) = firstTag {
sessionEx?.connect(to: firstTag) { [self] (error: Error?) in
if let err = error {
debugLog("Error connecting to Nfc Tag" + err.localizedDescription)
return
}
// felicaTag = feliCaTag
debugLog("Felica is connected.")
if (self.callback != nil){
if let callback = self.callback, let nfcApi = self.nfcApi {
debugLog("Felica is connected 2.")
self.callback!.felicaConnected(unifiedNfcApi: self.nfcApi!, tag: feliCaTag)
callback.felicaConnected(unifiedNfcApi: nfcApi, tag: feliCaTag)
}
// self.sendFelicaCommand(tag: feliCaTag, session: sessionEx!)
@ -88,7 +91,11 @@ public class ApduRunner: NSObject, NFCTagReaderSessionDelegate {
func exchangeApdu(apduCommand: NFCISO7816APDU, completionHandler: @escaping CompletionHandler) {
if case let NFCTag.iso7816(nfcTag) = self.sessionEx!.connectedTag! {
guard let connectedTag = self.sessionEx?.connectedTag else {
debugLog("No connected NFC tag available")
return
}
if case let NFCTag.iso7816(nfcTag) = connectedTag {
nfcTag.sendCommand(apdu: apduCommand) { (response: Data, sw1: UInt8, sw2: UInt8, error: Error?)
in
let resp = ApduResponse()