Bring managed iOS client to feature parity
.NET port / test (macos-latest) (push) Canceled after 0s
.NET port / test (ubuntu-24.04) (push) Canceled after 0s
.NET port / test (windows-latest) (push) Canceled after 0s
.NET port / apple-client (push) Canceled after 0s
.NET port / cpp-conformance (push) Canceled after 0s
.NET port / test (macos-latest) (push) Canceled after 0s
.NET port / test (ubuntu-24.04) (push) Canceled after 0s
.NET port / test (windows-latest) (push) Canceled after 0s
.NET port / apple-client (push) Canceled after 0s
.NET port / cpp-conformance (push) Canceled after 0s
This commit is contained in:
@@ -26,6 +26,23 @@ The iOS build first stages static device and simulator Opus/RNNoise archives, th
|
||||
dotnet build clients/apple/dotnet/VoiceCat.iOS/VoiceCat.iOS.csproj -c Debug -r iossimulator-arm64
|
||||
```
|
||||
|
||||
For a physical device, use the checked-in build and deployment wrappers. The iPhone must be
|
||||
paired and trusted, and Xcode must have an Apple Development identity and provisioning profile
|
||||
for both `me.iamtalon.voicecat` and `me.iamtalon.voicecat.broadcast`. Let automatic signing
|
||||
select them, or set `VOICECAT_CODESIGN_KEY` and `VOICECAT_CODESIGN_PROVISION` before building.
|
||||
|
||||
```bash
|
||||
clients/apple/dotnet/build-ios-device.sh --configuration Debug
|
||||
clients/apple/dotnet/deploy-ios-device.sh --list
|
||||
clients/apple/dotnet/deploy-ios-device.sh --device "My iPhone" --configuration Debug --console
|
||||
```
|
||||
|
||||
The build stages the verified app at `dist/ios-managed-device/VoiceCat.iOS.app`. Pass
|
||||
`--no-build` to the deployment script for quick reinstall cycles. On iOS 18–26, screen audio
|
||||
uses the retained ReplayKit extension. On iOS 27 and newer, the host uses a small dynamically
|
||||
loaded ScreenCaptureKit bridge and writes the same versioned ring; this keeps one managed consumer and
|
||||
allows the app to remain launchable on older supported systems.
|
||||
|
||||
Profiles, TOFU state, passwords and the ReplayKit ring use the signed App Group `group.me.iamtalon.voicecat`; the managed client migrates the old app-private profile files on first use. The shared ring ABI is frozen in [`docs/broadcast-ring-format.md`](../../../docs/broadcast-ring-format.md).
|
||||
|
||||
The native build stages an `osx-arm64` `libvoicecat_media.dylib`; that shim contains only Opus/RNNoise. Debug builds deliberately omit hardened runtime so an ad-hoc-signed local app can load the separately ad-hoc-signed .NET runtime libraries without an Apple Development identity. Release builds retain hardened runtime for Developer ID signing and notarization. Only a macOS host can link, launch, grant microphone access and verify live devices. Final audio quality is validated with real multi-human calls after the feature surface is complete; a synthetic ten-minute sine-wave listen is deliberately not a release gate.
|
||||
|
||||
Reference in New Issue
Block a user