


















@@ -67,8 +67,9 @@ Release behavior:
6767- App Store release uses canonical `ai.openclawfoundation.app*` bundle IDs through a temporary generated xcconfig in `apps/ios/build/AppStoreRelease.xcconfig`.
6868- App Store release uses manual `Apple Distribution` signing with profile names pinned in `apps/ios/Config/AppStoreSigning.json`.
6969- Fastlane owns one-time Developer Portal setup, encrypted `match` signing sync to the repo/branch pinned in `apps/ios/Config/AppStoreSigning.json`, and release handling.
70-- App Store release also switches the app to `OpenClawPushTransport=relay`, `OpenClawPushDistribution=official`, `OpenClawPushAPNsEnvironment=production`, `OpenClawPushRelayProfile=production`, `OpenClawPushProofPolicy=appleStrict`, and the App-Attest-capable entitlement file.
70+- App Store release also switches the app to `OpenClawPushMode=appStore`, which derives relay transport, official distribution, the canonical production relay, production APNs, production relay profile, `appleStrict` proof, and the App-Attest-capable entitlement file.
7171- `pnpm ios:release:upload` generates App Store screenshots and uploads release notes before archiving and uploading the IPA.
72+- The release archive is validated before upload by inspecting the exported IPA's signed entitlements, embedded App Store profile, and push mode. The upload fails if the IPA is not an App Store production relay build.
7273- `pnpm ios:release` remains a compatibility alias for `pnpm ios:release:upload`; prefer the explicit upload command in new release docs and automation.
7374- App Review submission is manual in App Store Connect. The release lane uploads a build and metadata, but does not submit for review.
7475- The release flow does not modify `apps/ios/.local-signing.xcconfig` or `apps/ios/LocalSigning.xcconfig`.
@@ -83,9 +84,8 @@ Release behavior:
83848485Relay behavior for App Store builds:
858686-- Release builds default to `https://ios-push-relay.openclaw.ai`.
87-- Optional custom relay override: `OPENCLAW_PUSH_RELAY_BASE_URL=https://relay.example.com`
88- This must be a plain `https://host[:port][/path]` base URL without whitespace, query params, fragments, or xcconfig metacharacters.
87+- App Store release builds use the canonical hosted relay at `https://ios-push-relay.openclaw.ai`.
88+- App Store release builds reject custom relay URL overrides. Future self-hosted relay support should use a separate explicit release path, not the public App Store build lane.
89899090Signing setup commands:
9191@@ -162,41 +162,36 @@ This should create `apps/ios/fastlane/.env` with non-secret App Store Connect va
162162163163 Use `pnpm ios:release:signing:setup` for the initial portal setup, then `MATCH_PASSWORD=... pnpm ios:release:signing:sync:push` to publish encrypted Fastlane match assets to the shared private repo.
164164165-4. Optional: set a custom official relay URL for the build. If unset, the release flow uses `https://ios-push-relay.openclaw.ai`.
166-167-```bash
168-export OPENCLAW_PUSH_RELAY_BASE_URL=https://relay.example.com
169-```
170-171-5. If you are starting a brand-new production release train, pin iOS to the current gateway version first:
165+4. If you are starting a brand-new production release train, pin iOS to the current gateway version first:
172166173167```bash
174168pnpm ios:version:pin -- --from-gateway
175169```
176170177-6. Upload the build:
171+5. Upload the build:
178172179173```bash
180174pnpm ios:release:upload
181175```
182176183-7. Expected behavior:
177+6. Expected behavior:
184178- Fastlane reads `apps/ios/version.json`
185179- verifies synced iOS versioning artifacts
186180- resolves the next App Store Connect build number for that short version
187181- generates deterministic App Store screenshots
188182- uploads release notes and screenshots to the editable App Store version
189183- generates `apps/ios/build/AppStoreRelease.xcconfig`
190184- archives `OpenClaw`
185+- validates the exported IPA's push mode, signed entitlements, and embedded App Store profile
191186- uploads the IPA to App Store Connect for TestFlight/App Review use
192187- leaves App Review submission for a maintainer to complete manually
193188194-8. Expected outputs after a successful run:
189+7. Expected outputs after a successful run:
195190- `apps/ios/build/app-store/OpenClaw-<version>.ipa`
196191- `apps/ios/build/app-store/OpenClaw-<version>.app.dSYM.zip`
197192- Fastlane log line like `Uploaded iOS App Store build: version=<version> short=<short> build=<build>`
198193199-9. If this is a fresh clone on a maintainer machine that already works elsewhere, it is OK to copy the non-secret `apps/ios/fastlane/.env` from another trusted local clone on the same Mac. The Keychain-backed private key remains machine-local and is not stored in the repo.
194+8. If this is a fresh clone on a maintainer machine that already works elsewhere, it is OK to copy the non-secret `apps/ios/fastlane/.env` from another trusted local clone on the same Mac. The Keychain-backed private key remains machine-local and is not stored in the repo.
200195201196## iOS Versioning Workflow
202197@@ -246,13 +241,13 @@ See `apps/ios/VERSIONING.md` for the detailed spec.
246241- `apps/ios/Sources/OpenClaw.entitlements` derives `aps-environment` from the active build configuration/signing override.
247242- App Attest relay builds use `apps/ios/Sources/OpenClawAppAttest.entitlements`; local/direct builds do not require App Attest provisioning.
248243- APNs token registration to gateway happens only after gateway connection (`push.apns.register`).
249-- Local/manual builds default to `OpenClawPushTransport=direct`, `OpenClawPushDistribution=local`, and a development `aps-environment` entitlement.
244+- Local/manual Debug builds default to `OpenClawPushMode=localSandbox`, direct APNs registration, and a development `aps-environment` entitlement. Local/manual Release builds default to `OpenClawPushMode=localProduction` and direct production APNs registration.
250245- Your selected team/profile must support Push Notifications for the app bundle ID you are signing.
251246- If push capability or provisioning is wrong, APNs registration fails at runtime (check Xcode logs for `APNs registration failed`).
252247- The gateway host also needs direct APNs auth configured separately with `OPENCLAW_APNS_TEAM_ID`, `OPENCLAW_APNS_KEY_ID`, and either `OPENCLAW_APNS_PRIVATE_KEY_P8` or `OPENCLAW_APNS_PRIVATE_KEY_PATH`.
253248- Recommended gateway-host storage for the APNs `.p8` file is `~/.openclaw/credentials/apns/AuthKey_<KEYID>.p8` with restrictive permissions, then point `OPENCLAW_APNS_PRIVATE_KEY_PATH` at that file.
254249- `apps/ios/fastlane/.env` only covers App Store Connect / Fastlane auth; it does not provide gateway APNs credentials for local direct-push testing.
255-- Debug builds default to `OpenClawPushAPNsEnvironment=sandbox`; Release builds default to `production`.
250+- Debug builds default to sandbox APNs through `OpenClawPushMode=localSandbox`; Release builds default to production APNs through `OpenClawPushMode=localProduction`.
256251257252## APNs Expectations For Official Builds
258253@@ -261,7 +256,7 @@ See `apps/ios/VERSIONING.md` for the detailed spec.
261256- The relay registration is bound to the gateway identity fetched from `gateway.identity.get`, so another gateway cannot reuse that stored registration.
262257- The app persists the relay handle metadata locally so reconnects can republish the gateway registration without re-registering on every connect.
263258- If the relay base URL changes in a later build, the app refreshes the relay registration instead of reusing the old relay origin.
264-- Production relay mode uses the `production` relay profile, production APNs, App Attest, and a StoreKit app transaction JWS during registration.
259+- App Store release mode uses the internal `production` relay profile, production APNs, App Attest, and a StoreKit app transaction JWS during registration.
265260- Gateway-side relay sending is configured through `gateway.push.apns.relay.baseUrl` in `openclaw.json`. `OPENCLAW_APNS_RELAY_BASE_URL` remains a temporary env override only.
266261267262## Official Build Relay Trust Model
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。