ios: move to the LiveKitWebRTC pod (144.7559.15) - #103
Open
hiroshihorie wants to merge 5 commits into
Open
Conversation
Switch the native module from the WebRTC-SDK pod to LiveKitWebRTC, the renamed framework whose Objective-C symbols carry an LK prefix. Header file names are unchanged, so imports only move from <WebRTC/...> to <LiveKitWebRTC/...>, while every framework type, enum value, function and constant used by the module is renamed to its LKRTC form. Module owned names such as RTCVideoViewManager and RTCVideoView are unchanged. LiveKitWebRTC is published from the livekit/podspecs repo rather than the CocoaPods trunk, so the example Podfiles and the iOS and tvOS installation docs now add that source.
hiroshihorie
marked this pull request as ready for review
September 7, 2026 19:06
davidliu
added this pull request to stack #104
September 9, 2026 08:11
davidliu
approved these changes
Sep 9, 2026
The audio engine in WebRTC-SDK 144.7559.12+ no longer requests microphone permission when input is enabled. It only passively checks authorization and fails with -9000, leaving the request to the SDK. getUserMedia already requests permission, but the manual AudioDeviceModule recording APIs did not, so calling them without a prior getUserMedia would fail silently with a generic recording_error and no prompt. - AudioDeviceModule.startRecording/startLocalRecording now request and await microphone permission first, reusing the same Permissions module that getUserMedia uses, and reject when it is denied. - The native bridge maps the -9000 result to a dedicated microphone_permission_denied error code for recording starts and for setEngineAvailability, whose input re-enable path runs the same passive check. setEngineAvailability deliberately does not request permission since it can run in the background, this is now documented.
2 tasks
LiveKitWebRTC 144.7559.15 is now published on the CocoaPods trunk, so consumers no longer need extra source lines in their Podfile. Revert the example Podfiles to the default source and keep livekit/podspecs documented as an optional additional source for versions that have not reached the trunk CDN yet.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Stacked on #102. Switches iOS from the
WebRTC-SDKpod toLiveKitWebRTC144.7559.15, the renamed framework withLK-prefixed Objective-C symbols. Also bumps Android to the matchingandroid-prefixed:144.7559.15.<WebRTC/...>to<LiveKitWebRTC/...>(header names are unchanged).kRTC...constants are renamed to theirLKRTCform. Module-owned names such asRTCVideoViewManagerandRTCVideoView, and the JS API, are unchanged.LiveKitWebRTC144.7559.15 is now published on the CocoaPods trunk, so consumers do not need any extrasourcelines in their Podfile. The livekit/podspecs repository serves the same podspecs and stays documented as an optional additional source for versions that have not reached the trunk CDN yet. On Android,android-prefixedresolves from Maven Central as usual.Mic permission handling for the manual recording APIs
Starting with
144.7559.12(webrtc-sdk/webrtc#265) the audio engine no longer requests microphone permission when input is enabled. It only passively checks authorization and fails with-9000, leaving the request to the SDK.getUserMediaalready requests and awaits permission, so the standard capture path is unaffected, but the manualAudioDeviceModulerecording APIs called the engine directly and would fail with a genericrecording_errorand no prompt. Since this PR is what moves us past that boundary, it also hardens those APIs:AudioDeviceModule.startRecording()andstartLocalRecording()now request and await microphone permission first, through the samePermissionsmodulegetUserMediauses, and reject when it is denied.-9000result to a dedicatedmicrophone_permission_deniederror code, for recording starts and forsetEngineAvailability, whose input re-enable path runs the same passive check.setEngineAvailabilityintentionally does not request permission, since it can run in the background where no prompt is possible. The API docs now state that permission must be granted before restoring input availability.Apps that already had permission (anything using
getUserMedia) see no new prompt, the request resolves immediately with the existing grant.Verification
The library pod target builds for iOS Simulator with Xcode 26.6, with
LiveKitWebRTCresolved from the podspecs source. Android module compiles against144.7559.15. macOS not build-verified (the macOS example is too old to build); the only macOS-specific change isRTCMTLNSVideoView->LKRTCMTLNSVideoView, which matches the framework headers. For the permission changes,eslintandtsc --noEmitpass, and the permission bridge (WebRTCModule+Permissions.m) compiles on all Apple platforms per the podspec's shared source list.Trunk publish verified end to end: the
LiveKitWebRTC.xcframework.zipserved by the podspec has sha2562edf0cd19759...5821, identical across the webrtc-sdk/webrtc-buildm144.7559.15release asset, the livekit/webrtc-xcframework144.7559.15release asset, the SPM checksum inPackage.swift, and a fresh local download.