# iOS Downloading

### Overview <a href="#overview" id="overview"></a>

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 <a href="#register-your-app-with-apple" id="register-your-app-with-apple"></a>

To register an App ID:

1. Open your [Apple Developer account page](https://developer.apple.com/account).
2. Under the **Certificates, IDs & Profiles** heading, select **Identifiers**.
3. Click the blue **+** icon to add a new identifier to your account.
4. Choose **App IDs** from the list of options.
5. Click **Continue**.
6. Select **App**.
7. Click **Continue**.
8. On the **Register an App ID** screen, complete or take note of the following fields:
   1. **Description** - This is the name you want to give your app. It appears next to the app icon when downloaded on a user's device. It must be unique to the App Store and cannot use special characters such as @, &, \*, "
   2. **Bundle ID** - This is also unique to your app, but not visible to your app users. Apple recommends reversing your domain name to create your bundle ID, i.e. *com.yourDomainName.yourAppName* to avoid conflicts with other apps.

      Uploading apps to the App Store requires an Explicit Bundle ID. Wildcard bundle IDs are no longer accepted.
   3. **App ID Prefix (Team ID)** - Record your App ID Prefix or Team ID. This automatically created, unique identifier is linked to your Apple Developer Program membership. The same ID can be used for every app you publish.

      ![](https://docs.thunkable.com/~gitbook/image?url=https%3A%2F%2F1223006790-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LAn5scXl2uqUJUOqkJo-84897653%252Fuploads%252FlvpJj0Q9b2Qa3HgfbCod%252Fpublish_register_app_id.png%3Falt%3Dmedia%26token%3Dddabf6a8-b711-4501-a3fc-e68196705ff8\&width=768\&dpr=4\&quality=100\&sign=5590e1e3\&sv=2)
9. Click **Continue**.
10. Confirm that the details are correct.
11. Click **Register**.
12. The new App ID you created is included in your list of Identifiers. Click the app's name to review its Description, App ID Prefix (Team ID), or Bundle ID.

#### Start the Downloading Process in Thunkable <a href="#start-the-publishing-process-in-thunkable" id="start-the-publishing-process-in-thunkable"></a>

To begin the process:

1. Open your Thunkable project.&#x20;
2. Click the **Download** icon.
3. Select **Download iOS** from the drop-down menu.
4. Click the **Get Started** button.
5. Select **iOS Provisioning Method:** Manual Provisioning or Automated Provisioning
6. Click the **Next** button.

#### &#x20;<a href="#start-the-publishing-process-in-thunkable" id="start-the-publishing-process-in-thunkable"></a>

### Automated Provisioning: <a href="#start-the-publishing-process-in-thunkable" id="start-the-publishing-process-in-thunkable"></a>

To use automated provisioning, you must first configure your App Store Connect API credentials. Configure it by following the steps here: <https://ai.thunkable.com/account/appstore>

**Register app**

1. Input your **App Name**, **Team ID**, and **Bundle ID** from when you completed these steps: [Register Your App with Apple](https://docs.thunkable.com/publishing/publish-to-app-store-ios/user-guide#register-your-app-with-apple).

![](/files/V2dVx9IVWYtb8W3cEe80)

2. Click **Next**.

#### Register Devices <a href="#register-devices" id="register-devices"></a>

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.

{% 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 <a href="#register-a-single-device" id="register-a-single-device"></a>

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](https://docs.thunkable.com/settings/manage-your-projects/download/iosdownload#locating-your-devices-udid).
7. Click **Continue**.

#### Register Multiple Devices <a href="#register-multiple-devices" id="register-multiple-devices"></a>

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**.

#### Register Test Devices&#xD; <a href="#locating-your-devices-udid" id="locating-your-devices-udid"></a>

Click the  **+ Add Device** button to add a new device to your account or the **Sync from Apple** button: ![](/files/6d6uREbCqRGx8C8IyzCL)

#### Locating Your Device’s UDID <a href="#locating-your-devices-udid" id="locating-your-devices-udid"></a>

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.

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/).

**App Info**

* **App icon:** This app icon appears when a user downloads your app from the App Store. Recommended size: 1024x1024 px. This icon must not have any transparent pixels.
* **Version Number:** The version number is visible to your users when they download a new version of your app. See here for additional information: Set a Version Number.

When the necessary fields are populated, click **Send**.

### **Manual Provisioning:**

1. ​Set Apple ID (Your App Store account's email, it does not need to be the same as your Thunkable account's email)
2. ​Click the **Next** button.

​**Register app**​

1. ​Input your **App Name**, **Team ID**, and **Bundle ID** from when you completed these steps: Register Your App with Apple.
2. Click **Next**.

### Create an iOS Distribution Certificate <a href="#create-an-ios-distribution-certificate" id="create-an-ios-distribution-certificate"></a>

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 <a href="#create-an-a-d-hoc-provisioning-profile" id="create-an-a-d-hoc-provisioning-profile"></a>

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.
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 <a href="#review-app-information" id="review-app-information"></a>

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 <a href="#download-ios-app" id="download-ios-app"></a>

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.
3. Select your preferred browser.
4. Click **Download**.
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.
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 <a href="#troubleshooting" id="troubleshooting"></a>

#### App Cannot be Built <a href="#app-cannot-be-built" id="app-cannot-be-built"></a>

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.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://aidocs.thunkable.com/downloading/ios-downloading.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
