Deprecation warning

Please note that this is outdated documentation for an older release of the Scandit Barcode Scanner SDK.

We encourage you to migrate to 6.x and take advantage of our latest / advanced features and improved performance.

You'll find the updated documentation at: Data Capture SDK Documentation for iOS

Integrate the Scandit Barcode Scanner into your app

Integrate the Scandit Barcode Scanner into your own app by following these 6 steps:

Download the Scandit Barcode Scanner library

Choose a plan (e.g., free “Test” or "Community" plan) at http://www.scandit.com/pricing, activate your account and log in. Go to the Download section and download the Barcode Scanner for iOS.

Framework Download

Add other required frameworks to your Xcode project

The Scandit Barcode Scanner needs multiple frameworks that might not be part of your Xcode project yet. Add all the frameworks and libraries that are listed:

  • libc++.tbd
  • libiconv.tbd
  • libz.tbd
  • CoreText.framework
  • OpenGLES.framework
  • MessageUI.framework
  • CoreVideo.framework
  • UIKIT.framework
  • Foundation.framework
  • CoreGraphics.framework
  • AudioToolbox.framework
  • AVFoundation.framework
  • CoreMedia.framework
  • QuartzCode.framework
  • SystenConfiguration.framework
  • MediaPlayer.framework

Add the scanner framework to your project

Unpack the downloaded ZIP file and open the folder named ScanditSDK, it contains the ScanditBarcodeScanner framework. Drag and drop the framework into your Xcode project. Make sure to select "Copy items if needed" to copy the framework into your project's folder.

Frameworks to be added


The framework contains resources that you have to link to in the project. For this right click on the ScanditBarcodeScanner framework inside your project and select "Show in Finder". Go to ScanditBarcodeScanner.framework/Resources and drag and drop ScanditBarcodeScanner.bundle into your Xcode project. In the end it should look the following way:

Frameworks to be added

You can now import the framework's headers as follows:

#import <ScanditBarcodeScanner/ScanditBarcodeScanner.h>

Set the app key

Sign in to your account at http://account.scandit.com to look up your app key in the Download section.

App Key in your account

Set the app key in your AppDelegate's applicationDidFinishLaunching method the following way:

#import <ScanditBarcodeScanner/ScanditBarcodeScanner.h>
@implementation AppDelegate
- (void)applicationDidFinishLaunching:(UIApplication *)application {
// Provide the app key for your scandit license.
[SBSLicense setAppKey:@"--- ENTER YOUR SCANDIT APP KEY HERE ---"];
...
}

Add code to handle the scanning event

Implement the SBSScanDelegate protocol to handle the successful barcode decoding. The API reference of the SBSScanDelegate protocol provides more details about what is returned.

Careful: The SBSScanDelegate method is invoked on a picker-internal queue. To perform any UI work, you must dispatch to the main UI thread.

#import <ScanditBarcodeScanner/ScanditBarcodeScanner.h>
interface YourViewController () <SBSScanDelegate> {
...
- (void)barcodePicker:(SBSBarcodePicker *)picker didScan:(SBSScanSession *)session {
NSArray *recognized = session.newlyRecognizedCodes;
SBSCode *code = [recognized firstObject];
// Add your own code to handle the barcode result e.g.
NSLog(@"scanned %@ barcode: %@", code.symbologyName, code.data);
}

If you are displaying the SBSBarcodePicker modally and want to use the scanner's toolbar to cancel and return you will also need to implement the SBSOverlayControllerDidCancelDelegate.

#import <ScanditBarcodeScanner/ScanditBarcodeScanner.h>
interface YourViewController () <SBSScanDelegate, SBSOverlayControllerDidCancelDelegate>
...
- (void)overlayController:(SBSOverlayController *)overlayController
didCancelWithStatus:(NSDictionary *)status {
// Add your own code to handle the user canceling the barcode scan process
}

Add code to start the scanning process

The scanning process is started by instantiating SBSBarcodePicker, specifying the delegate that will receive the scan callback event and then starting the scanner.

#import <ScanditBarcodeScanner/ScanditBarcodeScanner.h>
...
// Configure the barcode picker through a scan settings instance by defining which
// symbologies should be enabled.
SBSScanSettings *scanSettings = [SBSScanSettings defaultSettings];
// prefer backward facing camera over front-facing cameras.
// Enable symbologies that you want to scan
[scanSettings setSymbology:SBSSymbologyEAN13 enabled:YES];
[scanSettings setSymbology:SBSSymbologyUPC12 enabled:YES];
[scanSettings setSymbology:SBSSymbologyQR enabled:YES];
SBSBarcodePicker *picker = [[SBSBarcodePicker alloc] initWithSettings:scanSettings];
// Set the delegate to receive scan events.
picker.scanDelegate = self;
// Start the scanning process.
[picker startScanning];
// Show the scanner. The easiest way to do so is by presenting it modally.
[self presentViewController:picker animated:YES completion:nil];

Next steps