Shipping the video channel's iOS build to the App Store

The panel hands you a self-contained Xcode project for the channel's iPhone and iPad player. Apple only accepts builds archived in Xcode on macOS, so the last mile runs on a Mac: sign with your team, archive, upload to App Store Connect, then get through App Review, where a single-channel player needs a well-prepared submission.

  • Apple Developer Program: $99 a year
  • Xcode 26 or later, on macOS
  • iOS 16 and later, iPhone and iPad

Labels follow Xcode 26 and App Store Connect as of 2026. Apple renames screens between releases; each step states what the screen is for.

1. Enrol in the Apple Developer Program

  1. Enrol at developer.apple.com/programs with an Apple Account the channel controls for the long term.
  2. Individual lists your personal name as the seller; organization lists the legal entity and requires its D-U-N-S number.
  3. Pay the $99 annual fee; approval takes a few days, typically longer for organizations.

Guideline 4.2.6: apps generated from a template are rejected unless the content provider submits them. Submitting from the channel owner's account is the compliant path, which is why the panel never submits for you.

2. Prepare the Mac

  1. Install Xcode from the Mac App Store, free.
  2. Xcode 26 or later is mandatory: App Store Connect refuses uploads built against an SDK older than iOS 26.
  3. Add the developer account under Xcode → Settings → Accounts so automatic signing can issue certificates and profiles.

The Mac is needed only to archive and upload. A rented cloud Mac works if it runs a current Xcode and you sign in with your own Apple Account.

3. Open the project and set the team

  1. Run an iOS build in the panel and download the Xcode project (.zip); extract it.
  2. Open StationApp.xcodeproj. Nothing is fetched: no CocoaPods, no Swift packages.
  3. Select the StationApp target, then Signing & Capabilities.
  4. Leave Automatically manage signing on and pick your Team (preselected when the Apple Team ID was entered in the panel). The bundle identifier comes from Config/Station.xcconfig; Xcode registers it as an App ID on your team.

Do not edit Config/Station.xcconfig or the build settings by hand. The generator writes them on every build, so local edits are lost and diverge from the panel.

4. Create the App Store Connect record

  1. At appstoreconnect.apple.com: Apps → + → New App.
  2. Platform iOS, a name of at most 30 characters, the primary language.
  3. Pick the bundle ID registered in step 3 and enter a SKU (internal reference, never displayed).

Bundle ID absent from the menu: register it under Certificates, Identifiers & Profiles → Identifiers on developer.apple.com, copying the panel's value exactly.

5. Archive and upload the build

  1. Run destination: Any iOS Device (arm64).
  2. Product → Archive; the Organizer opens on the archive.
  3. Distribute App → App Store Connect with the default options.
  4. Wait for processing; Apple emails when the build is available.

Export compliance: ITSAppUsesNonExemptEncryption is NO in the Info.plist, so processed builds skip the encryption question.

6. Complete the listing metadata

  1. App Information: subtitle (optional) and primary category, usually Entertainment (News or Sports where they fit better). For content rights, declare what the channel airs; the panel's rights statement already commits you to holding those rights.
  2. Pricing and Availability: free tier, your territories.
  3. App Privacy: the generated privacy policy URL, then "does not collect data". The listing shows Data Not Collected, consistent with the privacy manifest in the build.
  4. Version metadata: description, keywords, support URL, copyright, the processed build. Describe native capabilities explicitly: fullscreen playback, picture in picture, AirPlay, background audio, auto-start on air.
  5. Screenshots: the device family is iPhone and iPad, so both sets are required. With the channel live, run the app in Simulator on the largest iPhone and iPad and capture with File → Save Screen.
  6. Age rating: Apple's questionnaire, answered for your programming.

The App Store icon is taken from the build's asset catalogue; there is no separate upload.

7. Give App Review a stream to watch

Off air, the player shows the "We'll be live soon" slate and re-polls the feed until the stream is back, then starts on its own. A reviewer testing in a gap sees an app with no content, which tends to end as a guideline 2.1 (completeness) rejection.

  1. Run a continuous signal for the review window if at all possible, such as a recorded programme looped from the encoder.
  2. If not, state the live hours with time zone in the review notes and hold to them until a decision arrives.
  3. Attach a short screen recording of the app playing the channel under App Review Information as a fallback.

8. Brief App Review on minimum functionality

Single-stream players are a known trigger for guideline 4.2 (minimum functionality). The build is native (system player, no web view), and the notes should make that evident.

  1. Enter a reachable contact; untick Sign-in required (no accounts, no demo credentials).
  2. Notes: the channel's official app, submitted by the content owner; native AVKit fullscreen playback, picture in picture, AirPlay, background audio, share sheet, and contact actions (email, phone, WhatsApp, website, socials) driven by the channel profile.
  3. Point the reviewer to the background-sound toggle on the channel page, directly below the player: together with picture in picture, it is what the audio background mode is declared for.
  4. Have rights documentation ready: Apple can request proof that you may distribute the programming (guideline 5.2).

A sparse channel profile makes a sparse app. Fill in the description, logo, website, socials and contact details before review; the app reads them live.

9. Submit and handle the response

  1. Add for Review, then Submit to App Review.
  2. Most reviews conclude within a few days.
  3. A 4.2 or 2.1 rejection is usually resolved by replying in App Store Connect with the content-owner statement, the feature list and the live schedule. If the reply is not accepted, the App Review Board appeal is the next step.
  4. On approval, release manually or automatically.

Updates: stream, description, logo and links come from the live feed and need no version. Name or icon changes need a rebuild in the panel, archive and upload as in step 5, and a new App Store version.