DEV Community

iPhoneTechie
iPhoneTechie

Posted on

Detailed Analysis: Complete Guide to Publishing iOS Apps on the App Store

A couple of weeks ago, I helped a cross-platform app team with their App Store release. The code, packaging, and testing were all done, but we got stuck on the last step: how to get the IPA to the App Store. Nobody on the team had used a Mac, and many articles we read assumed you already have Xcode. That step is actually not that difficult. If you break down the complete iOS App Store publishing process, it comes down to registering an account, creating certificates, creating provisioning profiles, configuring Bundle IDs, packaging, uploading, and waiting for review. Each stage has clear steps, and I will walk through them in order below.

Registering a Developer Account

Registering a developer account is the first step. Both individual and company accounts cost $99 per year. To register, log in to the Apple Developer website with your Apple ID and agree to the agreement, and the account will be activated. Company accounts also require a D-U-N-S number. A free account can create development certificates and run internal testing, but it cannot submit or publish, and it cannot use capabilities such as Sign in with Apple, payments, or push notifications. To publish officially, you must upgrade to a paid account.

Creating Certificates

Certificates are the ticket for packaging and publishing. There are two types: development certificates (iOS App Development) and distribution certificates (iOS Distribution). The generated files are in P12 format. On a Mac, you would open Keychain Access and request a Certificate Signing Request file, then upload it to the developer portal. With Appuploader, a cross-platform team can generate certificates directly on Windows by entering a certificate name, email, and password, without touching the Keychain. The certificate can also be synced to different computers, saving considerable effort in team collaboration. Note that the certificate password must be remembered, because it is used as the private-key password for packaging and signing. If you forget it, you have no choice but to regenerate the certificate.

Creating Certificates

Creating Provisioning Profiles

A provisioning profile binds together the app, certificates, and devices. Select the App Store type for distribution, or the Development type for development and testing. Before creating a profile, you must have a Bundle ID. Each app corresponds to one provisioning profile, while multiple apps can share one certificate. When creating a Development type profile, add your test devices to the profile; otherwise, compiled apps cannot be installed on phones. A typical error is caused by devices not being associated—just update the provisioning profile and recompile.

Packaging the IPA

During packaging, Xcode users can directly Archive and export the IPA. Cross-platform projects can also be packaged with tools such as HBuilder and Flutter; the output is still an IPA file. The key is to select the correct certificate and provisioning profile for signing, and to enter the P12 private-key password when packaging.

Packaging IPA

Uploading to App Store

Uploading is where many people get stuck. Xcode offers Organizer for uploads, and macOS has Application Loader, but both depend on a Mac environment. Appuploader can upload directly from Windows, Linux, and macOS: select the IPA file, set an App-Specific Password (not your Apple account password; generate it in Account Security at appleid.apple.com), and then choose an upload channel (1, 2, 3, or the legacy channel). If the network is restricted, switch to another channel or retry with a mobile hotspot. Command-line users can also upload with appuploader_cli, passing the account, App-Specific Password, and IPA path as parameters, which makes it suitable for integrating into release scripts; after the flow is fixed, release can be fully automated.

Submitting for Review

There are two common pitfalls during upload. One is ERROR ITMS-90189, which means the version number is duplicated. Check whether the build version collides with a previously uploaded build, change to an incremented version number, then rebuild and upload again. The other is that, after uploading successfully, the build version does not appear in App Store Connect for a while. Wait a few minutes and refresh the page, or verify that the account used for uploading is the same one that created the app record; mismatched accounts also prevent the build version from showing.

Submitting for Review

Once the version appears, you can first run a round of TestFlight internal testing, then fill in the review information and submit. The review period is unpredictable: the quickest can take one or two days, and the slowest can take a week. Before submission, prepare materials such as the privacy policy URL, test accounts, and permission usage descriptions, which can save several rounds of rejection and rework.

Looking at the entire iOS App Store publishing process, there is no stage that truly requires a Mac—packaging is done in cross-platform tools, and certificates, provisioning profiles, and uploads all have cross-platform counterparts. Once you decide on the tool set for each stage, subsequent releases are just repetitions of this pipeline after the first successful launch.

Top comments (0)