License

Before you deploy your app into production, you're required to apply a license at one of four levels: Lite, Basic, Standard, or Advanced. These are described in licensing capabilities. You can also apply extension licenses 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 this SDK using an ArcGIS Developer account. You then have access to all of the functionality in the SDK for development and testing purposes. Without a deployment license, you will see the following:

  • 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.
  • When Local Server starts a message box will be displayed stating that This application 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 apply a license to it. Esri provides four license levels: Lite, Basic, Standard, or Advanced. Each level opens different capabilities for your app users.

You have two options to apply a license in your app:

Named User licensing

A named user (also known as an ArcGIS identity) refers to an ArcGIS organizational account that is a member of an organization in ArcGIS Online or ArcGIS Enterprise. The ability to license an app is just one feature of a named user. You need to include code in your app to enable a user to sign in (log in) to a portal and return license details associated with their named user account.

Use Named User licensing if your target audience has access to ArcGIS Online or ArcGIS Enterprise. Your app can be used by the named user for a maximum duration of 30 days before they must sign in (log in) again. One notable benefit of this model is the license travels with the named user, not the app, so one named user can license many apps.

License string

A license string is a text string that contains license details. License strings can be acquired through your ArcGIS Developer account or purchased in ArcGIS Runtime deployment packs.

Use a license string if your target audience does not have access to named user accounts with an ArcGIS Online organization or on-premises ArcGIS Enterprise portal, 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 deployments at the Basic, Standard, and Advanced levels. Each installation of your app available to a single user counts as a deployment.

Your Runtime Lite license stringShow valueClick to copy

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 levelCapabilitiesLicense stringNamed user
LiteViewing 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 any sync-enabled feature service.

Download updates to a mobile geodatabase from its source sync-enabled feature service.

Place finding see the section below entitled: Store geocode results from ArcGIS Online

Optimized routing.

Navigate a route using the route tracker when working with ArcGIS location services accessed with an API Key.

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. Log in to your ArcGIS Developer account and copy the ArcGIS Runtime Lite license string (shown in the License string section above) into your app.There are two options:

ArcGIS Online or an on-premises Portal from ArcGIS Enterprise 10.8 or later: log in as a Named User who has an ArcGIS Runtime Lite license.

On-premises Portal from ArcGIS Enterprise 10.7 or earlier: log in as a Named User of type Viewer, or a level 1 Named User.
BasicAll the capabilities of Lite.

Edit features in feature services that are only accessible on a local network or are secured.

Edit features in a mobile geodatabase generated from a sync-enabled feature service that is only accessible on a local network or is secured. Synchronize those edits to the 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.
ArcGIS Runtime 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
There are two options:

ArcGIS Online or an on-premises Portal from ArcGIS Enterprise 10.8 or later: log in as a Named User who has an ArcGIS Runtime Basic license.

Onpremises Portal from ArcGIS Enterprise 10.7 or earlier: log in as a Named User of type Editor, Field Worker, Creator, or GIS Professional, or a level 2 Named User.
StandardAll the 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.

Local Server:

    Create file geodatabases

    Read, display, query data in enterprise or file geodatabases

    Create, edit, and change the schema of tables, simple1 feature classes, simple feature datasets, raster catalogs, and raster datasets

    Map services

    Feature services includes editing file geodatabases

    Geoprocessing services - includes support for a subset of standard ArcGIS Pro tools that can be included in a geoprocessing package

ArcGIS Runtime 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.
Log in to ArcGIS Online or an on-premises Portal from ArcGIS Enterprise 10.8 or later as a Named User who has an ArcGIS Runtime Standard license.
AdvancedAll the capabilities of Standard.

Local Server:

    Feature services Edit enterprise geodatabases and edit enterprise and file geodatabases with attachments

    Geoprocessing services Includes support for a subset of standard and advanced ArcGIS Pro tools that can be included in a geoprocessing package
