Before you deploy your ArcGIS Runtime app into production, you're required to license it with one of the four ArcGIS Runtime licensing capabilities levels: Lite, Basic, Standard, or Advanced. ArcGIS Runtime extension licenses can also be applied to bring additional functionality into your app.
Other costs may be incurred when deploying your app, such as transactions used with ArcGIS Location Services. Refer to deployment and our FAQ for more information on the terms and conditions.
Develop and test
You can download and install an ArcGIS Runtime SDK using the downloads page. You then have access to all of the functionality in the API for development and testing purposes. In this mode, the app will adopt the following behavior:
- Any map or scene will be watermarked with the words
Licensed For Developer Use Only
. - A message will be written to the console or log that states that the app is
Licensed For Developer Use Only
.
Licensing your app for deployment will remove the watermark and console output and provide the appropriate capabilities to your app users.
Licensing options
Before you can use your app in production, you are required to license the ArcGIS Runtime app. Esri provides four ArcGIS Runtime license levels: Lite, Basic, Standard, or Advanced. Each additional level opens more capabilities for your app users.
Two options are available to set the license level in your app:
User authentication
A user (obtained through user authentication) refers to an ArcGIS account that is a member of a portal. The ability to license an ArcGIS Runtime app from a user is one feature of user authentication. You need to include code in your ArcGIS Runtime app to enable a user to sign in to a portal and return license details associated with their account.
Use user authentication licensing if your target audience has access to ArcGIS Online or ArcGIS Enterprise and use devices that will be online at least once every 30 days (timeout for a user authentication license for ArcGIS Runtime). One notable benefit of this model is the license for ArcGIS Runtime travels with the user, not the app, so one user can license many ArcGIS Runtime apps.
License string
A license string is a text string that contains license details. A free Runtime Lite license string can be obtained below by signing in with your ArcGIS Location Platform or ArcGIS Online account. A Basic, Standard, or Advanced license string can be purchased as one or more ArcGIS Runtime deployment packs. License strings are usually compiled into your ArcGIS Runtime app. Each installation of your app available to a single user counts as a deployment.
Use a license string if your target audience does not have access to ArcGIS accounts with ArcGIS Online or ArcGIS Enterprise, needs to use an application that will remain offline indefinitely, or needs to guarantee an application will function if offline more than 30 days. Customers are required to track the number of ArcGIS Runtime deployments at the Basic, Standard, and Advanced level. Each installation of your app available to a single user counts as a deployment.
Your Runtime Lite license string
Licensing capabilities
The functionality associated with each license level is described below, including the available licensing options and how to acquire a license. For details on API classes and members that require a paid license or extension, see Licensing details in the API reference.
License level | Capabilities | License string | User authentication |
---|---|---|---|
Lite | Viewing maps, scenes, layers, and packages from ArcGIS. Edit features in public feature services. These services are available on the Internet and are not secured. Edit features in a mobile geodatabase generated from a public sync-enabled feature service. Synchronize those edits to the feature service. Generate a mobile geodatabase with features from a sync-enabled feature service. Download updates from a sync-enabled feature service to a mobile geodatabase. Place finding — see the section below entitled: Store geocode results from ArcGIS Online Optimized routing. Calculate service areas and find closest facilities using a network service. Viewing KML data accessed as a web resource (for example, via an http or https link). | An ArcGIS Runtime Lite license is available for free here. Sign in with your ArcGIS Location Platform or ArcGIS Online account and copy the Runtime Lite license string into your app. | With ArcGIS Runtime 100.7 or later: • ArcGIS Online, ArcGIS Enterprise 10.8 and newer: sign in as a member who is assigned a Viewer or Lite user type. • ArcGIS Enterprise 10.7.1: sign in as a memeber who is assigned a Viewer user type. With ArcGIS Runtime 100.6 or earlier: • ArcGIS Online or ArcGIS Enterprise: sign in as a member who is assigned a Viewer user type. |
Basic | All capabilities of Lite. Edit features in feature servics that are only accessible on a local network or are secured. Edit features in mobile geodatabases and features in feature services that are only accessible on a local network or are secured. Synchronize edits to feature geometry, attributes, and attachments from a mobile geodatabase to a feature service. Create mobile geodatabases. Create and delete feature tables and domains in a mobile geodatabase. Add, update, or delete content on portals. Navigate a route using the route tracker. | Deployment packs are available for purchase. Contact the Esri office that serves you, or if you are in the United States, call Esri at 1-800-447-9778 | With ArcGIS Runtime 100.7 or later: • ArcGIS Online: sign in as a member who is assigned a Contributor, Mobile Worker or Basic user type. • ArcGIS Enterprise 10.8 and newer: sign in as a member who is assigned an Editor, Mobile Worker, or Basic user type. • ArcGIS Enterprise 10.7.1: sign in as a member who is assigned an Editor, Mobile Worker, Creator, or GIS Professional user type. With ArcGIS Runtime 100.6 or earlier: • ArcGIS Online: sign in as a member who is assigned a Contributor or Mobile Worker user type. • ArcGIS Enterprise 10.7.1 and newer: sign in as a member who is assigned an Editor, Mobile Worker, Creator, or GIS Professional user type. |
Standard | All capabilities of Basic. Access to additional data, including shapefiles, GeoPackages, ENC layers (S—57), local raster layers, use of raster functions, and local raster elevation sources. View, create, edit, and save KML data stored as a local file. Visual analysis, including line of sight and viewshed. | Deployment packs are available for purchase. Contact the Esri office that serves you, or if you are in the United States, call Esri at 1-800-447-9778. | With ArcGIS Runtime 100.7 or later: • ArcGIS Online: sign in to ArcGIS Online as a member who is assigned a Creator or Standard user type. • ArcGIS Enterprise 10.8 and newer: sign in as a member who is assigned a Creator, GIS Professional Basic, or Standard user type. • ArcGIS Enterprise 10.7.1: sign in as a member who is assigned a Creator or GIS Professional Basic user type. |
Advanced |
Extension licenses
ArcGIS Runtime offers extensions that provide access to additional capabilities, analysis tools, or data.
Extension License | Capabilities | License string | User autehntication |
---|---|---|---|
Analysis | Minimum ArcGIS Runtime license level: Standard. Calculate service areas and find closest facilities using a local network dataset. | Deployment packs available for purchase. Contact the Esri office that serves you or if you are in the United States call Esri at 1-800-447-9778. | ArcGIS Online or ArcGIS Enterprise 10.8 or higher: sign in as a user who has been assigned an ArcGIS Runtime Analysis add-on license extension. |
Utility Network | Works with all license levels. Analyze (trace) utility networks. | Deployment packs available for purchase. Contact the Esri office that serves you or if you are in the United States call Esri at 1-800-447-9778. | ArcGIS Online or ArcGIS Enterprise 10.8 or higher: sign in as a user who has been assigned a Utility Network user type extension. |
StreetMap Premium for ArcGIS Runtime | Works with all license levels and includes the following functionality: • Use offline as a mobile map package • Display maps with high-quality cartography • Offline geocoding • Offline routing StreetMap Premium can be licensed for the following regions: • North America • Latin America • Europe • Asia Pacific • Middle East and Africa Each mobile map package is associated with a license for its respective region. You can use any combination of these packages with their associated license. | StreetMap Premium for ArcGIS Runtime extension licenses are provided on an annual-term basis. StreetMap Premium mobile map packages cannot be used after the license has expired. Contact the Esri office that serves you or if you are in the United States call Esri at 1-800-447-9778. | ArcGIS Online or ArcGIS Enterprise 10.9 or higher: sign in as a user who has been assigned a Runtime StreetMap Premium add-on license extension. |
Store geocode results from ArcGIS Online
The Geocoding service includes a for
parameter. Storing the results of a geocode or reverse geocode operation using this service (by setting the for
parameter to true) requires one of the following methods of authentication:
- API key authentication. Add a long-lived API key access token, that has a location services privilege of Geocode (stored), to your app.
- User authentication. Allow users with an ArcGIS Location Platform or ArcGIS Online account to sign in and access the geocoding service. This uses the credits from the member's account. Additionally, the user performing a paid operation must be assigned a user role that includes the Geocoding privilege. For more information, see pricing information in ArcGIS Location Platform pricing and User types, roles, and privileges in ArcGIS Online documentation.
User authentication
In March of 2019, user types were introducted with ArcGIS Enterprise 10.7 and replaced named user license levels. Members of any user type can be used to license an ArcGIS Runtime app. Members assigned a user type of Viewer will be licensed at the Lite license level, while members assigned a user type of Editor, Mobile Worker, Creator, or GIS Professional will be licensed at the Basic license level.
Starting with ArcGIS Enterprise 10.8 and newer, ArcGIS Runtime license levels can be licensed through user types or through a license string. Administrators must assign a user type with the appropriate ArcGIS Runtime license level to members of the organization based on the level of access they require.
- Members assigned a Viewer or Lite user type will be licensed at the ArcGIS Runtime Lite license level.
- Members assigned an Editor, Mobile Worker, or Basic user type will be licensed at the ArcGIS Runtime Basic license level.
- Members assigned a Creator, GIS Professional Basic, or Standard user type will be licensed at the ArcGIS Runtime Standard license level.
- There are no capabilities requiring an Advanced license level at this time for the ArcGIS Runtime SDK for iOS.
User types explicitly include ArcGIS Runtime licenses and extensions when applicable. ArcGIS Runtime 100.7 and higher is licensed on the basis of these explicit license entitlements when used with such user types.
Starting June 26th, 2024 with ArcGIS Online, ArcGIS Runtime license levels can be assigned by Administrators as follows:
- Viewer or Lite user types will be licensed at the ArcGIS Runtime Lite license level.
- Contributor, Mobile Worker or Basic user types will be licensed at the ArcGIS Runtime Basic license level.
- Creator or Standard user types will be licensed at the ArcGIS Runtime Standard license level.
- There are no capabilities requiring an Advanced license level at this time for the ArcGIS Runtime SDK for iOS.
Use tile packages from ArcGIS Online basemaps
App developers may use ArcGIS Online basemaps for their apps. Esri has designed a use policy that seeks to maximize the use of these basemaps by the ArcGIS Runtime developer community. The rules for using these basemaps are conditioned on how the basemaps are used.
A developer can only export basemaps from services that support the export tiles operation.
A developer may:
- Export basemaps as tile packages for use with an ArcGIS Runtime app, up to the limits imposed by the basemap for a single tile package.
- Use an ArcGIS Runtime app to export basemaps on demand. Authorization must be as a member of a portal or with an app login.
- Embed or bundle basemap tile packages in an ArcGIS Runtime app.
- Use an ArcGIS Runtime app to download pre-created basemap tile packages hosted by ArcGIS Online or ArcGIS Enterprise, but only if the ArcGIS Online organization or ArcGIS Enterprise is licensed for production use.
A developer may not:
- Allow their users to use the exported content outside of ArcGIS technology.
- Allow their users to unbundle the exported content and publish the exported content as a map service.
- Allow their users to unbundle the exported content or redistribute to other users.
- Systematically harvest map tiles using the service (a practice often referred to as "scraping tiles").
License your app
Follow these steps to license your app with a license string or user authentication. If you use API key authentication to access ArcGIS services, the Runtime app itself must still be licensed with a Runtime license string or user authentication. After licensing the app, the watermark and debug messages will no longer display and your app will be ready for distribution and use in production.
License your app with a license string
Using a license string involves adding code to set the license level at compile time so that the license string is built into the application.
- Read the end user license agreement.
- Find a location in your code that runs before any ArcGIS Runtime functionality is used.
- Call the
setLicenseKey()
method on theAGSArcGISRuntimeEnvironment
singleton object to license the app with a license string.
// License the app with the supplied license string.
do {
let result = try AGSArcGISRuntimeEnvironment.setLicenseKey("runtimelite,1000,rud#########,day-month-year,####################")
print("License Result : \(result.licenseStatus)")
}
catch let error as NSError {
print("error: \(error)")
}
Your Runtime Lite license string
Your app is now licensed for deployment.
License your app through user authentication
Use of an ArcGIS account involves adding user authentication code to enable a sign in experience. At runtime, a user must sign in successfully to return their license information which will be used by the app to set the license level. Follow these steps to license your app using the user's account:
- Read the end user license agreement.
- Find a location in your code that runs before any ArcGIS Runtime functionality is used.
- Allow the app user to authenticate with an ArcGIS account using a portal. Upon loading the
AGSPortal
obtain theAGSLicenseInfo
and use this to license the app. As part of the process, save the license information in preparation for your app being used in an offline environment for up to 30 days.
// Construct the portal class and ensure that the user provides their credentials.
let theURL = URL(string: "https://myportal.com")
// Request that the user signs in with their credentials.
let portal = AGSPortal(url: theURL!, loginRequired: true)
// Load the portal.
portal.load { (error) in
if let error = error {
print(error)
}
else {
// Get the users license info from the portal.
portal.fetchLicenseInfo { (licenseInfo,error) in
guard let error = error {
print("Error fetching user's licenses... \(error)")
return
}
// Set the license using the user's licenseInfo.
do {
let result = try AGSArcGISRuntimeEnvironment.setLicenseInfo(licenseInfo!)
}
catch let error as NSError {
print("error: \(error.localizedDescription)")
}
// The app is now licensed.
// Save the license information so that the app can be started and licensed offline.
// In this example, the licenseDictionary is stored in keychain.
var licenseDictionary: NSDictionary?
do {licenseDictionary = try licenseInfo?.toJSON() as! NSDictionary?
} catch {
print("LicenseInfo not available")
}
let keychainItem = AGSKeychainItem(identifier: "com.your_org.your_app_name", accessGroup: nil, acrossDevices: false)
keychainItem.writeObject(toKeychain: licenseDictionary!, completion: { (writeError) in
if let error = writeError {
print("Error writing to the Keychain... \(error)")
}
})
}
}
}
If you saved the license information on local storage, your app can be started and licensed in an offline environment using the saved license information. Retrieve the license from storage and license your app.
// Locate the keychain.
let keychainItem = AGSKeychainItem(identifier: "com.your_org.your_app_name", accessGroup: nil, acrossDevices: false)
// Return the license JSON from the keychain.
let licenseDictionary = keychainItem.readObjectFromKeychain() as? NSDictionary
// Construct the license info from the JSON.
let licenseInfo = try! AGSLicenseInfo.fromJSON(licenseDictionary!) as? AGSLicenseInfo
// License the app with the license Info.
AGSArcGISRuntimeEnvironment.setLicenseInfo(licenseInfo!, error: errorPointer)
License extensions with a license string
- Read the end user license agreement.
- Find a location in your code that runs before any ArcGIS Runtime functionality is used.
- Call the
setLicenseKey()
method on theAGSArcGISRuntimeEnvironment
singleton object to license the app with a main license string and any extension licenses.
let error : NSErrorPointer = nil
AGSArcGISRuntimeEnvironment.setLicenseKey("runtimeadvanced,1000,rud#########,day-month-year,####################",
extensions: ["runtimesmpna,1000,rud#########,day-month-year,####################",
"runtimesmpla,1000,rud#########,day-month-year,####################" ], error: error)
Your app is now licensed to use the extensions.
Attribute Esri in your app
Esri requires that when you use an ArcGIS Online basemap, Esri data services, or Esri API technology in your app you must also include Esri attribution. There are specific requirements for attribution you may be required to address in your app depending on how your app is built and the data it uses. This is outlined in detail in the Attribution in your app topic.