Skip to content

Commit 7ebb88b

Browse files
committed
fix: build fixes
1 parent 7250bdf commit 7ebb88b

10 files changed

+111
-71
lines changed

example/ios/LivekitReactNativeExample.xcodeproj/project.pbxproj

Lines changed: 26 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
13B07FBC1A68108700A75B9A /* AppDelegate.mm in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.mm */; };
1212
13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; };
1313
13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; };
14-
4C39C56BAD484C67AA576FFA /* libPods-LivekitReactNativeExample.a in Frameworks */ = {isa = PBXBuildFile; fileRef = CA3E69C5B9553B26FBA2DF04 /* libPods-LivekitReactNativeExample.a */; };
14+
28EB7C7580BACD081F485078 /* libPods-LivekitReactNativeExample.a in Frameworks */ = {isa = PBXBuildFile; fileRef = AE96F7630C52DE1A637B2D6D /* libPods-LivekitReactNativeExample.a */; };
1515
81AB9BB82411601600AC10FF /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */; };
1616
CF01B28CC3BA626D2436FE2C /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = A521D0F9D2FD1DF9BCBBBE8D /* PrivacyInfo.xcprivacy */; };
1717
D767E4EE283D20BC0077477C /* ReplayKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D767E4ED283D20BC0077477C /* ReplayKit.framework */; };
@@ -69,7 +69,7 @@
6969
47F7ED3B7971BE374F7B8635 /* Pods-LivekitReactNativeExample.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-LivekitReactNativeExample.debug.xcconfig"; path = "Target Support Files/Pods-LivekitReactNativeExample/Pods-LivekitReactNativeExample.debug.xcconfig"; sourceTree = "<group>"; };
7070
81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = LaunchScreen.storyboard; path = LivekitReactNativeExample/LaunchScreen.storyboard; sourceTree = "<group>"; };
7171
A521D0F9D2FD1DF9BCBBBE8D /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xml; name = PrivacyInfo.xcprivacy; path = LivekitReactNativeExample/PrivacyInfo.xcprivacy; sourceTree = "<group>"; };
72-
CA3E69C5B9553B26FBA2DF04 /* libPods-LivekitReactNativeExample.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-LivekitReactNativeExample.a"; sourceTree = BUILT_PRODUCTS_DIR; };
72+
AE96F7630C52DE1A637B2D6D /* libPods-LivekitReactNativeExample.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-LivekitReactNativeExample.a"; sourceTree = BUILT_PRODUCTS_DIR; };
7373
D767E4EC283D20BC0077477C /* BroadcastExtension.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = BroadcastExtension.appex; sourceTree = BUILT_PRODUCTS_DIR; };
7474
D767E4ED283D20BC0077477C /* ReplayKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ReplayKit.framework; path = System/Library/Frameworks/ReplayKit.framework; sourceTree = SDKROOT; };
7575
D767E4F0283D20BC0077477C /* SampleHandler.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SampleHandler.swift; sourceTree = "<group>"; };
@@ -99,7 +99,7 @@
9999
isa = PBXFrameworksBuildPhase;
100100
buildActionMask = 2147483647;
101101
files = (
102-
4C39C56BAD484C67AA576FFA /* libPods-LivekitReactNativeExample.a in Frameworks */,
102+
28EB7C7580BACD081F485078 /* libPods-LivekitReactNativeExample.a in Frameworks */,
103103
);
104104
runOnlyForDeploymentPostprocessing = 0;
105105
};
@@ -152,8 +152,8 @@
152152
children = (
153153
ED297162215061F000B7C4FE /* JavaScriptCore.framework */,
154154
ED2971642150620600B7C4FE /* JavaScriptCore.framework */,
155-
CA3E69C5B9553B26FBA2DF04 /* libPods-LivekitReactNativeExample.a */,
156155
D767E4ED283D20BC0077477C /* ReplayKit.framework */,
156+
AE96F7630C52DE1A637B2D6D /* libPods-LivekitReactNativeExample.a */,
157157
);
158158
name = Frameworks;
159159
sourceTree = "<group>";
@@ -621,6 +621,17 @@
621621
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
622622
GCC_WARN_UNUSED_FUNCTION = YES;
623623
GCC_WARN_UNUSED_VARIABLE = YES;
624+
HEADER_SEARCH_PATHS = (
625+
"$(inherited)",
626+
"${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon/ReactCommon.framework/Headers",
627+
"${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon/ReactCommon.framework/Headers/react/nativemodule/core",
628+
"${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon-Samples/ReactCommon_Samples.framework/Headers",
629+
"${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon-Samples/ReactCommon_Samples.framework/Headers/platform/ios",
630+
"${PODS_CONFIGURATION_BUILD_DIR}/React-Fabric/React_Fabric.framework/Headers/react/renderer/components/view/platform/cxx",
631+
"${PODS_CONFIGURATION_BUILD_DIR}/React-NativeModulesApple/React_NativeModulesApple.framework/Headers",
632+
"${PODS_CONFIGURATION_BUILD_DIR}/React-graphics/React_graphics.framework/Headers",
633+
"${PODS_CONFIGURATION_BUILD_DIR}/React-graphics/React_graphics.framework/Headers/react/renderer/graphics/platform/ios",
634+
);
624635
IPHONEOS_DEPLOYMENT_TARGET = 13.4;
625636
LD = "";
626637
LDPLUSPLUS = "";
@@ -696,6 +707,17 @@
696707
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
697708
GCC_WARN_UNUSED_FUNCTION = YES;
698709
GCC_WARN_UNUSED_VARIABLE = YES;
710+
HEADER_SEARCH_PATHS = (
711+
"$(inherited)",
712+
"${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon/ReactCommon.framework/Headers",
713+
"${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon/ReactCommon.framework/Headers/react/nativemodule/core",
714+
"${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon-Samples/ReactCommon_Samples.framework/Headers",
715+
"${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon-Samples/ReactCommon_Samples.framework/Headers/platform/ios",
716+
"${PODS_CONFIGURATION_BUILD_DIR}/React-Fabric/React_Fabric.framework/Headers/react/renderer/components/view/platform/cxx",
717+
"${PODS_CONFIGURATION_BUILD_DIR}/React-NativeModulesApple/React_NativeModulesApple.framework/Headers",
718+
"${PODS_CONFIGURATION_BUILD_DIR}/React-graphics/React_graphics.framework/Headers",
719+
"${PODS_CONFIGURATION_BUILD_DIR}/React-graphics/React_graphics.framework/Headers/react/renderer/graphics/platform/ios",
720+
);
699721
IPHONEOS_DEPLOYMENT_TARGET = 13.4;
700722
LD = "";
701723
LDPLUSPLUS = "";

