As of this version, BlinkInput SDK is fully compatible with other Microblink SDKs, which means that you can use it with other Microblink SDKs in the same application.
- We have full support for Apple Silicon!
- We are updating our Cocoapods with
.xcframework
format from now on. Please download Cocoapods 1.10.0 or newer to use our SDK.
- To ensure compatibilty with other Microblink SDKs, we have reprefixed all classes. All classes have
MBI
prefix instead ofMB
- We have renamed framework from
Microblink
toBlinkInput
- We added error callback when setting license keys on
MBIMicroblinkSDK
- You will be getting error callback and reason why you could not unlock SDK - see
MBILicenseError
- You will be getting error callback and reason why you could not unlock SDK - see
- We moved all resources inside framework, we are not shipping bundle anymore.
- We renamed
MBRecogitionMode
toMBIRecognitionDebugMode
inMBIRecognizerCollection
. - Swift:
- We renamed all
sharedInstance
toshared
- All enums are now
Int
- All
unsigned integers
are nowInt
- We renamed all
- We've replaced
Using time-limited license!
warning withUsing trial license!
warning. The warning message is displayed when using a trial license key. - We've deprecated
MBDetectorRecognizer
— useMBIDocumentCaptureRecognizer
instead. - We've deprecated
MBPdf417Recognizer
— useMBIBarcodeRecognizer
instead.
- no changes
- methods
pauseScanning
andresumeScanningAndResetState
inMBRecognizerRunnerViewController
do not return anymore BOOL- use
isScanningPaused
to check if scanning is paused
- use
- Swift Module has been renamed from
MicroBlink
toMicroblink
-
renamed MicroBlink.framework to Microblink.framework
-
renamed MicroBlink.bundle to Microblink.bundle
-
isScanningUnsupportedForCameraType:
is now class method ofMBMicroblinkSDK
-
Since Microblink.framework is a dynamic framework, you also need to add it to embedded binaries section in General settings of your target.
-
Library size was reduced by removing all unnecessary components. One of the components removed was internal libz library. You now need to add libz.tbd into "Linked frameworks and binaries" setting.
-
Microblink.framework is a dynamic framework which contains slices for all architectures - device and simulator. If you intend to extract .ipa file for ad hoc distribution, you'll need to preprocess the framework to remove simulator architectures.
Ideal solution is to add a build phase after embed frameworks build phase, which strips unused slices from embedded frameworks.
Build step is based on the one provided here: http://ikennd.ac/blog/2015/02/stripping-unwanted-architectures-from-dynamic-libraries-in-xcode/
APP_PATH="${TARGET_BUILD_DIR}/${WRAPPER_NAME}"
# This script loops through the frameworks embedded in the application and
# removes unused architectures.
find "$APP_PATH" -name '*.framework' -type d | while read -r FRAMEWORK
do
FRAMEWORK_EXECUTABLE_NAME=$(defaults read "$FRAMEWORK/Info.plist" CFBundleExecutable)
FRAMEWORK_EXECUTABLE_PATH="$FRAMEWORK/$FRAMEWORK_EXECUTABLE_NAME"
echo "Executable is $FRAMEWORK_EXECUTABLE_PATH"
EXTRACTED_ARCHS=()
for ARCH in $ARCHS
do
echo "Extracting $ARCH from $FRAMEWORK_EXECUTABLE_NAME"
lipo -extract "$ARCH" "$FRAMEWORK_EXECUTABLE_PATH" -o "$FRAMEWORK_EXECUTABLE_PATH-$ARCH"
EXTRACTED_ARCHS+=("$FRAMEWORK_EXECUTABLE_PATH-$ARCH")
done
echo "Merging extracted architectures: ${ARCHS}"
lipo -o "$FRAMEWORK_EXECUTABLE_PATH-merged" -create "${EXTRACTED_ARCHS[@]}"
rm "${EXTRACTED_ARCHS[@]}"
echo "Replacing original executable with thinned version"
rm "$FRAMEWORK_EXECUTABLE_PATH"
mv "$FRAMEWORK_EXECUTABLE_PATH-merged" "$FRAMEWORK_EXECUTABLE_PATH"
done
PPBlinkOcrRecognizerResult
andPPBlinkOcrRecognizerSettings
are now deprecated. UsePPDetectorRecognizerResult
andPPDetectorRecognizerSettings
for templating orPPBlinkInputRecognizerResult
andPPBlinkInputRecognizerSettings
for segment scanPPBarDecoderRecognizerResult
andPPBarDecoderRecognizerSettings
are now deprecated. UsePPBarcodeRecognizerResult
andPPBarcodeRecognizerSettings
PPZXingRecognizerResult
andPPZXingRecognizerSettings
are now deprecated. UsePPBarcodeRecognizerResult
andPPBarcodeRecognizerSettings
- deprecated
PPHelpDisplayMode
. It still works, but ideally, you should replace it with a custom logic for presenting help inside the application using the SDK - simplified
PPOcrLayout
class (removed properties which were not used). If you used it previously, simply remove that code because it does not provide any value - although
PPDateOcrParser
now returnsPPDateResult
object (which contains bothNSDate
and originalNSString
from which date was parsed), when obtaining parser result viaparserResultForName:
orparserResultForName:parserGroup:
methods, you will be provided with string just like in previous versions. If you wantNSDate
, you should use methodsspecificParsedResultForName:
orspecificParsedResultForName:parserGroup:
and castNSObject
they return intoNSDate
- all recognizer results (classes that derive
PPRecognizerResult
) now have annotated nullability for their getters. Some of them used to assume non-null, while still returningnil
sometimes. This has now been corrected and all getters are_Nullable
- No changes
- No changes
- No changes
- Removed PPOcrEngineOptions property from PPRegexOcrParserFactory and PPRawOcrParserFactory. Replaced property with setter method.
PPCameraCoordinator
now assumes the role ofPPCoordinator
. If you do not use your own camera management or Direct API you can rename all instances ofPPCoordinator
toPPCameraCoordinator
PPCoordinator
methodcameraViewControllerWithDelegate:
has been removed. To createPPScanningViewControllers
you can now use[PPViewControllerFactory cameraViewControllerWithDelegate: coordinator: error:]
- Direct API is now located in
PPCoordinator
. To process image use 'processImage:' method and be sure to set 'PPCoordinatorDelegate' when creating 'PPCoordinator' to recieve scanning results and events. You can se processing image roi and processing orientation on 'PPImage' object. - Methods of 'PPOverlayContainerViewController' protocol should now be called after camera view has appeared.
-
Renamed
PPOcrRecognizerSettings
andPPOcrRecognizerResult
toPPBlinkOcrRecognizerSettings
andPPBlinkOcrRecognizerResult
respectively -
PPOverlayViewController changed the way Overlay Subviews are added to the view hierarchy. Instead of calling
addOverlaySubview:
(which automatically added a view to view hierarachy), you now need to callregisterOverlaySubview:
(which registers subview for scanning events), and manually add subview to view hierarchy usingaddSubview:
method. This change gives you more flexibility for adding views and managing autolayout and autoresizing masks. So, replace all calls to (assuming self is aPPOverlayViewController
instance) -
PPScanDelegate has been renamed to PPScanningDelegate
[self addOverlaySubview:subview];
with
[self registerOverlaySubview:subview];
[self.view addSubview:subview];
-
Remove the old .embeddedframework package completely from your project
-
Add new .framework and .bundle package to your project. Verify that Framework search path really contains a path to the .framework folder.
-
If necessary, add all required system frameworks and libraries:
- libc++.tbd
- libiconv.tbd
- AVFoundation.framework
- AudioToolbox.framework
- CoreMedia.framework
- AssetsLibrary.framework
- Accelerate.framework
-
If you use
PPMetadataSettings
objects,successfulScanFrame
property replace withsuccessfulFrame
currentVideoFrame
property replace withcurrentFrame
- No backwards incompatible changes.
- No backwards incompatible changes. See Release notes for a complete list of changes.
-
If you're using direct API, just delete all calls to
PPCoordinator initializeRecognizers
andPPCoordinator terminateRecognizers
. These calls are now performed internally -
PPApp
class is no longer a part of the API.
-
rotatedImage
property ofPPImageMetadata
no longer exists. Useimage
property instead, it correctly handles rotation. -
PPMetadataSettings
was cleaned up - use the alternative names provided listed in the header file.
- No changes
- No changes
-
This version uses a new license key format. If you had a license key generated prior to v0.9.3, contact us so we can regenerate the license key for you.
-
PPCoordinator
class now exposes fewer public methods and properties. -
PPScanningViewController
's methodsresumeScanning
andresumeScanningWithoutStateReset
merged into oneresumeScanningAndResetState:
.-
All calls to
resumeScanning
replace withresumeScanningAndResetState:YES
. -
All calls to
resumeScanningWithoutStateReset
replace withresumeScanningAndResetState:NO
-
-
Classes representing scanning results were renamed. Renaming was performed to match naming convention of
PPRecognizerSettings
hierarcy: now eachPPRecognizerSettings
class has it's matchingPPRecognizerResult
. Replace all existing references to old class names with the new ones:-
PPBaseResult
was renamed toPPRecognizerResult
. -
PPOcrScanResult
was renamed toPPOcrRecognizerResult
, this is the result of a recognizer whose settings are given withPPOcrRecognizerSettings.
-
-
PPOcrResult
(class representing a result of the OCR process, with individual characters, lines and blocks), was renamed toPPOcrLayout
. Name change was introduced to further distinguish the class fromPPRecognizerResult
classes. -
Remove all references to
updateScanningRegion
method since it's now being called automatically insetScanningRegion setter
.
-
Framework was renamed to MicroBlink.embeddedframework. Remove the existing .embeddedframwork package from your project, and drag&drop MicroBlink.embeddedframework in the project explored of your Xcode project.
-
If necessary, after the update, modify your framework search path so that it points to the MicroBlink.embeddedframework folder.
-
Main header of the framework was renamed to
<MicroBlink/Microblink.h>
. Change all references to previous header with the new one. -
method
[PPCoordinator isPhotoPaySupported]
was renamed to[PPCoordinator isScanningSupported]
. Change all occurances of the method name.