@@ -22,19 +22,19 @@ @implementation IdscanSdk
2222 self.scannerPDFKey = apiKeys[@" iosDetectorPDFLicenseKey" ];
2323 self.scannerMRZKey = apiKeys[@" iosDetectorMRZLicenseKey" ];
2424 self.parserKey = apiKeys[@" iosParserPDFLicenseKey" ];
25-
25+
2626 // Store camera and parser keys
2727 [[NSUserDefaults standardUserDefaults ] setValue: type forKey: @" scannerType" ];
2828 [[NSUserDefaults standardUserDefaults ] setValue: self .scannerPDFKey forKey: @" scannerPDFKey" ];
2929 [[NSUserDefaults standardUserDefaults ] setValue: self .scannerMRZKey forKey: @" scannerMRZKey" ];
3030 [[NSUserDefaults standardUserDefaults ] setValue: self .parserKey forKey: @" parserKey" ];
3131 [[NSUserDefaults standardUserDefaults ] synchronize ];
32-
32+
3333 dispatch_async (dispatch_get_main_queue (), ^(void ) {
3434 ScannerViewController* scannerViewController = [[ScannerViewController alloc ] init ];
3535 scannerViewController.delegate = self;
3636 NSLog (@" IDScanner: Starting camera scanner..." );
37-
37+
3838 UIViewController *rootViewController = [[[UIApplication sharedApplication ] keyWindow ] rootViewController ];
3939 [rootViewController presentViewController: scannerViewController animated: YES completion: nil ];
4040 });
@@ -43,34 +43,41 @@ @implementation IdscanSdk
4343- (void )returnScanResult : (ScannerViewController *)controller scanResult : (NSString *)result {
4444 NSLog (@" IDScanner: Raw scan result: %@ " , result);
4545 NSMutableDictionary *formattedData = [NSMutableDictionary dictionary ];
46-
46+
4747 if (result != nil ) {
4848 // activate parser
4949 IDScanPDFParser *pdfParser = [IDScanPDFParser parserWithActivationKey: self .parserKey];
5050 IDScanMRZParser *mrzParser = [[IDScanMRZParser alloc ] init ];
51-
51+
5252 NSDictionary <NSString *, NSString *> *parsedData;
5353 if ([self .scannerType isEqualToString: @" pdf" ]) {
5454 parsedData = [pdfParser parse: result];
5555 } else if ([self .scannerType isEqualToString: @" mrz" ]) {
5656 parsedData = [mrzParser parse: result];
57+ } else {
58+ // Due to IDScan corrupting our input during PDF Parser, we must copy into another var.
59+ NSString *copiedResult = [NSString stringWithFormat: @" %@ " , result];
60+ parsedData = [pdfParser parse: copiedResult];
61+ if (parsedData == nil ) {
62+ parsedData = [mrzParser parse: result];
63+ }
5764 }
58-
65+
5966 if (parsedData != nil ) {
6067 [formattedData setObject: @(true ) forKey: @" success" ];
6168 [formattedData setObject: parsedData forKey: @" data" ];
62-
69+
6370 self.scannerCallback (@[[NSNull null ], formattedData]);
6471 } else {
6572 [formattedData setObject: @(false ) forKey: @" success" ];
6673 [formattedData setObject: [NSNull null ] forKey: @" data" ];
67-
74+
6875 self.scannerCallback (@[@" Invalid Drivers License" , formattedData]);
6976 }
7077 } else {
7178 [formattedData setObject: @(false ) forKey: @" success" ];
7279 [formattedData setObject: [NSNull null ] forKey: @" data" ];
73-
80+
7481 self.scannerCallback (@[[NSNull null ], formattedData]);
7582 }
7683}
0 commit comments