example/ios/Podfile.lock

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1483,6 +1483,6 @@ SPEC CHECKSUMS:
14831483
WebRTC-SDK: dff00a3892bc570b6014e046297782084071657e
14841484
Yoga: ae3c32c514802d30f687a04a6a35b348506d411f
14851485

1486-
PODFILE CHECKSUM: b5aad0c7d12b2ea501eb822f98f00ca01d154bd9
1486+
PODFILE CHECKSUM: d3828f68293a645b4f8e3fe1e5a20e7aaaebb41b
14871487

14881488
COCOAPODS: 1.13.0

ios/LiveKitReactNative.swift

Lines changed: 54 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
21
import livekit_react_native_webrtc
32
import AVFoundation
43
import AVFAudio
@@ -9,12 +8,11 @@ struct LKEvents {
98
static let kEventMultibandProcessed = "LK_MULTIBAND_PROCESSED";
109
}
1110

12-
@objc(LivekitReactNative)
13-
public class LivekitReactNative: RCTEventEmitter {
11+
@objc(LivekitReactNativeModule)
12+
public class LivekitReactNativeModule: RCTEventEmitter {
1413

1514
// This cannot be initialized in init as self.bridge is given afterwards.
1615
private var _audioRendererManager: AudioRendererManager? = nil
17-
@objc
1816
public var audioRendererManager: AudioRendererManager {
1917
get {
2018
if _audioRendererManager == nil {
@@ -36,6 +34,11 @@ public class LivekitReactNative: RCTEventEmitter {
3634
RTCAudioSessionConfiguration.setWebRTC(config)
3735
}
3836

37+
@objc
38+
override public static func requiresMainQueueSetup() -> Bool {
39+
return false
40+
}
41+
3942
@objc
4043
public static func setup() {
4144
let videoEncoderFactory = RTCDefaultVideoEncoderFactory()
@@ -175,53 +178,53 @@ public class LivekitReactNative: RCTEventEmitter {
175178
session.unlockForConfiguration()
176179
}
177180

178-
@objc(createVolumeProcessor:trackId:)
179-
public func createVolumeProcessor(_ pcId: NSNumber, trackId: String) -> String {
180-
let renderer = VolumeAudioRenderer(intervalMs: 40.0, eventEmitter: self)
181-
let reactTag = self.audioRendererManager.registerRenderer(renderer)
182-
renderer.reactTag = reactTag
183-
self.audioRendererManager.attach(renderer: renderer, pcId: pcId, trackId: trackId)
184-
185-
return reactTag
186-
}
187-
188-
@objc(deleteVolumeProcessor:pcId:trackId:)
189-
public func deleteVolumeProcessor(_ reactTag: String, pcId: NSNumber, trackId: String) -> Any? {
190-
self.audioRendererManager.detach(rendererByTag: reactTag, pcId: pcId, trackId: trackId)
191-
self.audioRendererManager.unregisterRenderer(forReactTag: reactTag)
192-
193-
return nil
194-
}
195-
196-
@objc(createMultibandVolumeProcessor:pcId:trackId:)
197-
public func createMultibandVolumeProcessor(_ options: NSDictionary, pcId: NSNumber, trackId: String) -> String {
198-
let bands = (options["bands"] as? NSString)?.integerValue
199-
let minFrequency = (options["minFrequency"] as? NSString)?.floatValue
200-
let maxFrequency = (options["maxFrequency"] as? NSString)?.floatValue
201-
let intervalMs = (options["updateInterval"] as? NSString)?.floatValue
202-
203-
let renderer = MultibandVolumeAudioRenderer(
204-
bands: bands,
205-
minFrequency: minFrequency,
206-
maxFrequency: maxFrequency,
207-
intervalMs: intervalMs,
208-
eventEmitter: self
209-
)
210-
let reactTag = self.audioRendererManager.registerRenderer(renderer)
211-
renderer.reactTag = reactTag
212-
self.audioRendererManager.attach(renderer: renderer, pcId: pcId, trackId: trackId)
213-
214-
return reactTag
215-
}
216-
217-
@objc(deleteMultibandVolumeProcessor:pcId:trackId:)
218-
public func deleteMultibandVolumeProcessor(_ reactTag: String, pcId: NSNumber, trackId: String) -> Any? {
219-
self.audioRendererManager.detach(rendererByTag: reactTag, pcId: pcId, trackId: trackId)
220-
self.audioRendererManager.unregisterRenderer(forReactTag: reactTag)
221-
222-
return nil
223-
}
224-
181+
// @objc(createVolumeProcessor:trackId:)
182+
// public func createVolumeProcessor(_ pcId: NSNumber, trackId: String) -> String {
183+
// let renderer = VolumeAudioRenderer(intervalMs: 40.0, eventEmitter: self)
184+
// let reactTag = self.audioRendererManager.registerRenderer(renderer)
185+
// renderer.reactTag = reactTag
186+
// self.audioRendererManager.attach(renderer: renderer, pcId: pcId, trackId: trackId)
187+
//
188+
// return reactTag
189+
// }
190+
//
191+
// @objc(deleteVolumeProcessor:pcId:trackId:)
192+
// public func deleteVolumeProcessor(_ reactTag: String, pcId: NSNumber, trackId: String) -> Any? {
193+
// self.audioRendererManager.detach(rendererByTag: reactTag, pcId: pcId, trackId: trackId)
194+
// self.audioRendererManager.unregisterRenderer(forReactTag: reactTag)
195+
//
196+
// return nil
197+
// }
198+
//
199+
// @objc(createMultibandVolumeProcessor:pcId:trackId:)
200+
// public func createMultibandVolumeProcessor(_ options: NSDictionary, pcId: NSNumber, trackId: String) -> String {
201+
// let bands = (options["bands"] as? NSString)?.integerValue ?? 5
202+
// let minFrequency = (options["minFrequency"] as? NSString)?.floatValue ?? 1000
203+
// let maxFrequency = (options["maxFrequency"] as? NSString)?.floatValue ?? 8000
204+
// let intervalMs = (options["updateInterval"] as? NSString)?.floatValue ?? 40
205+
//
206+
// let renderer = MultibandVolumeAudioRenderer(
207+
// bands: bands,
208+
// minFrequency: minFrequency,
209+
// maxFrequency: maxFrequency,
210+
// intervalMs: intervalMs,
211+
// eventEmitter: self
212+
// )
213+
// let reactTag = self.audioRendererManager.registerRenderer(renderer)
214+
// renderer.reactTag = reactTag
215+
// self.audioRendererManager.attach(renderer: renderer, pcId: pcId, trackId: trackId)
216+
//
217+
// return reactTag
218+
// }
219+
//
220+
// @objc(deleteMultibandVolumeProcessor:pcId:trackId:)
221+
// public func deleteMultibandVolumeProcessor(_ reactTag: String, pcId: NSNumber, trackId: String) -> Any? {
222+
// self.audioRendererManager.detach(rendererByTag: reactTag, pcId: pcId, trackId: trackId)
223+
// self.audioRendererManager.unregisterRenderer(forReactTag: reactTag)
224+
//
225+
// return nil
226+
// }
227+
//
225228
override public func supportedEvents() -> [String]! {
226229
return [
227230
LKEvents.kEventVolumeProcessed,
Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
#import <React/RCTBridgeModule.h>
2-
#import <React/RCTViewManager.h>
1+
#import "RCTBridgeModule.h"
2+
#import "RCTEventEmitter.h"
3+
#import "RCTViewManager.h"
34
#import "WebRTCModule.h"
45
#import "WebRTCModule+RTCMediaStream.h"

ios/LivekitReactNative.h

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
//
55
// Copyright © 2022-2025 LiveKit. All rights reserved.
66
//
7-
#import <React/RCTBridgeModule.h>
8-
#import <WebRTC/WebRTC.h>
9-
#import <React/RCTEventEmitter.h>
7+
8+
@interface LivekitReactNative : NSObject
9+
+(void)setup;
10+
@end

ios/LivekitReactNative.m

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,24 @@
1-
#import "livekit_react_native-Swift.h"
1+
22
#import <React/RCTBridgeModule.h>
33
#import <React/RCTEventEmitter.h>
4+
#import "WebRTCModule.h"
5+
#import "WebRTCModuleOptions.h"
6+
#import "LivekitReactNative.h"
7+
#import "LKAudioProcessingManager.h"
8+
9+
@implementation LivekitReactNative
10+
11+
+(void)setup {
12+
RTCDefaultVideoEncoderFactory *videoEncoderFactory = [[RTCDefaultVideoEncoderFactory alloc] init];
13+
RTCVideoEncoderFactorySimulcast *simulcastVideoEncoderFactory = [[RTCVideoEncoderFactorySimulcast alloc] initWithPrimary:videoEncoderFactory fallback:videoEncoderFactory];
14+
WebRTCModuleOptions *options = [WebRTCModuleOptions sharedInstance];
15+
options.videoEncoderFactory = simulcastVideoEncoderFactory;
16+
options.audioProcessingModule = LKAudioProcessingManager.sharedInstance.audioProcessingModule;
17+
}
418

5-
@interface RCT_EXTERN_MODULE(LivekitReactNative, NSObject)
19+
@end
620

7-
+(BOOL)requiresMainQueueSetup {
8-
return NO;
9-
}
21+
@interface RCT_EXTERN_MODULE(LivekitReactNativeModule, RCTEventEmitter)
1022

1123
RCT_EXTERN_METHOD(configureAudio:(NSDictionary *) config)
1224
RCT_EXTERN_METHOD(startAudioSession)

ios/audio/AudioRendererManager.swift

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,11 @@
1-
import Foundation
2-
import WebRTC
3-
import React
1+
import livekit_react_native_webrtc
42

3+
@objc
54
public class AudioRendererManager: NSObject {
65
private let bridge: RCTBridge
76
public private(set) var renderers: [String: RTCAudioRenderer] = [:]
87

9-
@objc
10-
public init(bridge: RCTBridge) {
8+
init(bridge: RCTBridge) {
119
self.bridge = bridge
1210
}
1311

ios/audio/MultibandVolumeAudioRenderer.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import WebRTC
22
import React
33

4+
@objc
45
public class MultibandVolumeAudioRenderer: BaseMultibandVolumeAudioRenderer {
56
private let eventEmitter: RCTEventEmitter
67

ios/audio/VolumeAudioRenderer.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import WebRTC
22
import React
33

4+
@objc
45
public class VolumeAudioRenderer: BaseVolumeAudioRenderer {
56
private let eventEmitter: RCTEventEmitter
67

livekit-react-native.podspec

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
require "json"
22

33
package = JSON.parse(File.read(File.join(__dir__, "package.json")))
4+
folly_compiler_flags = '-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32'
45

56
Pod::Spec.new do |s|
67
s.name = "livekit-react-native"

0 commit comments

Comments
 (0)