Release Notes


  • Camera focus improvements in DMSDetectorViewController and DMSVideoCaptureReader for improving detection reliability.
    • The focus point of the active AVCaptureDevice now follows the center of the regionOfInterest property. This improves detection when DMSDK is constrained to an off center region.
    • For applications that need to manually manage the focusPointOfInterest of an AVCaptureDevice, the automaticallyAdjustFocusPoint property can be set to false.
    • Automatic adjustment of a focus point only affects capture devices that support autofocus, have autofocus enabled, and support setting of the focus point of interest. If the capture device does not support these capabilities, or has been set to a fixed focus mode, this functionality will not affect the capture device.
  • A overlayType property has been added to DMSDetectorViewController. Possible values are defined in DMSOverlayType.
    • The default value is the crosshairs overlay type. This overlay matches the crosshairs that DMSDetectorView has included by default.
    • A region overlay has been added that will emphasize the region of the screen coressponding to the current value of regionOfInterest,
    • Setting overlayType to DMSOverlayTypeNone will remove all overlays.
    • The crosshairsView property has been deprecated. Previously this property was used to customize the crosshairs view. Developers that want to provide their own overlays should set the overlay type to none, and then add their own subviews to DMSDetectorViewController. DMSDetectorViewController can also be subclassed and used within code, a Storyboard, or XIB.
  • Added feature to distinguish between Code 128 and GS1-128 symbols. When reading a GS1-128 barcode the Code128 representation value will begin with a FNC1 character. GS1-128 data is also accessible as GS1 AIs using the GS1List and GS1FormattedList representations as well as the GS1Attributes property of the DMSPayload class.
  • Now supports detection and resolving of Package ID data for recycling applications. This feature may be enabled with the existing EnablePlasticsReading reader option for applications that need to support recycling scenarios.
  • Included sample projects DMSDemo, DM Stock Take, and Drop-In View Controller have been updated with a deployment target of iOS 14.0.
  • Xcode 13.0 is now the minimum version required to use DMSDK.


  • Changes have been made to the information DMSDK reports to Digimarc.
    • A non-tracking installation identifier is now reported to Digimarc. This identifier is unique to a specific installation of DMSDK on a device, and is generated when the SDK is used for the first time.
    • For applications that are available on the App Store, changes may be required for the App Store submission and review process. Please see the “App Privacy Details” document for more information.
  • Added DMSReaderOptionImageReaderEnablePlasticsReading/ImageReaderEnablePlasticsReading to DMSReaderOptionKey/ReaderOptionKey. This option allows apps to read Digimarc Barcodes that are molded into plastic.
  • Detection support added for new versions of Digimarc Barcode.
  • Localized names are now available for symbologies
    • For Obj-C applications, DMSDK defines a C function named DMSLocalizedNameForSymbology
    • For Swift applications, a localizedName property has been added to values of the Symbology type.
    • English is the only current supported localization. In practice, Symbology names are generally consistent across languages.
  • SGTIN96 and GIAI representations available through the DMSPayload/Payload have been deprecated. These representations and the dictionary keys to access them will be removed in a future release.
  • Header fixes for Catalyst applications


  • Added a new Reader Option to set the minimum ITF variable code length. 10 digits is the default minimum ITF Variable code read and this new option allows down to a minimum of 8 digits. See the “DM Stock Take” sample app for an example on how to apply this new reader option. For more details, see the documentation for:
  • Stock Take sample app now has ITF (variable length) and Code128 enabled by default.
  • Stock Take now includes a README in its Xcode project.
  • DMSPayload now conforms to the NSSecureCoding protocol.
  • Fixed an issue where DMSImageReader would return codes read outside the rectOfInterest if one was set.
  • Fixed an issue where DMSDetectorViewController would stop returning read results after re-setting the symbologies and/or reader options.
  • Fixed a broken link in DM SDK’s “Moving to DM SDK 3” documentation.
  • Fixes for the rectOfInterest property in DMSDetectorViewController.


  • Major improvements for 1D barcode performance.
    • New near and far modes allow for reading up to 40 simultaneous UPC-A/EAN-13 barcodes.
    • Significant efficiency gains for better battery use.
  • Improved reading reliability for inverted QR codes.
  • New Stock Take sample app: This app demonstrates the use of the SDK’s 1D barcode reading features for inventory restocking scenarios. Stock Take reads multiple UPC/EAN and ITF-14 barcodes from far distances. Settings in the app allow you to switch between near, far, and full-range distances. It also includes an implementation for results smoothing for maintaining a smooth stream of read results. Refer to files PayloadPublisher.swift, Tracking.swift, and Smoothing.swift for more information.
  • Added the new DMSReaderOptionImageReader1DBarcodeReadDistance/ReaderOption.imageReader1DBarcodeReadDistance reader option key. This key can take DMSReadDistance bitmask values to configure the read distance the traditional 1D barcode detector should optimize for.
  • Added DMSReaderOptionDisableAnalytics/ReaderOption.disableAnalytics option for disabling data collection by DMSDK. This option does not affect data collection from the resolver. See our privacy documentation for more details.
  • DMSDetectorViewController/DetectorViewController now available for Mac Catalyst applications. Additional guidance on using DMSDK on the Mac platform will be coming in a future update. Providing this class for Mac Catalyst creates more consistency between the Mac Catalyst and iOS Apps on Apple Silicon environments.


  • “App Privacy Details” documentation has been added detailing how DMSDK handles user information, and provides guidance on how to disclose privacy details to Apple.
  • ARM64 binaries have been added for iPhone/iPad/Apple Watch/AppleTV simulators, and Mac and Mac Catalyst. These targets share the same optimizations for Apple Silicon that we’ve provided for iOS devices.
  • DMSDK no longer supports ARMv7 iOS devices
  • Minimum requirements for the iOS SDK has been changed from iOS 10.0 to iOS 11.0.
  • Fixes a Swift nullability issue with result metadata. DMSPayloadMetadata/PayloadMetadata is now correctly nullable/optional for -(nullable DMSPayloadMetadata *)metadataForPayload:(nonnull DMSPayload *)payload;. Refer to the documentation for more details.
  • Fixes a possible crash when rectOfInterest is set to an inconsistent value.


  • Improved detection of PDF417 barcodes
  • Fixed a crash that could occur with PDF417 barcode scanning enabled


  • Added support for PDF417 barcodes.
  • Fixed an issue where an image detectors software mode could not be enabled by setting the Metal device to nil.
  • Fixed several memory leaks when the image size being passed to a detector changes.


  • Updated for the latest changes to the Resolver backend.


  • DM SDK 3.0 is a major release with some breaking changes. See the migration guide for more information about migrating an existing project.
  • An API key is now required to use DMSDK. The API Key which is used for authentication to a Resolver service, in addition to trial and commercial licensing.
  • Xcode 11.0 is now required.
  • The host application must now include the Swift standard libraries. See the installation directions for more information. Portions of DM SDK require Swift.
  • Initial Metal acceleration. The host MTLDevice can be configured through the device property on image and video capture readers. Setting this property to nil will disable Metal acceleration. Metal acceleration requires iOS 11 on an iPhone 6S or higher. More Metal improvements will continue to be added to DM SDK.
  • New packaging as a xcframework, with beta support for more Apple platforms, including Mac Catalyst. See the DM SDK guide for more information.
  • Numerous API changes and improvements. See the migration guide for more specifics on how to migrate from old API.
    • Payload Representations may now be returned in a more relevant type than String. The dictionary has been altered to contain anonymous value types that will have to be cast.
    • The Databar Parser has been removed and folder into Payload.
    • Various classes have been added and altered for interacting with API keys. Resolver username, password, and URL have been removed from the API. These features are now configured with the API key.
    • Errors have been flattened into a single DMSError domain. Some errors may have been renamed.
    • Reader options have been flattened into a single set of DMSReaderOptionKey/ReaderOptionKey. Some reader option names may have been changed
  • Class names continue to not retain their prefixes under Swift. For example, DMSPayload under Obj-C is just Payload under Swift. These classes are also namespaced. For example, DMSDK.Payload can be used in Swift to refer specifically to DM SDK’s Payload class. We’re aware that removing prefixes for Swift is not the recommended practice for API that is compatible with both Swift and Obj-C. We’ve decided to continue dropping classes prefixes in Swift in preperation for any future transition to DM SDK as a Swift native API.


  • The DataBar representation for a Digimarc Barcode now includes additional GS1 AIs to support Simple Product ID and SGTIN-96 data fields.


  • Performance and memory usage improvements.


  • Added ARDemo which demonstrates using ARKit with DMSDK.
  • Notable detection improvement for objects enhanced with Digimarc Barcode through increased off center detection.
  • Improvements to Swift integration. Please see the new Swift Realignment History document for more information.
  • Migrated sample projects to Swift 4.0.


  • Improved support for the iPhone XS. Previous versions of the SDK have received these changes as an over the air update.
  • Extended read range, configured with the DMSImageReaderOptionExtendedReadRangeKey option, now defaults to on. This functionality provides detection from a much larger range of distance between the device camera and a detectable code. This option can be manually disabled, but that is not recommended.
  • The detection location returned by Digimarc Barcodes has been modified.
    • Detection location will now be rotated and scaled to more precisely align with the detected Digimarc Barcode.
    • Detection locations for both Tradtional and Digimarc Barcodes continue to be only hints as to where the content was detected, and not strict guides.
  • General performance improvements for detection.


  • Fixes a bug where UTF16 is sometimes used instead of UTF8 for decoding a QR code.


  • Location of traditional 1D barcodes and Digimarc Barcode now available in DMSReaderResult metadata returned by a reader. This can be used to highlight the location of a barcode in the camera view. Refer to the DMSReaderResult documentation for more information, or refer to the changes in the Drop-In View Controller Demo sample.
  • Improvements to Swift integration. Please see the new Swift Realignment History document for more information.
  • Landscape support for the Drop-In View Controller Demo sample.
  • General performance and robustness improvements for Digimarc Barcode and Traditional 1D barcode detection.


  • Minimum requirements for the iOS SDK has been changed from iOS 8.0 to iOS 9.0. We’re also suggesting an Xcode version of 9.0 or higher.
  • Improved off-angle detection of Digimarc Barcode for product packaging and print media.
  • Performance and multithreading improvements on newer Apple hardware, especially when using extended distance detection.
  • GTINs are no longer reported for Databars with more than one GTIN record
  • Report Action and Fast Path features have been deprecated. Developers using Fast Path should transition to the Resolver API.
  • UPCE codes will now contain representations for their expanded companion types, such as UPCA.
  • A Databar representation is now supplied for all relevant 1D types, such as UPCA.
  • Performance improvements on the following devices:
    • iPhone X
    • iPhone 8 and 8 Plus
    • iPhone 7 and 7 Plus


  • Changes to address lifecycle issues in the Detector View Controller.


  • Adding support for GIAI Weight Range 2 fields. These are still reported as weight range 3 for backwards compatibility, but the conversion is lossless.


  • New: ITF-14 and Variable Length ITF 1D traditional barcode support.
  • General optimizations to Digimarc Barcode detection.
  • Fix for GIAI Digimarc Barcodes to return correct representations.
  • Reduction in size of SDK.
  • Changes for DMSDemo.


  • Fixed a rare crash as detection is starting.
  • Fixed a crash when the ImageReader is passed an image at multiple resolutions.


  • Additional representations for GIAI company prefix and GIAI asset id.
  • GIAI is now supported by the Digimarc Barcode resolver backend.
  • Fixes for the camera preview in the DMSDetectorViewController class sometimes not always following the device rotation.
  • Fixes for the DMSDemo sample project, including the camera preview not always appearing, QR codes for external applications, and the web browser sometimes being launched twice for the same content.


  • Reader option flag for detection of Digimarc Barcodes at extended distances. See DMSImageReaderOptionExtendedReadRangeKey for more information.
  • Added a method to DMSImageReader to apply optimal camera settings for the image reader.
  • Camera settings are now applied every time, not only when they differ.
  • DMSDemo app rewritten in Swift. The app is significantly simpler now and is a good example for using Swift with DMSDK.
  • Added a custom UI example to the Drop-In View Controller demo.
  • Image recognition is no longer supported by DMSDK. The symbology and reader options for it are deprecated.
  • Added “Overview of the DM SDK” document.


  • Fixed a camera settings bug that could occasionally lead to incorrect image frame size in DMSDetectorViewController.


  • New property for image readers: rectOfInterest. This property can optionally limit the detection area of a reader to support use cases or UI where detections should only be performed in a portion of the camera view or image. Currently applies just for traditional 1D barcodes. Please see the documentation for more information.
  • Performance optimizations in 1D barcode detection.
  • DISDemo has been replaced by the Drop-In View Controller sample, which is now Swift. This sample shows how to quickly perform detections using a built in view controller, and can be found in the “Demos” folder.
  • Performance optimizations to image recognition.


  • Enhancements to SmartLabel detection beta.


  • Cloud based image recognition now has an option for an API key for custom image recognition accounts. Contact Digimarc for more information.
  • Image Capture Reader will now ignore images that are out of focus to preserve battery life.
  • GIAI payload support added.
  • Fixes for DMSDetectorViewController.
  • General improvements to power usage.
  • Added documentation and beta sample code for handling multi-modal results. See the “MultiModal Result Handling” document in the Docs folder for more information.


  • Support for cloud based image recognition.
    • Contact Digimarc for more information!
  • New Representation support for GS1 Variable Measure Trade Items.
  • Robustness improvements to Digimarc Barcode for Audio.
  • Rotation and scale information exposed for Digimarc Barcode reads.
  • Fixes for retrieving the source sample buffer from a read result.


  • Fix for empty QR codes generating an exception on detection.
  • Change to the SDK headers to workaround an issue with Swift 3’s compiler.
  • Improved performance for Digimarc Barcode detection at different angles and distances.


DMSDK 2.1 includes a new way to get web content related to your detections, and bug fixes.

  • Payload support added for Digimarc Barcodes using Simple Product ID and Expanded Fresh data encoding schemes.
  • Support has been added for obtaining the CMSampleBufferRef that a read result was obtained. See the frame retention options for readers.


Bug fixes for the Detector View Controller, including fixes around setting symbologies.


DMSDK 2.0 is a major release that includes many new features and optimizations.

  • DMSDK now ships as a modern Cocoa framework, with first class support for both Swift and Obj-C development. DMSDK can now be imported as a module in Swift, and the API has been modernized for Swift. Class prefixes have been removed under Swift, and the SDK’s data types have been audited for compliance with Swift best practices. Preliminary support has also been included for Swift 2.3/3.0.
  • The detection API has been refactored and improved. Reader classes support detection directly from an image frame, and CaptureReaders can be added directly to an AVFoundation session to quickly start detecting from existing camera or audio applications. Configuration has been simplified, and CaptureReaders will automatically apply the best capture settings to your capture session.
  • Results from the readers have been improved with a representations API that allows developers to quickly and easily query and translate symbols into the data formats that are used by their existing applications.

Older Versions

Refer to the release notes bundled with DMSDK 1.16.