TestFlight — Eric's Drop to Phone (iOS)

For the paid App Store walkthrough (Plan B), use APP_STORE.md. This page is only CI / Match / the one-time listing fields.

CI uploads to TestFlight with Fastlane Match and an App Store Connect API key.

Apple Developer bundle ID com.droptophone.app is registered (VHJS6KRH8K, team 528M2RYVHB). Also register com.droptophone.app.share (Share Extension) and App Group group.com.droptophone.app on both App IDs. The App Store Match profile exists for the main app; add a profile for the extension before a signed archive (Actions → Deploy to TestFlight → bootstrap_match).

Uploads to TestFlight on every main push when TESTFLIGHT_ENABLED is true. Submitting that build for App Review (public store) also needs APP_STORE_SUBMIT = true, and the Connect listing (screenshots, privacy labels) must already be filled. Apple still has to approve; CI cannot skip review.

Apple's API cannot create the App Store Connect listing (POST /v1/apps is forbidden). Create that once in the website, then CI can upload.

One-time App Store Connect listing

  1. Open App Store Connect → My Apps → + → New App.
  2. Platforms: iOS
  3. Name: Eric's Drop to Phone (or a unique variant if taken)
  4. Primary language: English (US)
  5. Bundle ID: com.droptophone.app
  6. SKU: droptophone-ios-1
  7. Privacy policy URL: https://droptophone.welchsoftware.net/PRIVACY_POLICY.html

GitHub Actions

Secret Purpose
ASC_KEY_ID App Store Connect API key id
ASC_ISSUER_ID App Store Connect issuer
ASC_PRIVATE_KEY .p8 contents
MATCH_PASSWORD Encrypts the Match certs git repo
MATCH_GIT_DEPLOY_KEY SSH deploy key for the certs repo
MATCH_GIT_BASIC_AUTH PAT fallback for the certs repo
GH_WORKFLOW_PAT Lets a manual dev → main promote (Actions → Promote dev → main)

Match git URL is in src/DropToPhone.iOS/fastlane/Matchfile.

Repo variable TESTFLIGHT_ENABLED: when true, pushes to main run .github/workflows/testflight.yml. Manual runs (Actions → Deploy to TestFlight) still work while it is false.

Repo variable APP_STORE_SUBMIT: when true, the same job waits for processing and submits the build for App Review with automatic release after Apple approves. Leave it false until listing + privacy labels + reviewer notes exist (see APP_STORE.md steps 9–12).

dev does not auto-merge to main. Promote when you want the production Windows zip, site, TestFlight, and (if the variables above are on) store submission.

First Match profile (once): Actions → Deploy to TestFlight → Run workflow → enable bootstrap_match.

Local Xcode (device)

cd ~/DropToPhone
git pull
open src/DropToPhone.iOS/DropToPhone.xcodeproj

Select your iPhone → Signing & Capabilities → Team → Run.