@@ -15,6 +15,7 @@ import CoreNFC
1515
1616@available ( iOS 15 , * )
1717public class PassportReader : NSObject {
18+ private var labels : NSDictionary ? = nil
1819 private var pendingPassportModel : NFCPassportModel ? = nil
1920 private typealias NFCCheckedContinuation = CheckedContinuation < NFCPassportModel , Error >
2021 private var nfcContinuation : NFCCheckedContinuation ?
@@ -64,8 +65,8 @@ public class PassportReader : NSObject {
6465 dataAmountToReadOverride = amount
6566 }
6667
67- public func readPassport( mrzKey : String , tags : [ DataGroupId ] = [ ] , skipSecureElements : Bool = true , skipCA : Bool = false , skipPACE : Bool = false , useExtendedMode : Bool = false , customDisplayMessage : ( ( NFCViewDisplayMessage ) -> String ? ) ? = nil ) async throws -> NFCPassportModel {
68-
68+ public func readPassport( mrzKey : String , tags : [ DataGroupId ] = [ ] , skipSecureElements : Bool = true , skipCA : Bool = false , skipPACE : Bool = false , useExtendedMode : Bool = false , customDisplayMessage : ( ( NFCViewDisplayMessage ) -> String ? ) ? = nil , labels : NSDictionary ? ) async throws -> NFCPassportModel {
69+ self . labels = labels
6970 self . passport = NFCPassportModel ( )
7071 self . mrzKey = mrzKey
7172 self . skipCA = skipCA
@@ -98,7 +99,7 @@ public class PassportReader : NSObject {
9899 if NFCTagReaderSession . readingAvailable {
99100 readerSession = NFCTagReaderSession ( pollingOption: [ . iso14443] , delegate: self , queue: nil )
100101
101- self . updateReaderSessionMessage ( alertMessage: NFCViewDisplayMessage . requestPresentPassport )
102+ self . updateReaderSessionMessage ( alertMessage: NFCViewDisplayMessage . requestPresentPassport ( labels ? [ " requestPresentPassport " ] as? String ) )
102103 readerSession? . begin ( )
103104 }
104105
@@ -171,8 +172,8 @@ extension PassportReader : NFCTagReaderSessionDelegate {
171172 if tags. count > 1 {
172173 Logger . passportReader. debug ( " tagReaderSession:more than 1 tag detected! - \( tags) " )
173174
174- let errorMessage = NFCViewDisplayMessage . error ( . MoreThanOneTagFound)
175- self . invalidateSession ( errorMessage: errorMessage, error: NFCPassportReaderError . MoreThanOneTagFound)
175+ let errorMessage = NFCViewDisplayMessage . error ( NFCPassportReaderError . MoreThanOneTagFound ( self . labels ? [ " moreThanOneTagFound " ] as? String ) )
176+ self . invalidateSession ( errorMessage: errorMessage, error: NFCPassportReaderError . MoreThanOneTagFound ( self . labels ? [ " moreThanOneTagFound " ] as? String ) )
176177 return
177178 }
178179
@@ -183,9 +184,8 @@ extension PassportReader : NFCTagReaderSessionDelegate {
183184 passportTag = tag
184185 default :
185186 Logger . passportReader. debug ( " tagReaderSession:invalid tag detected!!! " )
186-
187- let errorMessage = NFCViewDisplayMessage . error ( NFCPassportReaderError . TagNotValid)
188- self . invalidateSession ( errorMessage: errorMessage, error: NFCPassportReaderError . TagNotValid)
187+ let errorMessage = NFCViewDisplayMessage . error ( NFCPassportReaderError . TagNotValid ( self . labels ? [ " tagNotValid " ] as? String ) )
188+ self . invalidateSession ( errorMessage: errorMessage, error: NFCPassportReaderError . TagNotValid ( self . labels ? [ " tagNotValid " ] as? String ) )
189189 return
190190 }
191191
@@ -194,7 +194,7 @@ extension PassportReader : NFCTagReaderSessionDelegate {
194194 try await session. connect ( to: tag)
195195
196196 Logger . passportReader. debug ( " tagReaderSession:connected to tag - starting authentication " )
197- self . updateReaderSessionMessage ( alertMessage: NFCViewDisplayMessage . authenticatingWithPassport ( 0 ) )
197+ self . updateReaderSessionMessage ( alertMessage: NFCViewDisplayMessage . authenticatingWithPassport ( 0 , self . labels ? [ " authenticatingWithPassport " ] as? String ) )
198198
199199 let tagReader = TagReader ( tag: passportTag)
200200
@@ -204,20 +204,20 @@ extension PassportReader : NFCTagReaderSessionDelegate {
204204
205205 tagReader. progress = { [ unowned self] ( progress) in
206206 if let dgId = self . currentlyReadingDataGroup {
207- self . updateReaderSessionMessage ( alertMessage: NFCViewDisplayMessage . readingDataGroupProgress ( dgId, progress) )
207+ self . updateReaderSessionMessage ( alertMessage: NFCViewDisplayMessage . readingDataGroupProgress ( dgId, progress, self . labels ? [ " reading " ] as? String ) )
208208 } else {
209- self . updateReaderSessionMessage ( alertMessage: NFCViewDisplayMessage . authenticatingWithPassport ( progress) )
209+ self . updateReaderSessionMessage ( alertMessage: NFCViewDisplayMessage . authenticatingWithPassport ( progress, self . labels ? [ " reading " ] as? String ) )
210210 }
211211 }
212212
213213 try await self . startReading ( tagReader : tagReader)
214214
215215 } catch let error as NFCPassportReaderError {
216- let errorMessage = NFCViewDisplayMessage . error ( error)
216+ let errorMessage = NFCViewDisplayMessage . error ( error, self . labels ? [ " error " ] as? String )
217217 self . invalidateSession ( errorMessage: errorMessage, error: error)
218218 } catch let error {
219219 Logger . passportReader. debug ( " tagReaderSession:failed to connect to tag - \( error. localizedDescription) " )
220- let errorMessage = NFCViewDisplayMessage . error ( NFCPassportReaderError . ConnectionError)
220+ let errorMessage = NFCViewDisplayMessage . error ( NFCPassportReaderError . ConnectionError ( self . labels ? [ " error " ] as? String ) )
221221 self . invalidateSession ( errorMessage: errorMessage, error: NFCPassportReaderError . Unknown ( error) )
222222 }
223223 }
@@ -264,7 +264,7 @@ extension PassportReader {
264264
265265 try await doActiveAuthenticationIfNeccessary ( tagReader : tagReader)
266266
267- self . updateReaderSessionMessage ( alertMessage: NFCViewDisplayMessage . successfulRead)
267+ self . updateReaderSessionMessage ( alertMessage: NFCViewDisplayMessage . successfulRead ( self . labels ? [ " successfulRead " ] as? String ) )
268268 self . shouldNotReportNextReaderSessionInvalidationErrorUserCanceled = true
269269 self . readerSession? . invalidate ( )
270270
@@ -279,7 +279,7 @@ extension PassportReader {
279279 guard self . passport. activeAuthenticationSupported else {
280280 return
281281 }
282- self . updateReaderSessionMessage ( alertMessage: NFCViewDisplayMessage . activeAuthentication)
282+ self . updateReaderSessionMessage ( alertMessage: NFCViewDisplayMessage . activeAuthentication ( self . labels ? [ " activeAuthentication " ] as? String ) )
283283
284284 Logger . passportReader. info ( " Performing Active Authentication " )
285285
@@ -309,7 +309,7 @@ extension PassportReader {
309309 // Read COM
310310 var DGsToRead = [ DataGroupId] ( )
311311
312- self . updateReaderSessionMessage ( alertMessage: NFCViewDisplayMessage . readingDataGroupProgress ( . COM, 0 ) )
312+ self . updateReaderSessionMessage ( alertMessage: NFCViewDisplayMessage . readingDataGroupProgress ( . COM, 0 , self . labels ? [ " reading " ] as? String ) )
313313 if let com = try await readDataGroup ( tagReader: tagReader, dgId: . COM) as? COM {
314314 self . passport. addDataGroup ( . COM, dataGroup: com )
315315
@@ -353,7 +353,7 @@ extension PassportReader {
353353 DGsToRead = DGsToRead . filter { dataGroupsToRead. contains ( $0) }
354354 }
355355 for dgId in DGsToRead {
356- self . updateReaderSessionMessage ( alertMessage: NFCViewDisplayMessage . readingDataGroupProgress ( dgId, 0 ) )
356+ self . updateReaderSessionMessage ( alertMessage: NFCViewDisplayMessage . readingDataGroupProgress ( dgId, 0 , self . labels ? [ " reading " ] as? String ) )
357357 if let dg = try await readDataGroup ( tagReader: tagReader, dgId: dgId) {
358358 self . passport. addDataGroup ( dgId, dataGroup: dg )
359359 }
@@ -367,7 +367,7 @@ extension PassportReader {
367367 var readAttempts = 0
368368 var nfcPassportReaderError : NFCPassportReaderError
369369
370- self . updateReaderSessionMessage ( alertMessage: NFCViewDisplayMessage . readingDataGroupProgress ( dgId, 0 ) )
370+ self . updateReaderSessionMessage ( alertMessage: NFCViewDisplayMessage . readingDataGroupProgress ( dgId, 0 , self . labels ? [ " reading " ] as? String ) )
371371
372372 repeat {
373373 do {
0 commit comments