技术咨询:如何在App Store外发布iOS应用?
Hey there! Let's walk through the main methods to distribute iOS apps outside the App Store—since you mentioned trusting certificates, that’s a core part of most non-store distribution workflows. Here’s a breakdown of each approach, how they work, and what you need to get started:
Ad Hoc Distribution (For Limited Testing)
This method is ideal for sharing your app with a small group of testers (up to 100 devices per year, linked to your Apple Developer Account).
- Prerequisites: An active Apple Developer Program account ($99/year), the
UDIDs of all test devices, and your app’s code signed with an Ad Hoc provisioning profile. - Steps:
- In the Apple Developer Portal, create an Ad Hoc provisioning profile and add the
UDIDs of your test devices to it. - Archive your app in Xcode, then export it as an
.ipafile using the "Ad Hoc" distribution option. - Distribute the
.ipafile to testers—you can send it directly, host it on a simple web page (with a corresponding.plistmanifest file for over-the-air installation), or use tools like Diawi. - Testers will need to: Install the app, then go to Settings > General > VPN & Device Management to trust your developer certificate before launching the app.
- In the Apple Developer Portal, create an Ad Hoc provisioning profile and add the
Enterprise Distribution (For Internal Company Use)
If you’re building an app for your company’s internal employees (no public distribution allowed), Enterprise Distribution is the way to go.
- Prerequisites: An Apple Developer Enterprise Program account ($299/year)—this lets you distribute to unlimited devices without needing individual
UDIDs. - Steps:
- Create an In-House provisioning profile in the Apple Developer Portal.
- Archive and export your app as an
.ipausing the "Enterprise" distribution option. - Host the
.ipaon your company’s internal server, intranet, or secure web page. Employees can download and install it directly via a link. - After installation, employees must trust your enterprise certificate in Settings > General > VPN & Device Management to use the app.
TestFlight Beta Testing (Apple-Official Non-Store Distribution)
While technically part of Apple’s ecosystem, TestFlight lets you share beta builds with both internal and external testers without listing on the App Store.
- Prerequisites: An Apple Developer Program account, and your app must pass a basic Apple review (for external testers).
- Steps:
- Upload your archived app to App Store Connect.
- Set up internal or external beta test groups in App Store Connect.
- Send invite links to testers—they’ll install the TestFlight app first, then download your beta build directly through it.
- Unlike other methods, testers don’t need to manually trust certificates (TestFlight handles this automatically once they accept the invite).
Third-Party "Alt Stores" (For Public Non-Store Apps)
Tools like AltStore let users install apps without going through the App Store, though this relies on personal Apple ID signing (or a paid developer account for longer validity).
- How it works:
- Users install AltServer on their computer, connect their iPhone, and use AltServer to sideload AltStore onto their device.
- Once AltStore is installed, users can browse and install third-party apps directly through it.
- Without a paid Apple Developer account, apps signed this way expire every 7 days—users will need to re-sign them via AltStore (connected to their computer) to keep using them. With a paid account, the signing validity extends to 1 year.
- Important note: Apple doesn’t officially endorse these tools, and there’s a risk of apps being revoked if they violate Apple’s guidelines. Also, users should only install apps from trusted sources to avoid security risks.
Key Reminders
- Always follow Apple’s Developer Program License Agreement—unauthorized public distribution outside the App Store can lead to your account being banned.
- Certificates and provisioning profiles have expiration dates (usually 1 year)—you’ll need to renew them and re-distribute updated builds when that happens.
内容的提问来源于stack exchange,提问作者Michel Marquês




