Stabilize iOS reconnect and screen audio sessions
This commit is contained in:
@@ -133,6 +133,42 @@ CoreDevice can also install the app successfully and then reject only the launch
|
||||
deployment; rebuilding is unnecessary. Occasional CoreDeviceService initialization timeouts while
|
||||
listing devices or processes do not imply that an already-confirmed install or launch failed.
|
||||
|
||||
## Simulator connection and audio gate
|
||||
|
||||
The Debug app has an opt-in simulator smoke gate. Start a local VoiceCat server and create an
|
||||
account named `smoke`, then build the `iossimulator-arm64` app. The simulator build needs an
|
||||
App Group entitlement for the saved-password and screen-ring checks; sign the built app
|
||||
ad hoc with `clients/apple/VoiceCat.iOS/Entitlements.plist` before installing it. A clean
|
||||
build avoids stale simulator AOT modules after managed code changes.
|
||||
|
||||
```bash
|
||||
dotnet restore clients/apple/VoiceCat.iOS/VoiceCat.iOS.csproj \
|
||||
-p:RuntimeIdentifier=iossimulator-arm64 -p:VoiceCatIosStatic=true --force-evaluate
|
||||
dotnet clean clients/apple/VoiceCat.iOS/VoiceCat.iOS.csproj -c Debug \
|
||||
-p:RuntimeIdentifier=iossimulator-arm64
|
||||
dotnet build clients/apple/VoiceCat.iOS/VoiceCat.iOS.csproj -c Debug --no-restore \
|
||||
-p:RuntimeIdentifier=iossimulator-arm64
|
||||
codesign --force --sign - --entitlements clients/apple/VoiceCat.iOS/Entitlements.plist \
|
||||
clients/apple/VoiceCat.iOS/bin/Debug/net10.0-ios27.0/iossimulator-arm64/VoiceCat.iOS.app
|
||||
xcrun simctl install booted \
|
||||
clients/apple/VoiceCat.iOS/bin/Debug/net10.0-ios27.0/iossimulator-arm64/VoiceCat.iOS.app
|
||||
```
|
||||
|
||||
Grant microphone access with `xcrun simctl privacy booted grant microphone
|
||||
me.iamtalon.voicecat`. Launch with `SIMCTL_CHILD_VOICECAT_SIM_SMOKE` set to
|
||||
`127.0.0.1:<port>:<smoke-account-password>` and
|
||||
`SIMCTL_CHILD_VOICECAT_SIM_SMOKE_MODE=share` using `xcrun simctl launch --console-pty booted
|
||||
me.iamtalon.voicecat`. The `share` mode checks that a stale ring stays unmapped, then exercises
|
||||
synthetic screen audio with the microphone off and during a voice call, voice join, disconnect,
|
||||
and reconnect. Look for
|
||||
`VC_SIM phase=screenSharePassed` and `VC_SIM phase=passed`. Terminate the app, then launch
|
||||
again with mode `resume` to verify the saved account after a process restart. The simulator
|
||||
does not validate Bluetooth hardware, the iOS 27 ScreenCaptureKit picker, or suspension on
|
||||
a physical device.
|
||||
|
||||
The simulator restore can rewrite `packages.ios.lock.json`; retain both checked-in iOS
|
||||
runtime entries when reviewing the diff.
|
||||
|
||||
## Verified hardware result
|
||||
|
||||
On 2026-09-22, the Debug build completed with .NET 10.0.401 and Xcode 27.0. The host and
|
||||
|
||||
Reference in New Issue
Block a user