2026-07-15 16:45:10 +05:30
|
|
|
|
# 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`](../codemagic.yaml) (repo root).
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
2026-07-16 14:34:46 +05:30
|
|
|
|
## Step 0 — Register the App ID (Identifiers → + → App IDs → App)
|
|
|
|
|
|
On the **Register an App ID** page, only three fields matter — leave everything else default:
|
|
|
|
|
|
- **Platform**: leave as-is (the default `iOS, iPadOS, macOS…` combined App ID is fine).
|
|
|
|
|
|
- **Description**: `Biz Connect` (label only; no `@ & * "`).
|
|
|
|
|
|
- **Bundle ID**: keep **Explicit** → `com.bizgaze.connect`.
|
|
|
|
|
|
- **Capabilities**: tick **Push Notifications** only. Leave all others unchecked. (Camera/mic are NOT
|
|
|
|
|
|
here — they're Info.plist runtime strings, added by the build pipeline.)
|
|
|
|
|
|
- Continue → Register. *(The App ID Prefix shown is your Team ID — note it for Step 5's APNs.)*
|
|
|
|
|
|
|
2026-07-15 16:45:10 +05:30
|
|
|
|
## Step 1 — App Store Connect: create the app record
|
|
|
|
|
|
1. [appstoreconnect.apple.com](https://appstoreconnect.apple.com) → **Apps → +** → **New App**.
|
|
|
|
|
|
2. Platform **iOS**, Name **Biz Connect**, primary language, **Bundle ID** = `com.bizgaze.connect`
|
2026-07-16 14:34:46 +05:30
|
|
|
|
(the App ID you registered in Step 0 now appears in the dropdown).
|
2026-07-15 16:45:10 +05:30
|
|
|
|
3. SKU: anything unique (e.g. `bizconnect-ios`). Create.
|
|
|
|
|
|
|
|
|
|
|
|
## Step 2 — App Store Connect API key (for Codemagic to sign + upload)
|
|
|
|
|
|
1. App Store Connect → **Users and Access → Integrations → App Store Connect API** → **+**.
|
|
|
|
|
|
2. 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
|
|
|
|
|
|
1. [codemagic.io](https://codemagic.io) → sign in with the git provider → add this repository.
|
|
|
|
|
|
2. **Teams → Integrations → App Store Connect → Connect**, upload the `.p8`, paste the **Issuer ID** and
|
|
|
|
|
|
**Key ID**. **Name it exactly `BizGaze App Store Connect`** (the `codemagic.yaml` references that name).
|
|
|
|
|
|
3. 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**:
|
|
|
|
|
|
1. 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).
|
|
|
|
|
|
2. **Send me**: the `.p8` contents, the **Key ID**, and the **Team ID**. I set these in the server `.env`
|
|
|
|
|
|
(server-side only, like the LiveKit/Giphy keys):
|
|
|
|
|
|
```
|
|
|
|
|
|
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
|
|
|
|
|
|
```
|
|
|
|
|
|
The APNs sender is already built into the server — it's a no-op until these are set.
|
|
|
|
|
|
|
|
|
|
|
|
## 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.
|