In mobile development, uni-app is widely used for its cross-platform capabilities, but publishing on iOS has always been a headache for Windows users. This article takes Windows environment as an example, combined with the AppUploader tool, to detail the complete process from preparing certificates to uploading to the App Store.

1. Preparation

  1. Apple Developer Account
    • You need to pay $99/year for the Apple Developer Program.
    • Free accounts cannot upload to the App Store, only for testing.
  2. uni-app Project
    • Ensure the code is ready for packaging, H5 pages or Vue project compiled.
    • Configure manifest.json with the correct Appid and app name.
  3. AppUploader Tool
    • Used on Windows to manage certificates, provisioning profiles, Bundle IDs, and IPA uploads.
    • Can replace Xcode for iOS publishing operations.

2. Create Bundle ID

  1. Open AppUploader → “Bundle ID Management”
  2. Click Add, enter a unique Bundle ID (e.g., com.company.myapp)
  3. Ensure it matches the AppID in manifest.json, otherwise packaging will fail.

bid

The Bundle ID is the unique identifier for your app in the Apple ecosystem, and it is bound to provisioning profiles and certificates.

3. Create Certificates

In Windows environment, you can directly use AppUploader to quickly generate certificates without Keychain:

  1. Go to Certificate Management → Click New Certificate
  2. Choose certificate type:
    • iOS App Development → For test installation
    • iOS Distribution → For App Store upload
  3. Set certificate name and password (for P12 file), save the P12 file.

New Certificate

AppUploader supports synchronizing certificates across different computers, solving cross-machine issues.

4. Generate Provisioning Profile

  1. Open Provisioning Profile Management → Click Add Provisioning Profile
  2. Choose type:
    • Development: For development/test IPA
    • App Store: For release
  3. Bind the previously created certificate and Bundle ID
  4. If Development type, select test device UDIDs
  5. Download the generated .mobileprovision file

Provisioning Profile

Provisioning profiles must match the certificate and Bundle ID, otherwise packaging and installation will fail.

5. Package uni-app Project

In HBuilderX:

  1. Open project → PublishNative App-Cloud Packaging → iOS
  2. Fill in:
    • AppID (must match Bundle ID)
    • Version number and build number
  3. Upload certificate and provisioning profile (P12 and mobileprovision generated by AppUploader)
  4. Generate IPA file

uni-app packaging

The build number must be incremented each time you upload to the App Store, otherwise it will be rejected.

6. Test Installation (Optional)

  1. Development certificate:

    • Install IPA via USB or QR code scanning
    • The device must be added to the provisioning profile
    • Trust the developer certificate (Settings → General → Device Management)
  2. Distribution certificate:

    • Before uploading to App Store, you can use TestFlight for internal testing

Test installation can identify signature or provisioning profile issues early.


7. Upload to App Store

Use AppUploader CLI (Windows/Linux/Mac):

appuploader_cli upload -f myapp.ipa -u user@apple.com -p xxxx-xxxx-xxxx-xxxx --type ios

Parameter description:

Parameter Description
-f Specify IPA file
-u Apple developer account
-p App Store specific password
--type ios Specify upload type

After upload, Apple will send a review email; you can check the status in App Store Connect.
If you encounter Metadata validation failed: Deprecated Transporter usage error, use AppUploader’s new channel to upload.

8. Notes

  1. Certificates and Provisioning Profiles
    • Ensure Distribution certificate matches App Store type provisioning profile
    • Development certificate is for testing, includes device UDIDs
  2. Bundle ID
    • Must be consistent across packaging, provisioning profile, and Apple Developer backend
  3. Version Numbers
    • App Store upload requires incrementing the version number or build number for each submission
  4. Network Environment
    • Use a stable network or mobile hotspot when uploading to avoid timeouts

The entire process requires no Xcode or Mac, enabling iOS publishing, especially suitable for small teams or Windows environment developers.