Apple iOS Distribution
Vidori builds your iOS and iPadOS app, signs it, and uploads it to TestFlight. You need an Apple Developer account and one App Store Connect API key. You don’t need a Mac, a signing certificate or a provisioning profile: the build creates and manages those for you.
Before starting, make sure you’ve completed the shared Prerequisites in App Configuration.
1. Enroll in the Apple Developer Program
Section titled “1. Enroll in the Apple Developer Program”If you haven’t already, enroll at developer.apple.com/programs. The annual membership ($99/year) is required to distribute apps through TestFlight and the App Store.
2. Create an App ID
Section titled “2. Create an App ID”An App ID (bundle identifier) uniquely identifies your app. Apple asks for it when you create the app in the next step.
-
Click the + button to register a new identifier
-
Select App IDs and click Continue
-
Select App as the type and click Continue
-
Enter a Description (e.g., “My Streaming App”) and an Explicit Bundle ID (e.g.,
com.yourcompany.yourapp) -
Click Register
You can leave the capabilities as they are. The build turns on the ones the app needs (Push Notifications, Associated Domains and Access Wi-Fi Information).
3. Create the app in App Store Connect
Section titled “3. Create the app in App Store Connect”This is the one Apple step that can’t be automated: Apple doesn’t allow an app to be created through its API.
-
Click the + button and select New App
-
Select iOS as the platform. Also select tvOS if you plan to publish an Apple TV app.
-
Enter the app’s Name and Primary Language
-
Under Bundle ID, choose the App ID you registered in step 2
-
Enter an SKU (any reference of your own, e.g.,
yourapp-ios) and click Create
4. Create an App Store Connect API Key
Section titled “4. Create an App Store Connect API Key”The API key lets the build sign your app and upload it to TestFlight.
-
Go to appstoreconnect.apple.com/access/integrations/api (Users and Access → Integrations → App Store Connect API)
-
On the Team Keys tab, click the + button to generate a new key. If this is your first key, the Account Holder has to click Request Access first.
-
Enter a name (e.g., “Vidori builds”) and select the Admin role
-
Click Generate
-
Download the
.p8key file immediately. You can only download it once. Keep the name Apple gives it (AuthKey_XXXXXXXXXX.p8). -
Copy the Issuer ID shown at the top of the page
5. Enter Your Apple Settings
Section titled “5. Enter Your Apple Settings”In the admin panel, go to App Studio → Distribution → iOS:
| Setting | Value | Example |
|---|---|---|
| Bundle ID | The bundle identifier registered in step 2 | com.yourcompany.yourapp |
| API Key Issuer ID | The Issuer ID from step 4 | 12345678-... |
| API key (.p8 file) | The key file downloaded in step 4 | AuthKey_ABC1234DEF.p8 |
The Key ID is read from the file name. If you renamed the file, an API Key ID field appears: enter the Key ID shown next to the key in App Store Connect.
Upload the iOS icon and splash logo on the same page.
6. Verify and Build
Section titled “6. Verify and Build”-
Click Verify. Within a few seconds it checks your settings with Apple and changes nothing in your Apple account:
Check What it confirms API key file The uploaded file is an App Store Connect API key Apple accepts the key The Key ID, Issuer ID and .p8file belong togetherApp record for the Bundle ID The app from step 3 exists Access to signing certificates The key’s role is high enough to sign the app -
Fix anything that failed. Each failed check says what to change.
-
Click Build.
A build takes about 20–30 minutes. During the build, Vidori:
- turns on the capabilities your App ID needs;
- creates an Apple Distribution certificate the first time, stores it, and reuses it for later builds;
- fetches the provisioning profile;
- sets the version and build number;
- uploads the app to TestFlight.
7. Test in TestFlight
Section titled “7. Test in TestFlight”After the upload, Apple processes the build, which usually takes a few minutes. The Distribution page follows it for you and shows the build number and its TestFlight status:
| Status | Meaning |
|---|---|
| Uploaded, waiting for Apple | The upload finished and Apple is processing the build |
| Missing Export Compliance | Apple is waiting for the export compliance answer for this build. Provide it in TestFlight. |
| Processing Failed | Apple could not process the build. The reason is shown in TestFlight and emailed to the Account Holder. |
| Expired | The build is older than 90 days and can no longer be installed |
Click Open TestFlight to go to the app’s TestFlight page in App Store Connect. To install the build:
-
In App Store Connect, open the TestFlight tab of your app
-
Under Internal Testing, create a group and add testers (they must be users of your App Store Connect team)
-
Each tester installs the TestFlight app on their iPhone or iPad and accepts the email invitation
Apple TV
Section titled “Apple TV”The Apple TV app uses the same Bundle ID and API key as the iOS app.
-
Go to App Studio → Distribution → AppleTV
-
Upload the three tvOS images (app banner and the two Top Shelf images)
-
Turn on Enabled
The next Apple build then builds the Apple TV app as well and uploads it to TestFlight together with the iOS app. A build with Apple TV takes about 50 minutes.
Troubleshooting
Section titled “Troubleshooting””Bundle ID is required for Apple distribution”
Section titled “”Bundle ID is required for Apple distribution””The Bundle ID has not been set. Go to App Studio → Distribution → iOS and enter your Bundle ID (e.g., com.yourcompany.yourapp). See step 2 above.
”Apple rejected the API key”
Section titled “”Apple rejected the API key””The Key ID, Issuer ID and .p8 file don’t belong together, or the key was revoked. Check that:
- the Issuer ID matches the one at the top of the App Store Connect API page;
- the
.p8file still has the name Apple gave it, or the Key ID you entered matches the key; - the key is still listed as active in App Store Connect.
”The uploaded file is not an App Store Connect API key”
Section titled “”The uploaded file is not an App Store Connect API key””Upload the .p8 file exactly as downloaded from App Store Connect. If you no longer have it, revoke the key and create a new one.
”App Store Connect has no app with the Bundle ID” / “There is no app for … in App Store Connect yet”
Section titled “”App Store Connect has no app with the Bundle ID” / “There is no app for … in App Store Connect yet””The app from step 3 doesn’t exist yet, or it was created with a different Bundle ID. Create it, then verify or build again.
”The API key is not allowed to create a distribution certificate” / “The API key cannot read signing certificates and provisioning profiles”
Section titled “”The API key is not allowed to create a distribution certificate” / “The API key cannot read signing certificates and provisioning profiles””The key’s role is too low. A key’s role can’t be changed: create a new key with the Admin role and upload it.
”Apple will not issue another distribution certificate for this team”
Section titled “”Apple will not issue another distribution certificate for this team””Apple limits how many distribution certificates a team can have, and your team has reached the limit with certificates created outside Vidori. Revoke an unused Apple Distribution certificate at developer.apple.com/account/resources/certificates and start the build again. Revoking a certificate doesn’t affect apps already on the App Store or in TestFlight.