Skip to main content

License Handling | Flutter Document Scanner

License Key

In order to run the Scanbot SDK within your production app, you must purchase and use a valid Scanbot SDK license.

Each license key is valid only for a given app bundle identifier. You will be unable to use any of the SDK features if the license key is corrupted, expired, or invalid in any other way.

Getting a Trial License

The Scanbot SDK will run without a license for one minute per session! To get a free 7-day trial license, please submit the Trial License Form on our website.

Please kindly note that a trial license can only be used in a development and staging environment. You are not allowed to publish your app to the App Store, Play Store, or any 3rd party Android App Store with a trial license.

Purchase a Production License

To receive pricing information or purchase a production license for the Scanbot SDK, please request a quote.

License checks in production apps

Future<void> _initScanbotSdk() async {
// Consider adjusting this optional storageBaseDirectory - see the comments below.
final customStorageBaseDirectory = await getDemoStorageBaseDirectory();

final encryptionParams = _getEncryptionParams();

var config = ScanbotSdkConfig(
// Consider switching logging OFF in production builds for security and performance reasons.
loggingEnabled: true,
licenseKey: SCANBOT_SDK_LICENSE_KEY,
imageFormat: ImageFormat.JPG,
imageQuality: 80,
licenseErrorHandler: (status, feature, message) {
Logger.root.info('License status: $status, $feature, $message');
switch (status) {
case Status.StatusOkay:
case Status.StatusTrial:
// license is valid but feature you trying to access is not available for this
// license key, handle this problem and reinit sdk with new license key if needed
switch (feature) {
case SdkFeature.EdgeDetection:
break;
case SdkFeature.PDFCreation:
break;
// check for corresponding feature as needed
}
break;
case Status.StatusFailureNotSet:
case Status.StatusFailureCorrupted:
case Status.StatusFailureWrongOS:
case Status.StatusFailureAppIDMismatch:
case Status.StatusFailureExpired:
// license is completely invalid
}
},
storageBaseDirectory: customStorageBaseDirectory,
documentDetectorMode: DocumentDetectorMode.ML_BASED,
encryptionParameters: encryptionParams);
try {
await ScanbotSdk.initScanbotSdk(config);
} catch (e) {
Logger.root.severe(e);
}
}

Get license status manually:

var licenseInfo = await ScanbotSdk.getLicenseStatus();

licenseInfo - a new object of class SdkLicenseStatus that represents the license information.

licenseInfo.isLicenseValid - indicates whether the current license key is valid or not.

licenseInfo.status - an enum for the current license status:

  • StatusOkay - The license is valid and accepted.
  • StatusTrial - No license set yet. The SDK is in trial mode.
  • StatusFailureNotSet - No license set yet. The SDK's trial mode is over.
  • StatusFailureCorrupted - No license active. The set license was unreadable or has an invalid format.
  • StatusFailureWrongOS - No license active. The set license does not cover the current operating system.
  • StatusFailureAppIDMismatch - No license active. The set license does not cover the current app's bundle identifier.
  • StatusFailureExpired - No license active. The set license is valid but it has expired.

licenseInfo.expirationDate - returns Date of license key expiration or null if license is not valid.

Updating the license in production apps

The expiration date and the feature list of a license are contained in an encrypted data part of the license key string. This means a renewal or extension of a license will cause a new license key string to be generated.

To renew an expired license or extend a valid license with new Scanbot SDK features, you will have to deploy a new version of the app with updated license key.

Alternatively the new key may be dispatched via Firebase Remote Config or loaded from your Web API, but we do not provide the out-of-the box solution for that.

Want to scan longer than one minute?

Generate a free trial license to test the Scanbot SDK thoroughly.

Get your free Trial License

What do you think of this documentation?