カメラを使用するのではなく、カードの写真を見るように Microblink カード リーダーに指示しています。Mastercard のポートレート バージョンとランドスケープ バージョンの両方を試しました。これは、主な変数を宣言する方法です。
let blinkCardRecognizer = MBCBlinkCardRecognizer()
var recognizerList = [MBCRecognizer]()
lazy var recognizerCollection: MBCRecognizerCollection = {
blinkCardRecognizer.extractCvv = false
blinkCardRecognizer.extractIban = false
blinkCardRecognizer.extractExpiryDate = false
recognizerList.append(blinkCardRecognizer)
return MBCRecognizerCollection(recognizers: recognizerList)
}()
lazy var recognizerRunner: MBCRecognizerRunner = {
MBCRecognizerRunner(recognizerCollection: recognizerCollection)
}()
次の 2 つのデリゲートを宣言しました。
MBCBlinkCardOverlayViewControllerDelegate, MBCScanningRecognizerRunnerDelegate
UIImage を取得したら、次の関数を呼び出します。
func prepareToReadImage(_ theImage: UIImage?) {
recognizerRunner.scanningRecognizerRunnerDelegate = self
var image: MBCImage? = nil
if let anImage = theImage {
image = MBCImage(uiImage: anImage)
}
image?.cameraFrame = true
image?.orientation = MBCProcessingOrientation.down
let _serialQueue = DispatchQueue(label: "com.microblink.DirectAPI-sample-swift")
_serialQueue.async(execute: {() -> Void in
self.recognizerRunner.processImage(image!)
})
}
これが私のデリゲート コールバックです。毎回、次のステータスを取得しています.empty
:
func recognizerRunner(_ recognizerRunner: MBCRecognizerRunner, didFinishScanningWith state: MBCRecognizerResultState) {
if state == .valid { // values: .empty, .uncertain, .valid, .stageValid
let result = blinkCardRecognizer.result
DispatchQueue.main.async(execute: {() -> Void in
print (result.owner)
print (result.cardNumber)
print (result.cardNumberPrefix)
})
}
}
.valid
返信が来ない理由は何かありますか? また、これはカードの詳細を引き出す正しい方法のように見えますか? ありがとう!