ArcGIS Runtime SDK for iOS: AGSLicense Class Reference
ArcGIS Runtime SDK for iOS  100.15
AGSLicense Class Reference


The application's license details.

Instances of this class represent the current state of the application's license as returned by AGSRuntimeEnvironment::license.

Until an app is licensed, it runs at the Developer license level. All functionality is available, but the map display is watermarked and the API logs messages stating that the app is in developer mode.

A deployed app needs to be run at minimum with the Lite license level to disable the map watermark. The Lite, Basic, Standard, or Advanced license level is set by calling setLicenseKey:error: (AGSArcGISRuntimeEnvironment) with a license string obtained from the ArcGIS for Developers website or Esri Customer Service. With the varying license levels, a subset of functionality is available. Any attempt to use licensed functionality that is not available at the current license level will log or emit error messages.

To get Lite, Basic, Standard, or Advanced license level functionality, a user app is licensed in one of two ways:

  • With license information retrieved after logging in to a portal (Lite and Basic levels).
  • With a license string acquired from the ArcGIS for Developers website or Esri Customer Service.

To license with a license string, call setLicenseKey:error: (AGSArcGISRuntimeEnvironment).

To validate with information from a portal, you need an AGSLicenseInfo instance. You can get one by calling AGSPortalInfo::licenseInfo. Pass the AGSLicenseInfo to setLicenseInfo:error: (AGSArcGISRuntimeEnvironment).

Both of these methods return an AGSLicenseResult that reports the status of the license. Note that there is a 30-day timeout when using AGSLicenseInfo. If the app is licensed using this method, the user must log in to the portal again before licensing the app. When this period has expired, calling setLicenseInfo:error: (AGSArcGISRuntimeEnvironment) returns an AGSLicenseResult which contains license status of AGSLicenseStatusLoginRequired, and the app continues to run at the current license level (default is AGSLicenseLevelDeveloper).

Inheritance diagram for AGSLicense:


NSDate * expiry
NSArray< AGSExtensionLicense * > * extensions
AGSLicenseLevel licenseLevel
AGSLicenseStatus licenseStatus
AGSLicenseType licenseType
BOOL permanent

Property Documentation

◆ expiry

- (NSDate*) expiry

License expiry date.

This is either the expiry date of a license set with setLicenseKey:error: (AGSArcGISRuntimeEnvironment) or the portal subscription expiry when using setLicenseInfo:error: (AGSArcGISRuntimeEnvironment).


◆ extensions

- (NSArray<AGSExtensionLicense*>*) extensions

An array of the extension licenses for the app.

For valid extension license keys supplied when calling setLicenseKey:extensions:error: (AGSArcGISRuntimeEnvironment), this array is populated with information about the extension licenses. Use this function to iterate extension licenses available for the app.

Note that, although this array is empty when running an app in developer mode, all extension licensed functionality will be available.


◆ licenseLevel

- (AGSLicenseLevel) licenseLevel

The current license level set in the app. See AGSLicenseLevel for available levels.

By default, unless a deployment license is provided, apps run with an AGSLicenseLevelDeveloper license.


◆ licenseStatus

- (AGSLicenseStatus) licenseStatus

Current status of the application's license.


◆ licenseType

- (AGSLicenseType) licenseType

The license type of the current license.

In developer mode, this property is AGSLicenseTypeDeveloper. Otherwise, it is AGSLicenseTypeNamedUser if the app was licensed by logging in to a portal and acquiring an AGSLicenseInfo, or AGSLicenseTypeLicenseKey if the app was licensed from a license string. The license type can change while an app runs. For instance, the app may start running licensed with a Lite license key (AGSLicenseTypeLicenseKey) and later become licensed from AGSLicenseInfo (AGSLicenseTypeNamedUser).


◆ permanent

- (BOOL) permanent

YES if a license is perpetual, NO otherwise.