SBSDKUIWorkflowStep WithResults(SBSDKUIWorkflowStep step, SBSDKUIWorkflowStepResult[] results)
        {
            if (results.Length >= 2)
            {
                return(null);
            }

            if (results.Length >= 1 && results[0].CapturedPage != null)
            {
                return(WorkflowFactory.QrCodeStep());
            }
            else
            {
                return(WorkflowFactory.DocumentStep());
            }
        }
Example #2
0
        static SBSDKUIWorkflow UkrainianPassport()
        {
            SBSDKUIWorkflowStep frontSide = new SBSDKUIWorkflowStep(
                "Ukrainian passport 1/1",
                "Please scan the front of your id card.",
                null,
                true,
                false,
                null,
                (result) =>
            {
                SBSDKMachineReadableZoneRecognizer recognizer = new SBSDKMachineReadableZoneRecognizer();
                SBSDKMachineReadableZoneRecognizerResult mrz  = recognizer.RecognizePersonalIdentityFromImage(result.CapturedPage.DocumentImage);

                if (mrz == null || !mrz.RecognitionSuccessfull)
                {
                    return(WorkflowError.ErrorWithCode(2, new NSString("This does not seem to be the correct page.")));
                }

                if (mrz.DocumentType != SBSDKMachineReadableZoneRecognizerResultDocumentType.Passport)
                {
                    return(WorkflowError.ErrorWithCode(3, new NSString("This does not seem to be a passport.")));
                }

                if (mrz.DocumentCodeField.Value.Length != 8 || !(mrz.IssuingStateOrOrganizationField.Value != "UKR"))
                {
                    return(WorkflowError.ErrorWithCode(4, new NSString("This does not seem to be a ukrainian passport.")));
                }

                return(null);
            }
                );


            SBSDKUIWorkflow workflow = new SBSDKUIWorkflow(new SBSDKUIWorkflowStep[] { frontSide }, "Ukrainian passport", null);

            return(workflow);
        }
Example #3
0
        private void OnDataButtonClick(object sender, EventArgs e)
        {
            if (!SBSDK.IsLicenseValid())
            {
                ContentView.LayoutSubviews();
                return;
            }

            var button = (ScannerButton)sender;

            if (button.Data.Code == ListItemCode.ScannerMRZ)
            {
                var config = SBSDKUIMachineCodeScannerConfiguration.DefaultConfiguration;
                config.TextConfiguration.CancelButtonTitle = "Done";
                //config.TextConfiguration.FinderTextHint = "Custom finder text ..."
                // see further customization configs

                var viewSize    = View.Frame.Size;
                var targetWidth = viewSize.Width - ((viewSize.Width * 0.058) * 2);
                var aspect      = new SBSDKAspectRatio(targetWidth, targetWidth * 0.3);
                config.UiConfiguration.FinderAspectRatio = aspect;
                var controller = SBSDKUIMRZScannerViewController
                                 .CreateNewWithConfiguration(config, Delegates.MRZ);
                PresentViewController(controller, true, null);
            }
            else if (button.Data.Code == ListItemCode.WorkflowDC)
            {
                var ratios = new SBSDKAspectRatio[]
                {
                    // DC form A5 portrait (e.g. white sheet, AUB Muster 1b/E (1/2018))
                    new SBSDKAspectRatio(148.0, 210.0),
                    // DC form A6 landscape (e.g. yellow sheet, AUB Muster 1b (1.2018))
                    new SBSDKAspectRatio(148.0, 105.0)
                };

                var title = "Please align the DC form in the frame.";
                var name  = "DisabilityCertificateFlow";

                var steps = new SBSDKUIWorkflowStep[]
                {
                    new SBSDKUIScanDisabilityCertificateWorkflowStep(
                        title, "", ratios, true, WorkflowStepValidator.OnDCFormStep
                        )
                };

                PresentController(name, steps);
            }
            else if (button.Data.Code == ListItemCode.WorkflowMRZImage)
            {
                var title = "Please align the Machine readable card with the form in the frame";
                var name  = "MRZScanFlow";

                var steps = new SBSDKUIWorkflowStep[]
                {
                    new SBSDKUIScanMachineReadableZoneWorkflowStep(
                        title, "", MRZRatios, true, WorkflowStepValidator.OnIDCardBackStep
                        )
                };

                PresentController(name, steps);
            }
            else if (button.Data.Code == ListItemCode.WorkflowMRZFrontBack)
            {
                var name = "MRZBackFrontScanFlow";

                var steps = new SBSDKUIWorkflowStep[]
                {
                    new SBSDKUIWorkflowStep(
                        "Step 1/2", "Please scan the front side of your ID card",
                        MRZRatios, true, false, null, WorkflowStepValidator.OnIDCardFrontStep
                        ),
                    new SBSDKUIScanMachineReadableZoneWorkflowStep(
                        "Step 2/2", "Please scan the back side of your ID card",
                        MRZRatios, true, WorkflowStepValidator.OnIDCardBackStep
                        )
                };

                PresentController(name, steps);
            }
            else if (button.Data.Code == ListItemCode.WorkflowSEPA)
            {
                var name  = "SEPAScanFlow";
                var steps = new SBSDKUIWorkflowStep[]
                {
                    new SBSDKUIScanPayFormWorkflowStep(
                        "Please scan a SEPA PayForm", "", false, WorkflowStepValidator.OnPayFormStep
                        )
                };

                PresentController(name, steps);
            }
            else if (button.Data.Code == ListItemCode.WorkflowQR)
            {
                var name  = "QRCodeScanFlow";
                var types = SBSDKUIMachineCodesCollection.TwoDimensionalBarcodes;
                var steps = new SBSDKUIWorkflowStep[]
                {
                    new SBSDKUIScanBarCodeWorkflowStep("Scan your QR code", "",
                                                       types, new SBSDKAspectRatio(1, 1), WorkflowStepValidator.OnBarCodeStep)
                };

                PresentController(name, steps);
            }
            else if (button.Data.Code == ListItemCode.ScannerEHIC)
            {
                var configuration = SBSDKUIHealthInsuranceCardScannerConfiguration.DefaultConfiguration;
                var controller    = SBSDKUIHealthInsuranceCardScannerViewController
                                    .CreateNewWithConfiguration(configuration, Delegates.EHIC);

                controller.ModalPresentationStyle = UIModalPresentationStyle.FullScreen;
                PresentViewController(controller, false, null);
            }
            else if (button.Data.Code == ListItemCode.ScannerBarcode)
            {
                var configuration = SBSDKUIMachineCodeScannerConfiguration.DefaultConfiguration;
                var controller    = SBSDKUIBarcodeScannerViewController
                                    .CreateNewWithAcceptedMachineCodeTypes(
                    SBSDKBarcodeType.AllTypes, configuration, Delegates.Barcode);
                controller.ModalPresentationStyle = UIModalPresentationStyle.FullScreen;
                PresentViewController(controller, false, null);
            }
        }
 void WorkflowScanViewControllerDidFail(SBSDKUIWorkflowScannerViewController viewController, SBSDKUIWorkflowStep step, SBSDKUIWorkflowStepResult result)
 {
     this.ShowMessage("Step validation failed", result.ValidationError.LocalizedDescription, viewController);
 }