Keep managed iOS audio active in background
.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:
2026-09-19 20:09:00 +02:00
parent 9fc5598e8e
commit 42e3bbe14c
10 changed files with 112 additions and 15 deletions
+10 -2
View File
@@ -40,8 +40,16 @@ clients/apple/dotnet/deploy-ios-device.sh --device "My iPhone" --configuration D
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 1826, 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.
loaded ScreenCaptureKit bridge and writes the same versioned ring; the Settings row toggles
that capture on and off. This keeps one managed consumer and allows the app to remain launchable
on older supported systems.
While joined to voice, the active `PlayAndRecord` session and audio engine remain running when
the scene backgrounds or the device locks, which keeps microphone capture, peer playback and the
screen-audio pump eligible for the declared `audio` background mode. Foreground activation,
hardware route changes, audio interruptions and media-service resets revalidate or rebuild the
audio graph. Validate this behavior on hardware: iOS simulator lifecycle transitions do not prove
background execution, lock-screen routing or Bluetooth recovery.
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).