The iOS app is a Capacitor shell over the live web UI — the web/server side is already fully Capacitor-ready (nativePlatform() detects Capacitor; setupNativePush registers APNs tokens via /api/v1/devices; the APNs sender is built into server/push.js, config-gated). So this adds only the build/sign/upload path: - codemagic.yaml: macOS-cloud workflow that generates the iOS project, patches Info.plist, generates icons/splash, signs via an App Store Connect API key (automatic signing), archives, and uploads to TestFlight. No Mac required. - mobile/scripts/ios-patch.sh: adds the App-Review privacy usage strings (camera/mic/photos) + display name to the generated Info.plist. - mobile/IOS_SETUP.md: click-by-click runbook — ASC app record, API key, Codemagic integration, first build, APNs key → server .env, and the public-submission checklist. Bundle id com.bizgaze.connect. No secrets committed — Apple keys live in Codemagic + server .env. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
3.7 KiB
Biz Connect — iOS App Store setup (Codemagic, no Mac needed)
The iOS app is a Capacitor shell that loads the live Connect web UI (https://remote.bizgaze.com).
Building/signing/uploading happens on Codemagic's macOS cloud — you never need a Mac.
Bundle id: com.bizgaze.connect · CI config: codemagic.yaml (repo root).
Step 1 — App Store Connect: create the app record
- appstoreconnect.apple.com → Apps → + → New App.
- Platform iOS, Name Biz Connect, primary language, Bundle ID =
com.bizgaze.connect(if it isn't in the dropdown, first register it: developer.apple.com → Identifiers → + → App IDs → App →com.bizgaze.connect, and tick Push Notifications while you're there — needed for Step 5). - SKU: anything unique (e.g.
bizconnect-ios). Create.
Step 2 — App Store Connect API key (for Codemagic to sign + upload)
- App Store Connect → Users and Access → Integrations → App Store Connect API → +.
- Access App Manager. Generate. Note the Issuer ID (top of the page) and the key's Key ID,
and download the
.p8(you can only download it once).
Step 3 — Codemagic: connect + add the key
- codemagic.io → sign in with the git provider → add this repository.
- Teams → Integrations → App Store Connect → Connect, upload the
.p8, paste the Issuer ID and Key ID. Name it exactlyBizGaze App Store Connect(thecodemagic.yamlreferences that name). - Codemagic detects
codemagic.yaml. That's all the signing setup — automatic signing creates the distribution certificate + provisioning profile from this key on the first build.
Step 4 — Run the build
- Codemagic → the app → Start new build → workflow "Biz Connect iOS → TestFlight".
- ~10–15 min. On success the build appears in App Store Connect → TestFlight.
- Add yourself under TestFlight → Internal Testing to install via the TestFlight app on your iPhone.
Step 5 — Push notifications (APNs) — do this once, then tell me
So the app gets calls/messages while it's closed:
- developer.apple.com → Keys → + → enable Apple Push Notifications service (APNs) → download the
.p8. Note its Key ID and your Team ID (top-right of the developer portal). - Send me: the
.p8contents, the Key ID, and the Team ID. I set these in the server.env(server-side only, like the LiveKit/Giphy keys):The APNs sender is already built into the server — it's a no-op until these are set.APNS_KEY=<contents of the .p8> APNS_KEY_ID=<key id> APNS_TEAM_ID=<team id> APNS_BUNDLE_ID=com.bizgaze.connect APNS_PRODUCTION=1
Step 6 — Public App Store submission (when you're ready to leave TestFlight)
In App Store Connect, fill the listing: screenshots (6.7" + 6.1" iPhone), description, keywords,
support URL, and a Privacy Policy URL (required). Complete the App Privacy questionnaire (we
collect account info + usage for chat/calls). Then submit for review (or flip submit_to_app_store in
codemagic.yaml).
App Review note (Guideline 4.2 — "Minimum Functionality")
Apple scrutinises apps that look like "just a website". Ours passes because it ships real native capabilities — push notifications, camera/microphone for calls, photo sharing. Make sure push (Step 5) is live before the public submission, and in the reviewer notes mention the native video calling + screen sharing so it's obvious this is more than a web view. TestFlight builds are fine without push.