Native calls: upgrade to LiveKit 2.15 + add CallKit audio-session coordination
Root cause of the intermittent dead-mic / no-audio / late-speaker: LiveKit's
automatic AVAudioSession config races CallKit's activation. The fix needs the
2.15+ audio API, which the build wasn't getting ('~> 2.0' resolved an older 2.x
from a stale spec cache). So:
- NativeCall.podspec: pin LiveKitClient '~> 2.15'.
- codemagic.yaml: 'pod install --repo-update' so the spec repo knows 2.15.x.
- Plugin: disable LiveKit auto audio-session config + keep the engine OFF; in
CXProvider didActivate set the session category and enable the engine; in
didDeactivate disable it. Request mic permission on connect so enabling the
engine in didActivate doesn't block on undetermined permission.
All AudioManager APIs verified against the raw 2.15.3 source (setEngineAvailability,
AudioEngineAvailability.default/.none, audioSession.isAutomaticConfigurationEnabled).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -18,10 +18,12 @@ Pod::Spec.new do |s|
|
||||
s.ios.deployment_target = '14.0'
|
||||
s.dependency 'Capacitor'
|
||||
# LiveKit iOS SDK — carries the call media NATIVELY so audio survives backgrounding AND coordinates with
|
||||
# CallKit's audio session (auto-config OFF via AudioManager.shared.audioSession.isAutomaticConfigurationEnabled;
|
||||
# we configure the session in CXProvider didActivate), which the WebView's WebRTC could not do. Pulls in the
|
||||
# WebRTC binary transitively.
|
||||
s.dependency 'LiveKitClient', '~> 2.0'
|
||||
# CallKit's audio session (auto-config OFF via AudioManager.shared.audioSession.isAutomaticConfigurationEnabled
|
||||
# + setEngineAvailability in CXProvider didActivate/didDeactivate), which the WebView's WebRTC could not do.
|
||||
# Pulls in the WebRTC binary transitively. PINNED to 2.15+: the CallKit audio-session coordination API
|
||||
# (AudioManager.audioSession / setEngineAvailability) only exists in 2.15+, and '~> 2.0' was resolving an
|
||||
# older 2.x on the build box (see the `pod install --repo-update` in codemagic.yaml).
|
||||
s.dependency 'LiveKitClient', '~> 2.15'
|
||||
# CallKit + PushKit + AVFoundation are system frameworks (no external pod).
|
||||
s.frameworks = 'CallKit', 'PushKit', 'AVFoundation'
|
||||
s.swift_version = '5.1'
|
||||
|
||||
Reference in New Issue
Block a user