ArcGIS Runtime 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.
Log in to ArcGIS Online or an on-premises Portal from ArcGIS Enterprise 10.8 or later as a Named User who has an ArcGIS Runtime Advanced license.

Extension licenses

Extensions provide access to additional capabilities, analysis tools, and/or data.

Extension LicenseCapabilitiesLicense stringNamed user
AnalysisMinimum ArcGIS Runtime license level: Standard.

Calculate service areas and find closest facilities using a local network dataset.

Local Server geoprocessing services A subset of the following ArcGIS analysis extension toolboxes is supported: Network Analyst, Spatial Analyst, 3D Analyst.
ArcGIS Runtime 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.
Log in to ArcGIS Online or an on-premises Portal from ArcGIS Enterprise 10.8 or later as a named user who has been assigned an ArcGIS Runtime Analysis addon license extension.
Utility NetworkWorks with all license levels.

Analyze (trace) utility networks.
ArcGIS Runtime 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.
Log in to ArcGIS Online or an on-premises Portal from ArcGIS Enterprise 10.8 or later as a named user who has been assigned a Utility Network user type extension.
StreetMap PremiumWorks 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 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.
Log in to ArcGIS Online or an on-premises Portal from ArcGIS Enterprise 10.9 or later as a named user who has been assigned a Runtime StreetMap Premium addon license extension.

Store geocode results from ArcGIS Online

The Geocoding service includes a for_storage parameter. Storing the results of a geocode or reverse geocode operation using this service (by setting the for_storage parameter to true) requires an ArcGIS Developer account with a properly scoped API key, or an ArcGIS Online account and uses credits from the subscriber's account. Additionally, the user performing a paid operation must be assigned a user role that includes the Geocoding privilege. For more information, see Geocoding service, pricing information in Pricing made simple, and User types, roles, and privileges in ArcGIS Online documentation.

Named User licensing

Beginning with the release of ArcGIS Enterprise 10.5, members in an organization in ArcGIS Online or on-premises ArcGIS Enterprise portal can be assigned one of two membership levels, as described in Levels, roles, and privileges. Level 1 can be used to license your app at the Lite level. Level 2 can be used to license your app at the Lite and Basic level. For Portals prior to version 10.5, all named users are equivalent to Level 2 and can be used to license your app at the Basic level.

At the end of 2018, named user types were introduced in ArcGIS Online to replace named user levels. Named users of any type can still be used to license your app. Named users of type Viewer can license your app at the Lite level and named users of type Editor, Mobile Worker, Creator, and GIS Professional can license your app at the Basic level.

Starting with ArcGIS Enterprise 10.8 and the December 2019 update of ArcGIS Online, named user types explicitly include ArcGIS Runtime licenses and extensions when applicable. You can license your app with these named users.

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 Maps SDK for Native Apps 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 app built with this SDK, up to the limits imposed by the basemap for a single tile package.
  • Build an app with this SDK to export basemaps on demand. Authorization must be as a named user or with an app login.
  • Embed or bundle basemap tile packages in an app built with this SDK.
  • Build an app with this SDK 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 a named user account. If you use an API key to access ArcGIS services, the app itself must still be licensed with a license string or named user. 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.

  1. Read the end user license agreement.
  2. Find a location in your code that runs before any SDK functionality is used.
  3. Call the setLicense() method on the ArcGISRuntimeEnvironment singleton object to license the app with a license string.

The following licensing code must run before any other ArcGIS Maps SDK functionality is used in your app.

Use dark colors for code blocksCopy
                                                                                                           
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107

// add the following to the main.cpp before the application is loaded
LicenseResult result = ArcGISRuntimeEnvironment::setLicense("your_license_string");
Your Runtime Lite license stringShow valueClick to copy

Your app is now licensed for deployment.

  1. Read the end user license agreement.
  2. After obtaining the license string, set it in your app using C++ code. This pattern is enforced as a security measure.
