# Swift/Objective C SDK

### Swift/Objective-C SDK

* LicenseSpring.framework
* Sample app project
* Documentation

[**LicenseSpring\_Apple\_SDK\_v6.12.14.zip**](http://sdk.licensespring.com/Apple%20SDK/v6.12.14/LicenseSpring_Apple_SDK%20v6.12.14.zip)

Note: For Static Linking, please specify the linker flag "-ObjC" for the library. Otherwise, please link against the dynamic version of SDK.

### Release Notes

<details>

<summary>April 15, 2026, v6.12.14</summary>

* Support for device variables in offline deactivation
* Activate license with LicenseId (LicenseIDObjc)
* Product version not supported error
* Floating feature borrowing
* Signature v2 in .req files

</details>

<details>

<summary>February 25, 2026, v6.12.13</summary>

* Floating Server V2 Support
* Enable writing license file to non standard place - support custom save / fetch implementation for license file

</details>

<details>

<summary>October 13, 2025, v6.12.12</summary>

* XCode 26 and Swift 6 Support
* License features and license features watchdog

</details>

<details>

<summary>September 26, 2025, v6.12.11</summary>

* Virtual machine detection
* License reconfiguration support

</details>

<details>

<summary>September 10, 2025, v6.12.10</summary>

* Guard file for offline activations
* Allow negative consumptions

</details>

<details>

<summary>July 15, 2025, v6.12.9</summary>

* License bundle feature

</details>

<details>

<summary>June 25, 2025, v6.12.8</summary>

* license activation date, validity duration and company getter added
* License.fullCheck performance improvements

</details>

<details>

<summary>May 12, 2025, v6.12.7</summary>

* Set default Configuration Public key to production instead of staging environment

</details>

<details>

<summary>April 29, 2025, v6.12.6</summary>

* Added escaping method support for non blocking functions
* Resolved previous issues with offline

</details>

<details>

<summary>April 14, 2025, v6.12.5</summary>

* `oAuth` support
* Fix inverted maintenance period expired value

</details>

<details>

<summary>April 1, 2025, v6.12.4</summary>

* `LicenseId` support
* Added encoding to query params when sending GET requests
* Added optional `env` param support

</details>

<details>

<summary>February 11, 2025, v6.12.3</summary>

* Include license into the SDK build

</details>

<details>

<summary>January 30, 2025, v6.12.2</summary>

* Fix issues with license online check

</details>

<details>

<summary>November 07, 2024, v6.12.0</summary>

* Exposed `OrderStoreId` as public API
* Fixed issues with Xcode 16 and SwiftUI Preview

</details>

<details>

<summary>October 24, 2024, v6.11.0</summary>

* Refine all errors to satisfy internal requirements and customer needs
* Add support for Swift Package Manager
* Fix some minor issues

</details>

<details>

<summary>October 19, 2023, v6.10.0</summary>

* Implement local grace period
* Update README

</details>

<details>

<summary>September 19, 2023, v6.9.0</summary>

* Implement AirGap deactivation
* Implement `isAirGapActivated` and `polocyID` license properties

</details>

<details>

<summary>August 1, 2023, v6.8.0</summary>

* Improve signature checks for Offline activation
* Implement `unlimited consumption` feature
* Implement `reset consumption` feature

</details>

<details>

<summary>June 8, 2023, v6.7.0</summary>

* Added support for metadata functionality.

</details>

<details>

<summary>April 24, 2023, v6.6.0</summary>

* air-gap license activation
* customization of HTTPs proxy for SDK requests
* extend demo to support air-gap activation

</details>

<details>

<summary>January 26, 2023, v6.4.2</summary>

* FloatingServer support though FloatingClient implementation
* Add Support for Grace Period
* Add support of "date\_header\_invalid" error
* Add sending app version, name, etc. with URL and Offline requests
* Fix Demo with different configuration types (LicenseManager and FloatingClient)

</details>

> Note: Objective-C is now deprecated. Starting with versions 7.x.x, our SDK will no longer include it. Please contact us for options if you require support for the Objective-C language.

<details>

<summary>December 08, 2022, v6.3.0</summary>

* Added support for Online Floating licenses
* Added Floating License Borrowing support
* Improvement of SSO demo
* Added demo for Floating Licenses
* On-the-fly configuration in demo
* Fix issue for case when the License is deleted on the Server
* Fix sending of ip/MAC with URL requests

</details>

<details>

<summary>October 10, 2022, v6.2.1</summary>

* Improvement handling local consumptions
* Implemented Demo application. Min OS supported version is 10.15
* Relaxed requirements on `init` methods of public types
* Exposed some public methods of License and Configuration (non-breaking)

</details>

<details>

<summary>August 29, 2022, v6.1.1</summary>

* Fixed extra network communication on offline activation

</details>

<details>

<summary>August 15, 2022, v6.1.0</summary>

* Fixed offline activation issue when `Customer.email` is null
* Fixed offline activation files lookup (now you can specify either file or folder)
* Implement getting device variables list
* Implement getting license users list by customer

</details>

<details>

<summary>August 9, 2022, v6.0.1</summary>

* Fixed issue with code signing
* Improved documentation

</details>

<details>

<summary>July 29, v6.0.0</summary>

* redesign SDK in Swift

</details>

<details>

<summary>May 3, 2022, v5.11.0</summary>

* Add retrieving of SSO url
* Add license activation with SSO token
* Add SSO token parsing from redirection URL
* Update Mac/Swift example to show dealing with SSO
* Extend Customer with additional fields
* Add license policy and customer optional parameters when requesting trial license
* Minor improvement of interfaces
* Internal bugfix

</details>

<details>

<summary>March 30, 2022, v5.10.1</summary>

* fixed issue related to license activation

</details>

<details>

<summary>March 29, 2022, v5.10.0</summary>

* Added external logging subsystem. Now customers are able to collect internal (but not sensitive) logs of LicenseSpring
* Improved error reporting mechanism. Unified all errors and error codes
* Added customization in dealing with path to ls\_activation.lic file
* Added support of 'start\_date' to the license
* Implemented offline license update
* Minor improvement of interfaces
* Internal bugfix

</details>

<details>

<summary>March 02, 2022, v5.9.0</summary>

* fixed bugs related to license file path
* set license status to inactive in case of device id mismatch error
* SDK is now shipped as a unified XCFramework and covers macOS, iOS, iOS Simulator, macCatalyst

</details>

<details>

<summary>October 27, 2021, v5.8.0</summary>

* Updated Examples for Xcode 12.
* Added Examples for Xcode 13.
* Updated Documentation.
* Updated rules for saving license in a local file, fixed issue with incorrect last check date.
* Fixed algorithm for getting a trial license.
* Extended `InstallationFile`. Added new fields.

</details>

<details>

<summary>August 05, 2021, v5.7.3</summary>

* Added SDK for ARM processors, see SDK/ARM/LicenseSpringMac.framework.
* Updated MacOS example for ARM architecture, added brief readme files for samples.

</details>

<details>

<summary>May 24, 2021, v5.7.2</summary>

* Fixed incorrect Offline License file request
* Updated Examples for Mac OS

</details>

<details>

<summary>Mac December 12, 2020 v5.7.1_StaticLib (NEW)</summary>

* Updated Apple Universal Binary for macOS apple silicon processors static library

</details>

<details>

<summary>Mac November 25, 2020 v5.7.1_StaticLib</summary>

* Added Apple Universal Binary for macOS and IOS Swift/Objective C static library

Note: The archive now also contains Apple Universal Binary static library macOS and IOS. The code has not been changed.

</details>

<details>

<summary>Mac November 6, 2020 v5.7.1</summary>

* Fixed incorrect display license status.
* Fixed `License.IsValide` for display actual data.
* Removed printing a list of network interfaces.

</details>

<details>

<summary>Mac October 16, 2020 v5.7.0</summary>

* Added Swift iOS example project.
* Added ObjC iOS example project.
* Added local check for license. See License.localCheck.
* Added SDK for iOS platform.
* Fixed getting IP address for macOS.

</details>

<details>

<summary>Mac October 8, 2020 v5.6.0</summary>

* added iOS Example Project;
* fixed crash;
* added checking signature on iOS;

</details>

<details>

<summary>Mac September 10, 2020 v5.5.0</summary>

* Added `LicenseFeature.Name`, now it's possible to get License feature name not only code.
* Added new exception types `MaxFloatingReachedException`, `DeviceBlacklistedException`, `MissingEmailException`, `InvalidOrderIDException`.
* Implemented Overages feature for Consumption license type. See `License.IsConsumptionOverageAllowed` and `License.MaxConsumptionOverage`.
* Improved consumption handling. Added new methods `License.UpdateFeatureConsumption`, `LicenseFeature.LocalConsumption`.
* Fixed issue for validity and maintenance periods in case of null dates (unlimited periods).

</details>

<details>

<summary>Mac August 27, 2020 v5.4.1</summary>

* Fixed issue of automatic license checks

</details>

<details>

<summary>Mac April 1, 2020 v5.4.0</summary>

* Added `LicenseFeature name` Allowing to retrieve the feature name in addition to its code.
* Bug: Fixed issue of consumption features. Consumption changes were not stored to local license file properly.
* Bug: Fixed license status.
* Default license file path changed to `SupportApplication%AppName%\LicenseSpring%ProductCode%\License.key`. Now the default license path of the application license will be transferred to the new location by the SDK.
* In LicenseManager `sendCustomData` renamed to `sendDeviceData`.
* Added `validityPeriodUTC` `maintenancePeriodUTC` `lastCheckDateUTC`
* `ProductDetails` information now also available for offline activated licenses, see `License getProductDetails`.
* Added `License owner`
* Added `License isMaintenancePeriodExpired`
* Added `LicenseManager isOnline`
* Added new `LicenseManager getTrialLicense` method. It accepts Customer object, when issuing trial license also new customer will be created or license will be assigned to existing customer.
* Updated documentation.

</details>

<details>

<summary>Mac March 16, 2020</summary>

* Updated examples for Xcode 10 and Xcode 11.
* Added examples for Trial Flow App.

</details>

<details>

<summary>Mac December 27, 2019</summary>

* Added new API request `GetProductDetails`, new class `ProductDetails`.
* Added `LicenseSpringConfiguration.getAPIVersion` property. It returns API version that SDK uses.
* API version field added to offline activation/deactivation files.
* Added requests for creating licenses and orders. See `LicenseManager.createLicense` and `LicenseManager.createOrder`.
* New classes `Customer`, `OrderDetails` and `LicenseDetails`.
* Improved samples.

</details>

<details>

<summary>Mac December 11, 2019</summary>

* User-based licensing
* Offline licensing. New API methods - `getOfflineActivationFile`, `activateLicenseOffline` and `deActivateOffline`.
* Added new methods `isOfflineActivated`.
* Added new methods `maxActivations` and `timesActivated`.
* New API request `sendCustomData`, it allows sending custom data to the platform. Data will be linked to a device, so on the platform see device variables.
* Changed license status logic, now it's possible to check whether license is active even if it was disabled. See `isActive`, `isEnabled`.

</details>

<details>

<summary>Mac November 28, 2019, v4.5.0</summary>

* Fixed incorrect work of the SDK when product configured to have more than 2 letters short-code.
* Updated code style
* Fixed bug with LicenseStatus

</details>

<details>

<summary>Mac September 11, 2019, v4.4.1</summary>

* Added new feature - Custom product (license) data fields, see `getcustomFields` in `License` and CustomField.h
* Improved SDK samples
* Added sending "hostname" and ability to disable it
* Fixed API URL in samples
* Sending of optional parameters like app\_ver, os\_ver, sdk\_ver.

</details>

<details>

<summary>Mac June 13, 2019, v4.4.0</summary>

* Added Signature verification.
* Stability and performance improvements.

</details>

<details>

<summary>Mac June 5, 2019, v4.3.2</summary>

* Updated local check of the license, fixed issue with changing system time.

</details>

<details>

<summary>May 8, 2019, v4.3.1</summary>

* Extended sample apps with brief example on how to handle product updates.

</details>

<details>

<summary>May 6, 2019, v4.3.0</summary>

* Consumption licensing
* Global optimizations, significant improvements in the SDK architecture and design
* Added Swift sample

</details>

<details>

<summary>April 18, 2019, v4.2.1</summary>

* Ability to set custom hardware ID.
* `LSExtendedOptions`, all optional SDK configuration properties now brought together in ExtendedOptions class, see sample app for details.
* Updated Example app.

</details>

<details>

<summary>April 15, 2019, v4.1.0</summary>

* License status, `isActive` now replaced with `LicenseStatus` for the License class, for more details see LicenseStatus.h
* Fixed build error due to missed header in License.h

</details>

<details>

<summary>April 9, 2019, v4.0.10</summary>

* implemented offline validation of the license

</details>

<details>

<summary>April 8, 2019, v4.0.9</summary>

* added product features
* optimized license api calls

</details>

<details>

<summary>April 5, 2019, v4.0.8</summary>

* added "product" (short-code) in relevant APIs (internal)

</details>

<details>

<summary>April 4, 2019, v4.0.7</summary>

* fixed non-compilable code and add staging variable for Debug/Release configuration

</details>

<details>

<summary>April 3, 2019, v4.0.6</summary>

* in case of no internet connection or other connectivity issue, `CheckLicense` will return the current License (if available)

</details>

<details>

<summary>April 2, 2019, v4.0.5</summary>

* removed `isEnabled` property from License object
* added `isExpired` property to License object. This property (bool) will now reflect whether current license is maybe expired (validity period passed). Developers should use the following logic to determine whether there is a valid license: if license != nil && license.isExpired == false ...

</details>
