Skip to content

Commit 155660c

Browse files
authored
fix: ensure we fallback in combined mode on iOS (#67)
- includes patch for IDScan corrupting input
1 parent 9d419d3 commit 155660c

File tree

1 file changed

+16
-9
lines changed

1 file changed

+16
-9
lines changed

ios/IdscanSdk.m

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)