54 Core Implementation NEO2: Swift
appendMessageToLog("Encoded Track 2: " + (cardData.encTrack2 == nil ? "N/A" : cardData.encTrack2.
hexEncodedString()))
appendMessageToLog("Encoded Track 3: " + (cardData.encTrack3 == nil ? "N/A" : cardData.encTrack3.
hexEncodedString()))
appendMessageToLog("Hash Track 1: " + (cardData.hashTrack1 == nil ? "N/A" : cardData.hashTrack1.
hexEncodedString()))
appendMessageToLog("Hash Track 2: " + (cardData.hashTrack2 == nil ? "N/A" : cardData.hashTrack2.
hexEncodedString()))
appendMessageToLog("Hash Track 3: " + (cardData.hashTrack3 == nil ? "N/A" : cardData.hashTrack3.
hexEncodedString()))
appendMessageToLog("KSN: " + (cardData.ksn == nil ? "N/A" : cardData.ksn.hexEncodedString()))
appendMessageToLog("\nSessionID: " + (cardData.sessionID == nil ? "N/A" : cardData.sessionID.
hexEncodedString()))
appendMessageToLog("\nReader Serial Number: " + (cardData.rsn == nil ? "N/A" : cardData.rsn))
appendMessageToLog("\nRead Status: " + String(describing: cardData.readStatus))
if cardData.unencryptedTags != nil {
appendMessageToLog("Unencrypted Tags: " + String(describing: cardData.unencryptedTags))
}
if cardData.encryptedTags != nil {
appendMessageToLog("Encrypted Tags: " + String(describing: cardData.encryptedTags))
}
if cardData.maskedTags != nil {
appendMessageToLog("Masked Tags: " + String(describing: cardData.maskedTags))
}
NSLog("Track 1: " + (cardData.track1 == nil ? "N/A" : cardData.track1))
NSLog("Track 2: " + (cardData.track2 == nil ? "N/A" : cardData.track2))
NSLog("Track 3: " + (cardData.track3 == nil ? "N/A" : cardData.track3))
NSLog("Encoded Track 1: " + (cardData.encTrack1 == nil ? "N/A" : cardData.encTrack1.
hexEncodedString()))
NSLog("Encoded Track 2: " + (cardData.encTrack2 == nil ? "N/A" : cardData.encTrack2.
hexEncodedString()))
NSLog("Encoded Track 3: " + (cardData.encTrack3 == nil ? "N/A" : cardData.encTrack3.
hexEncodedString()))
NSLog("Hash Track 1: " + (cardData.hashTrack1 == nil ? "N/A" : cardData.hashTrack1.hexEncodedString
()))
NSLog("Hash Track 2: " + (cardData.hashTrack2 == nil ? "N/A" : cardData.hashTrack2.hexEncodedString
()))
NSLog("Hash Track 3: " + (cardData.hashTrack3 == nil ? "N/A" : cardData.hashTrack3.hexEncodedString
()))
NSLog("SessionID: " + (cardData.sessionID == nil ? "N/A" : cardData.sessionID.hexEncodedString()))
NSLog("nReader Serial Number: " + (cardData.rsn == nil ? "N/A" : cardData.rsn))
NSLog("Read Status: " + String(describing: cardData.readStatus))
NSLog("KSN: " + (cardData.ksn == nil ? "N/A" : cardData.ksn.hexEncodedString()))
case EVENT_MSR_CANCEL_KEY:
appendMessageToLog("(Event) MSR Cancel Key received: " + cardData.encTrack1.hexEncodedString())
case EVENT_MSR_BACKSPACE_KEY:
appendMessageToLog("(Event) MSR Backspack Key received: " + cardData.encTrack1.hexEncodedString())
case EVENT_MSR_ENTER_KEY:
appendMessageToLog("(Event) MSR Enter Key received: " + cardData.encTrack1.hexEncodedString())
case EVENT_MSR_UNKNOWN:
appendMessageToLog("(Event) MSR unknown event, data: " + cardData.encTrack1.hexEncodedString())
case EVENT_MSR_TIMEOUT:
appendMessageToLog("MSR Timeout")
default:
break
}
}
• Implement protocol delegate emvTransactionData:() to report EMV transaction results. Reference: Imple-
ment Optional Delegate Protocols
func emvTransactionData(_ emvData: IDTEMVData!, errorCode error: Int32) {
NSLog("EMV_RESULT_CODE_V2_response = " + String(describing: error))
appendMessageToLog("EMV transaction data response: " + IDT_NEO2.
sharedController().device_getResponseCodeString(error))
if emvData == nil {
appendMessageToLog("EMV TRANSACTION ERROR. Refer to EMV_RESULT_CODE_V2_response = " + error.
#80152504-001 IDTech iOS SDK Guide for NEO2