# Download Your App on iOS

## Overview

Downloading your app to an iOS device requires an Apple Developer account. The process involves actions in your Thunkable project and your Apple Developer account. We recommend having each open in a separate browser tab so you can easily navigate between them.

{% hint style="info" %}
Please note that while the images and instructions from the Apple Developer account are accurate at the time of this doc’s publishing, they may change slightly over time.
{% endhint %}

## Register Your App with Apple

{% hint style="warning" %}
To avoid download errors, we recommend [adding an App Icon and Name](https://docs.thunkable.com/settings/project-settings) to your project before downloading.
{% endhint %}

1. Within your Thunkable project, click the **Publish and Download** icon.
2. Select **Download iOS**.<br>

   <div data-gb-custom-block data-tag="hint" data-style="warning" class="hint hint-warning"><p>The number of monthly downloads you are allowed varies per <a href="https://thunkable.com/pricing">Thunkable plan</a>. This number resets when your next billing cycle begins</p></div>
3. Enter the **Apple ID** associated with your Apple Developer account. Don't yet have an Apple Developer account? You can learn more and sign up for one here: [Create Your Apple ID](https://appleid.apple.com/account).
4. Click **Next**.
5. Copy the project’s auto-populated **Bundle ID**. You’ll need this in the next step.<br>

   <div align="left"><figure><img src="https://1223006790-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LAn5scXl2uqUJUOqkJo-84897653%2Fuploads%2FG2qhgVQs0Ria9sjnoJkz%2Fpublish%20iOS%20-%20register%20app%20modal.png?alt=media&#x26;token=f5bba015-b652-43f8-bf66-f0fe023a77e8" alt="" width="375"><figcaption></figcaption></figure></div>
6. Follow these instructions to register your app in your Apple Developer account: [Register Your App with Apple](https://docs.thunkable.com/publishing-apps/publish-to-app-store-ios#register-your-app-with-apple).&#x20;
7. Copy the **App ID Prefix (Team ID)** in your Apple Developer account.<br>

   <figure><img src="https://1223006790-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LAn5scXl2uqUJUOqkJo-84897653%2Fuploads%2FaNrKxOcRTNXS7sXd7dKh%2FRegister%20an%20App%20ID%20-%20Team%20ID.png?alt=media&#x26;token=6c167e0a-ca86-435a-a691-86cae083d266" alt=""><figcaption></figcaption></figure>
8. Return to your Thunkable project and paste the App ID Prefix (**Team ID**) into the provided field.
9. Click **Next**.

## Register Devices

You must specify registered devices in your Apple Developer account to create a provisioning profile for app testing and ad hoc distribution. This process is necessary because iOS devices have security mechanisms in place to ensure that only authorized apps are installed and run on them.&#x20;

{% hint style="warning" %}
Removing a registered device from your account will continue to count against your device limit. At the start of your new membership year, Account Holders and Admins can remove listed devices and restore the available device count.
{% endhint %}

### Register a Single Device

To register a single device to your Apple Developer account:

1. Open your[ Apple Developer account page](https://developer.apple.com/account).
2. Under the **Certificates, IDs & Profiles** heading, select **Devices**.
3. Click the blue **+** icon to add a new device to your account.
4. Ensure the **iOS platform** is selected.
5. Give your device a **name**.
6. Provide the device’s **UDID**. See here for instructions for locating your device's UDID: [Locating Your Device’s UDID](#locating-your-devices-udid).
7. Click **Continue**.

### Register Multiple Devices

To register multiple devices to your Apple Developer account:

1. Open your[ Apple Developer account page](https://developer.apple.com/account).
2. Under the **Certificates, IDs & Profiles** heading, select **Devices**.
3. Click the blue **+** icon to add a new device to your account.
4. Under **Register Multiple Devices**, click **Download sample files**.
5. Create your file containing the devices you wish to register. A maximum of 100 devices can be included in your file, and it may take a few minutes to process.
6. Click **Choose File**.
7. From your computer, select the file you created in step five above.
8. Click **Open**.
9. Click **Continue**.

### Locating Your Device’s UDID

Every iPhone, iPod touch and iPad has a unique identifier number associated with it, known as a UDID (Unique Device ID). This is either a 40-character alphanumeric ID on older devices or a 24-character ID (excluding hyphen) on newer devices, consisting of eight digits, a hyphen, and 16 alphanumeric characters.&#x20;

Please see here for instructions on locating your device’s UDID: [bjango: Finding your iPhone, iPod touch or iPad unique ID (UDID)](https://bjango.com/help/iphoneudid/).&#x20;

## Create an iOS Distribution Certificate

Follow these instructions to create a distribution certificate: [Create an iOS Distribution Certificate](https://docs.thunkable.com/publishing-apps/publish-to-app-store-ios#create-an-ios-distribution-certificate).

## Create an Ad Hoc Provisioning Profile

Apple requires a provisioning profile to install an app on a device. You need to create and download an Ad Hoc provisioning profile in your Apple Developer account and then return to Thunkable to upload this file.

1. Open your[ Apple Developer account page](https://developer.apple.com/account).
2. Under the **Certificates, IDs & Profiles** heading, select **Profiles**.
3. Click the blue **+** icon to add a new certificate to your account.
4. Under the **Distribution** heading, select **Ad Hoc**.
5. Click **Continue**.
6. Select the **App ID** for the app you want to publish.
7. Click **Continue**.
8. Select the certificate you wish to include in this provisioning profile.
9. Click **Continue**.
10. Select the device(s) you wish to include in this provisioning profile.&#x20;
11. Click **Continue**
12. Name your provisioning profile.
13. Click **Generate**.
14. Click **Download** to save the provisioning profile to your computer.
15. Return to Thunkable.
16. Click **Upload Ad Hoc Provisioning Profile**.
17. From your computer, select the .mobileprovision file you just downloaded.
18. Click **Next**.

## Review App Information

1. Review your app’s information in the modal provided. Detailed instructions are available here: [Publish iOS: App Info](https://docs.thunkable.com/publishing-apps/publish-to-app-store-ios#app-info).
2. Click **Submit**.
3. Congratulations! You will receive an email from Thunkable when your iOS app is available to download. This may take up to an hour.

## Download iOS App

When you receive the email with the download link:

1. Open the email on your iPhone or iPad.
2. Click the **Download App Project** button.&#x20;
3. Select your preferred browser.
4. Click **Download**.&#x20;
5. In the pop-up prompt, click **Install**.
6. Open your iOS device's **Settings**.
7. Navigate to **Privacy & Security**.
8. Click **Developer Mode**.
9. Toggle the Developer Mode switch to true.
10. Click **Restart**.
11. Once your device has restarted, click **Turn On** to enable Developer Mode.&#x20;
12. Enter your device’s **passcode**.
13. Click on your app's icon to test the app.

{% hint style="warning" %}
If there are issues with your app build, you will receive an email outlining what you need to fix.
{% endhint %}

## Troubleshooting

### App Cannot be Built

If you receive an email saying that your app cannot be built, it may be the result of one of the following:

* Ensure your app icon image:
  * does not have the same name as another project asset
  * is an image file
  * does not contain transparent pixels. Apple does not allow icons with transparent colors.
* Ensure your App (Bundle) ID adheres to the following:
  * It is a series of short strings of text separated by periods (e.g. com.thunkable.creator.app).
  * It is all lowercase.
  * It begins with a letter.
* Ensure your asset names only contain Roman alphabet characters (with no accents) and numbers.
  * Examples of asset names that could cause errors: image(1).jpg, imãge.jpg
  * Examples of asset names that won't cause errors: image1.jpg, image.jpg
* We are having trouble with our build servers. Please try again in 30 minutes.

***

{% hint style="success" %}
**Have feedback on this doc?** Please take a moment to share your feedback here: [Thunkable Docs Feedback](https://docs.google.com/forms/d/e/1FAIpQLSfCwn5L2xyla-LSLZX0DSWFcFeJ43qp-r1tELCacuVS2zduLA/viewform?usp=sf_link). Your valuable insights will help us improve and better serve you in the future.
{% endhint %}
