# 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>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.licensespring.com/sdks/swift-objective-c-sdk.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
