Skip To Content ArcGIS for Developers Sign In Dashboard

Deploy your app

You can use ArcGIS Runtime SDK for iOS to create applications for iPhone, iPad, and iPod touch devices. Follow the steps below to ensure you've licensed the capabilities your app uses, you have deployed any relevant data and that you understand the associated costs.

Choose your Apple iOS Developer Program

An important factor in building your mobile solution for the iOS platform is your deployment and licensing agreement with Apple. The following three steps will guide you to a successful deployment:

  1. Enroll in the iOS Developer Program.

    If you want to distribute apps through the App Store, join the Apple Developer Standard Program as an individual or as a company. If you want to create and distribute proprietary in-house apps to your employees, join the Apple Developer Enterprise Program.

  2. Test your iOS app.

    During development, you can leverage your developer program agreement with Apple by testing your iPhone, iPad, and iPod touch devices using the Xcode graphical debugger, collecting real-time performance data using Instruments' time line, and contacting Apple technical support when you need help.

  3. Distribute your app.

    Depending on your choice of a standard or enterprise program agreement, you can distribute your app in one of many ways (through the App Store, by email, or by posting it to a website or server).

License and attribute your app

License the capabilities you included in the app. Licensing comes in four levels, Lite, Basic, Standard, and Advanced. License your app describes the license levels and how to license your app.


If your app persists license information for offline use, you must declare that your app uses cryptography when deploying to Apple's App Store using App Store Connect. The Runtime API uses encryption to protect the license.

Attribute Esri in your application. For details, see the attribution section in License your app.

Deploy local data

Deploying data locally allows users to access it without a network connection. Local data refers to files that are not part of your iOS application deployment. Some examples of files typically used as offline data are mobile map packages, runtime geodatabases, offline locators and network datasets, and tile packages.

Local offline data can be downloaded while the device has a network connection—for example when tile packages are generated from the device and downloaded, or when using the desktop pattern to create mobile map packages which are then stored in a Portal, and downloaded on the device while a network connection is available. Alternatively data can be copied to a device's internal storage (also known as sideloading) using tools such as iTunes. Copying to a device can be useful when files are prepared using ArcGIS Desktop or Pro, and when deploying the same files to many devices.

Projection engine files

If your app is using grid-based transformations, you will need to deploy the required Projection Engine files to the device. Projection Engine files can be copied (sideloaded) directly onto the iOS device using iTunes.

A full set of Projection Engine files can be downloaded from

ENC (Electronic Navigational Charts) style directory

If your application is displaying ENC layers then you will need to deploy the hydrography directory which is available for download from

Deploying to Apple's App Store

When you submit your Runtime app to Apple's App Store using App Store Connect, you must include a Privacy - Photo Library Usage Description (NSPhotoLibraryUsageDescription) entry in your app's Info.plist file. Apple's automated app review process detects that the ArcGIS Runtime SDK references Apple's Photos framework and will reject your app if the entry is not present.

If your app uses popups to edit attachments then you should also include a Privacy - Camera Usage Description entry in the Info.plist file. If that entry is missing, your app will exit when the user attempts to add an attachment from the camera. Apple's automated review process does not detect this.

Here is an example of these entries in the app's Info.plist file.