Use dark colors for code blocksCopy
                                                                                                           
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
// add the following to the main.cpp before the QML application is loaded
QCoreApplication::instance()->setProperty("Esri.ArcGISRuntime.license", "your_license_string");
Your Runtime Lite license stringShow valueClick to copy

In your QML code, you can check your license level.

Use dark colors for code blocksCopy
                                                                                                           
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
Component.onCompleted: {
    if (ArcGISRuntimeEnvironment.license.licenseLevel === Enums.LicenseLevelLite) {
        console.log("lite");
    } else if (ArcGISRuntimeEnvironment.license.licenseLevel === Enums.LicenseLevelBasic) {
        console.log("basic");
    } else if (ArcGISRuntimeEnvironment.license.licenseLevel === Enums.LicenseLevelStandard) {
        console.log("standard");
    } else if (ArcGISRuntimeEnvironment.license.licenseLevel === Enums.LicenseLevelAdvanced) {
        console.log("advanced");
    } else if (ArcGISRuntimeEnvironment.license.licenseLevel === Enums.LicenseLevelDeveloper) {
        console.log("developer");
    }
}

Your app is now licensed for deployment.

License your app with a named user account

Use of a named user (also known as an ArcGIS identity) involves adding code to enable sign-in for using an ArcGIS organizational account. 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 named user's account:

  1. Read the end user license agreement.
  2. Find a location in your code that runs before any SDK functionality is used.
  3. Allow the app user to authenticate with an ArcGIS organizational account. Upon loading the Portal obtain the LicenseInfo 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.

The following example shows how to get a license for an ArcGIS Online named user.

ArcGIS Qt API (C++)ArcGIS Qt API (C++)ArcGIS Qt API (QML)
Use dark colors for code blocksCopy
                                                                                                           
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
Credential* cred = new Credential(userName, pwd, this);
Portal* portal = new Portal(QUrl(url), cred, this);

connect(portal, &Portal::fetchLicenseInfoCompleted, this, [this](QUuid, const LicenseInfo& licenseInfo)
{
  m_licenseInfo = licenseInfo;
  LicenseResult result = ArcGISRuntimeEnvironment::setLicense(m_licenseInfo);
});
portal->fetchLicenseInfo();

Save the JSON containing the license information for use again later.

ArcGIS Qt API (C++)ArcGIS Qt API (C++)ArcGIS Qt API (QML)
Use dark colors for code blocksCopy
                                                                                                           
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
QString json = m_licenseInfo.toJson();
QFile file(QDir::tempPath() + "/licenseFile.txt");
file.open(QIODevice::WriteOnly);
file.write(json.toUtf8());
file.close();

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.

ArcGIS Qt API (C++)ArcGIS Qt API (C++)ArcGIS Qt API (QML)
Use dark colors for code blocksCopy
                                                                                                           
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
QFile file(filePath);
if (file.exists())
{
  file.open(QIODevice::ReadOnly);
  m_licenseInfo = LicenseInfo::fromJson(file.readAll());
  LicenseResult result = ArcGISRuntimeEnvironment::setLicense(m_licenseInfo);
//...

License extensions with a license string

  1. Read the end user license agreement.
  2. Find a location in your code that runs before any SDK functionality is used.
  3. Call the setLicense() method on the ArcGISRuntimeEnvironment singleton object to license the app with a main license string and any extension licenses.
ArcGIS Qt API (C++)ArcGIS Qt API (C++)ArcGIS Qt API (QML)
Use dark colors for code blocksCopy
                                                                                                           
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
// add the following to the main.cpp before the application is loaded
const QStringList extensions = { m_smpKeyNorthAmerica, m_smpKeyLatinAmerica, m_smpKeyEurope };

ArcGISRuntimeEnvironment::setLicense(m_appLicenseKey, extensions);

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 here in the Attribution in your app topic.

Your browser is no longer supported. Please upgrade your browser for the best experience. See our browser deprecation post for more details.