├── .bundle └── config ├── .eslintrc.js ├── .gitignore ├── .prettierrc.js ├── .watchmanconfig ├── Gemfile ├── Gemfile.lock ├── README.md ├── __tests__ └── App.test.tsx ├── android ├── app │ ├── build.gradle │ ├── debug.keystore │ ├── proguard-rules.pro │ └── src │ │ ├── debug │ │ └── AndroidManifest.xml │ │ └── main │ │ ├── AndroidManifest.xml │ │ ├── java │ │ └── com │ │ │ └── livekitreactnativemeet │ │ │ ├── MainActivity.kt │ │ │ └── MainApplication.kt │ │ └── res │ │ ├── drawable │ │ └── rn_edit_text_material.xml │ │ ├── mipmap-hdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-mdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxxhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ └── values │ │ ├── strings.xml │ │ └── styles.xml ├── build.gradle ├── gradle.properties ├── gradle │ └── wrapper │ │ ├── gradle-wrapper.jar │ │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat └── settings.gradle ├── app.json ├── babel.config.js ├── index.tsx ├── ios ├── .xcode.env ├── LiveKitReactNativeMeet.xcodeproj │ ├── project.pbxproj │ └── xcshareddata │ │ └── xcschemes │ │ └── LiveKitReactNativeMeet.xcscheme ├── LiveKitReactNativeMeet.xcworkspace │ └── contents.xcworkspacedata ├── LiveKitReactNativeMeet │ ├── AppDelegate.h │ ├── AppDelegate.mm │ ├── Images.xcassets │ │ ├── AppIcon.appiconset │ │ │ └── Contents.json │ │ └── Contents.json │ ├── Info.plist │ ├── LaunchScreen.storyboard │ ├── PrivacyInfo.xcprivacy │ └── main.m ├── LiveKitReactNativeMeetTests │ ├── Info.plist │ └── LiveKitReactNativeMeetTests.m ├── Podfile └── Podfile.lock ├── jest.config.js ├── metro.config.js ├── package.json ├── patches └── @supersami+rn-foreground-service+2.1.0.patch ├── src ├── App.tsx ├── ParticipantView.tsx ├── PreJoinPage.tsx ├── RoomControls.tsx ├── RoomPage.tsx ├── callservice │ ├── CallService.android.ts │ ├── CallService.d.ts │ └── CallService.ios.ts ├── icons │ ├── baseline_cancel_white_24dp.png │ ├── baseline_cast_connected_white_24dp.png │ ├── baseline_cast_white_24dp.png │ ├── baseline_mic_off_white_24dp.png │ ├── baseline_mic_white_24dp.png │ ├── baseline_videocam_off_white_24dp.png │ ├── baseline_videocam_white_24dp.png │ ├── camera_flip_outline.png │ ├── message_outline.png │ ├── outline_dots_white_24dp.png │ └── speaker.png ├── types │ ├── Foreground.d.ts │ └── ReactNativeWebrtc.d.ts └── ui │ └── AudioOutputList.tsx ├── tsconfig.json └── yarn.lock /.bundle/config: -------------------------------------------------------------------------------- 1 | BUNDLE_PATH: "vendor/bundle" 2 | BUNDLE_FORCE_RUBY_PLATFORM: 1 3 | -------------------------------------------------------------------------------- /.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | root: true, 3 | extends: '@react-native', 4 | }; 5 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # OSX 2 | # 3 | .DS_Store 4 | 5 | # Xcode 6 | # 7 | build/ 8 | *.pbxuser 9 | !default.pbxuser 10 | *.mode1v3 11 | !default.mode1v3 12 | *.mode2v3 13 | !default.mode2v3 14 | *.perspectivev3 15 | !default.perspectivev3 16 | xcuserdata 17 | *.xccheckout 18 | *.moved-aside 19 | DerivedData 20 | *.hmap 21 | *.ipa 22 | *.xcuserstate 23 | **/.xcode.env.local 24 | 25 | # Android/IntelliJ 26 | # 27 | build/ 28 | .idea 29 | .gradle 30 | local.properties 31 | *.iml 32 | *.hprof 33 | .cxx/ 34 | *.keystore 35 | !debug.keystore 36 | 37 | # node.js 38 | # 39 | node_modules/ 40 | npm-debug.log 41 | yarn-error.log 42 | 43 | # fastlane 44 | # 45 | # It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the 46 | # screenshots whenever they are needed. 47 | # For more information about the recommended setup visit: 48 | # https://docs.fastlane.tools/best-practices/source-control/ 49 | 50 | **/fastlane/report.xml 51 | **/fastlane/Preview.html 52 | **/fastlane/screenshots 53 | **/fastlane/test_output 54 | 55 | # Bundle artifact 56 | *.jsbundle 57 | 58 | # Ruby / CocoaPods 59 | **/Pods/ 60 | /vendor/bundle/ 61 | 62 | # Temporary files created by Metro to check the health of the file watcher 63 | .metro-health-check* 64 | 65 | # testing 66 | /coverage 67 | 68 | # Yarn 69 | .yarn/* 70 | !.yarn/patches 71 | !.yarn/plugins 72 | !.yarn/releases 73 | !.yarn/sdks 74 | !.yarn/versions 75 | -------------------------------------------------------------------------------- /.prettierrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | arrowParens: 'avoid', 3 | bracketSameLine: true, 4 | bracketSpacing: false, 5 | singleQuote: true, 6 | trailingComma: 'all', 7 | }; 8 | -------------------------------------------------------------------------------- /.watchmanconfig: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /Gemfile: -------------------------------------------------------------------------------- 1 | source 'https://rubygems.org' 2 | 3 | # You may use http://rbenv.org/ or https://rvm.io/ to install and use this version 4 | ruby ">= 2.6.10" 5 | 6 | # Cocoapods 1.15 introduced a bug which break the build. We will remove the upper 7 | # bound in the template on Cocoapods with next React Native release. 8 | gem 'cocoapods', '>= 1.13', '< 1.15' 9 | gem 'activesupport', '>= 6.1.7.5', '< 7.1.0' 10 | -------------------------------------------------------------------------------- /Gemfile.lock: -------------------------------------------------------------------------------- 1 | GEM 2 | remote: https://rubygems.org/ 3 | specs: 4 | CFPropertyList (3.0.7) 5 | base64 6 | nkf 7 | rexml 8 | activesupport (7.0.8.1) 9 | concurrent-ruby (~> 1.0, >= 1.0.2) 10 | i18n (>= 1.6, < 2) 11 | minitest (>= 5.1) 12 | tzinfo (~> 2.0) 13 | addressable (2.8.6) 14 | public_suffix (>= 2.0.2, < 6.0) 15 | algoliasearch (1.27.5) 16 | httpclient (~> 2.8, >= 2.8.3) 17 | json (>= 1.5.1) 18 | atomos (0.1.3) 19 | base64 (0.2.0) 20 | claide (1.1.0) 21 | cocoapods (1.14.3) 22 | addressable (~> 2.8) 23 | claide (>= 1.0.2, < 2.0) 24 | cocoapods-core (= 1.14.3) 25 | cocoapods-deintegrate (>= 1.0.3, < 2.0) 26 | cocoapods-downloader (>= 2.1, < 3.0) 27 | cocoapods-plugins (>= 1.0.0, < 2.0) 28 | cocoapods-search (>= 1.0.0, < 2.0) 29 | cocoapods-trunk (>= 1.6.0, < 2.0) 30 | cocoapods-try (>= 1.1.0, < 2.0) 31 | colored2 (~> 3.1) 32 | escape (~> 0.0.4) 33 | fourflusher (>= 2.3.0, < 3.0) 34 | gh_inspector (~> 1.0) 35 | molinillo (~> 0.8.0) 36 | nap (~> 1.0) 37 | ruby-macho (>= 2.3.0, < 3.0) 38 | xcodeproj (>= 1.23.0, < 2.0) 39 | cocoapods-core (1.14.3) 40 | activesupport (>= 5.0, < 8) 41 | addressable (~> 2.8) 42 | algoliasearch (~> 1.0) 43 | concurrent-ruby (~> 1.1) 44 | fuzzy_match (~> 2.0.4) 45 | nap (~> 1.0) 46 | netrc (~> 0.11) 47 | public_suffix (~> 4.0) 48 | typhoeus (~> 1.0) 49 | cocoapods-deintegrate (1.0.5) 50 | cocoapods-downloader (2.1) 51 | cocoapods-plugins (1.0.0) 52 | nap 53 | cocoapods-search (1.0.1) 54 | cocoapods-trunk (1.6.0) 55 | nap (>= 0.8, < 2.0) 56 | netrc (~> 0.11) 57 | cocoapods-try (1.2.0) 58 | colored2 (3.1.2) 59 | concurrent-ruby (1.2.3) 60 | escape (0.0.4) 61 | ethon (0.16.0) 62 | ffi (>= 1.15.0) 63 | ffi (1.16.3) 64 | fourflusher (2.3.1) 65 | fuzzy_match (2.0.4) 66 | gh_inspector (1.1.3) 67 | httpclient (2.8.3) 68 | i18n (1.14.4) 69 | concurrent-ruby (~> 1.0) 70 | json (2.7.2) 71 | minitest (5.22.3) 72 | molinillo (0.8.0) 73 | nanaimo (0.3.0) 74 | nap (1.1.0) 75 | netrc (0.11.0) 76 | nkf (0.2.0) 77 | public_suffix (4.0.7) 78 | rexml (3.2.6) 79 | ruby-macho (2.5.1) 80 | typhoeus (1.4.1) 81 | ethon (>= 0.9.0) 82 | tzinfo (2.0.6) 83 | concurrent-ruby (~> 1.0) 84 | xcodeproj (1.24.0) 85 | CFPropertyList (>= 2.3.3, < 4.0) 86 | atomos (~> 0.1.3) 87 | claide (>= 1.0.2, < 2.0) 88 | colored2 (~> 3.1) 89 | nanaimo (~> 0.3.0) 90 | rexml (~> 3.2.4) 91 | 92 | PLATFORMS 93 | ruby 94 | 95 | DEPENDENCIES 96 | activesupport (>= 6.1.7.5, < 7.1.0) 97 | cocoapods (>= 1.13, < 1.15) 98 | 99 | RUBY VERSION 100 | ruby 3.0.3p157 101 | 102 | BUNDLED WITH 103 | 2.2.32 104 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # LiveKit React Native Example App 2 | 3 | A basic video conference app built on top of the [LiveKit React Native SDK](https://github.com/livekit/client-sdk-react-native). 4 | 5 | ## Getting Started 6 | 7 | >**Note**: Make sure you have completed the [React Native - Environment Setup](https://reactnative.dev/docs/environment-setup) instructions till "Creating a new application" step, before proceeding. 8 | 9 | ## Step 1: Start the Metro Server 10 | 11 | First, you will need to start **Metro**, the JavaScript _bundler_ that ships _with_ React Native. 12 | 13 | To start Metro, run the following command from the _root_ of your React Native project: 14 | 15 | ```bash 16 | # using npm 17 | npm start 18 | 19 | # OR using Yarn 20 | yarn start 21 | ``` 22 | 23 | ## Step 2: Start your Application 24 | 25 | Let Metro Bundler run in its _own_ terminal. Open a _new_ terminal from the _root_ of your React Native project. Run the following command to start your _Android_ or _iOS_ app: 26 | 27 | ### For Android 28 | 29 | ```bash 30 | # using npm 31 | npm run android 32 | 33 | # OR using Yarn 34 | yarn android 35 | ``` 36 | 37 | ### For iOS 38 | 39 | ```bash 40 | # using npm 41 | npm run ios 42 | 43 | # OR using Yarn 44 | yarn ios 45 | ``` 46 | 47 | If everything is set up _correctly_, you should see your new app running in your _Android Emulator_ or _iOS Simulator_ shortly provided you have set up your emulator/simulator correctly. 48 | 49 | This is one way to run your app — you can also run it directly from within Android Studio and Xcode respectively. 50 | 51 | ## Congratulations! :tada: 52 | 53 | You've successfully run our LiveKit example app! :partying_face: 54 | 55 | ### Now what? 56 | 57 | - View our guides at https://docs.livekit.io/ 58 | - [Join our community!](https://livekit.io/join-slack) 59 | 60 | -------------------------------------------------------------------------------- /__tests__/App.test.tsx: -------------------------------------------------------------------------------- 1 | /** 2 | * @format 3 | */ 4 | 5 | import 'react-native'; 6 | import React from 'react'; 7 | import App from '../App'; 8 | 9 | // Note: import explicitly to use the types shipped with jest. 10 | import {it} from '@jest/globals'; 11 | 12 | // Note: test renderer must be required after react-native. 13 | import renderer from 'react-test-renderer'; 14 | 15 | it('renders correctly', () => { 16 | renderer.create(); 17 | }); 18 | -------------------------------------------------------------------------------- /android/app/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: "com.android.application" 2 | apply plugin: "org.jetbrains.kotlin.android" 3 | apply plugin: "com.facebook.react" 4 | 5 | /** 6 | * This is the configuration block to customize your React Native Android app. 7 | * By default you don't need to apply any configuration, just uncomment the lines you need. 8 | */ 9 | react { 10 | /* Folders */ 11 | // The root of your project, i.e. where "package.json" lives. Default is '..' 12 | // root = file("../") 13 | // The folder where the react-native NPM package is. Default is ../node_modules/react-native 14 | // reactNativeDir = file("../node_modules/react-native") 15 | // The folder where the react-native Codegen package is. Default is ../node_modules/@react-native/codegen 16 | // codegenDir = file("../node_modules/@react-native/codegen") 17 | // The cli.js file which is the React Native CLI entrypoint. Default is ../node_modules/react-native/cli.js 18 | // cliFile = file("../node_modules/react-native/cli.js") 19 | 20 | /* Variants */ 21 | // The list of variants to that are debuggable. For those we're going to 22 | // skip the bundling of the JS bundle and the assets. By default is just 'debug'. 23 | // If you add flavors like lite, prod, etc. you'll have to list your debuggableVariants. 24 | // debuggableVariants = ["liteDebug", "prodDebug"] 25 | 26 | /* Bundling */ 27 | // A list containing the node command and its flags. Default is just 'node'. 28 | // nodeExecutableAndArgs = ["node"] 29 | // 30 | // The command to run when bundling. By default is 'bundle' 31 | // bundleCommand = "ram-bundle" 32 | // 33 | // The path to the CLI configuration file. Default is empty. 34 | // bundleConfig = file(../rn-cli.config.js) 35 | // 36 | // The name of the generated asset file containing your JS bundle 37 | // bundleAssetName = "MyApplication.android.bundle" 38 | // 39 | // The entry file for bundle generation. Default is 'index.android.js' or 'index.js' 40 | // entryFile = file("../js/MyApplication.android.js") 41 | // 42 | // A list of extra flags to pass to the 'bundle' commands. 43 | // See https://github.com/react-native-community/cli/blob/main/docs/commands.md#bundle 44 | // extraPackagerArgs = [] 45 | 46 | /* Hermes Commands */ 47 | // The hermes compiler command to run. By default it is 'hermesc' 48 | // hermesCommand = "$rootDir/my-custom-hermesc/bin/hermesc" 49 | // 50 | // The list of flags to pass to the Hermes compiler. By default is "-O", "-output-source-map" 51 | // hermesFlags = ["-O", "-output-source-map"] 52 | } 53 | 54 | /** 55 | * Set this to true to Run Proguard on Release builds to minify the Java bytecode. 56 | */ 57 | def enableProguardInReleaseBuilds = false 58 | 59 | /** 60 | * The preferred build flavor of JavaScriptCore (JSC) 61 | * 62 | * For example, to use the international variant, you can use: 63 | * `def jscFlavor = 'org.webkit:android-jsc-intl:+'` 64 | * 65 | * The international variant includes ICU i18n library and necessary data 66 | * allowing to use e.g. `Date.toLocaleString` and `String.localeCompare` that 67 | * give correct results when using with locales other than en-US. Note that 68 | * this variant is about 6MiB larger per architecture than default. 69 | */ 70 | def jscFlavor = 'org.webkit:android-jsc:+' 71 | 72 | android { 73 | ndkVersion rootProject.ext.ndkVersion 74 | buildToolsVersion rootProject.ext.buildToolsVersion 75 | compileSdk rootProject.ext.compileSdkVersion 76 | 77 | namespace "com.livekitreactnativemeet" 78 | defaultConfig { 79 | applicationId "com.livekitreactnativemeet" 80 | minSdkVersion rootProject.ext.minSdkVersion 81 | targetSdkVersion rootProject.ext.targetSdkVersion 82 | versionCode 1 83 | versionName "1.0" 84 | } 85 | signingConfigs { 86 | debug { 87 | storeFile file('debug.keystore') 88 | storePassword 'android' 89 | keyAlias 'androiddebugkey' 90 | keyPassword 'android' 91 | } 92 | } 93 | buildTypes { 94 | debug { 95 | signingConfig signingConfigs.debug 96 | } 97 | release { 98 | // Caution! In production, you need to generate your own keystore file. 99 | // see https://reactnative.dev/docs/signed-apk-android. 100 | signingConfig signingConfigs.debug 101 | minifyEnabled enableProguardInReleaseBuilds 102 | proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro" 103 | } 104 | } 105 | } 106 | 107 | dependencies { 108 | // The version of react-native is set by the React Native Gradle Plugin 109 | implementation("com.facebook.react:react-android") 110 | implementation("com.facebook.react:flipper-integration") 111 | 112 | if (hermesEnabled.toBoolean()) { 113 | implementation("com.facebook.react:hermes-android") 114 | } else { 115 | implementation jscFlavor 116 | } 117 | } 118 | 119 | apply from: file("../../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesAppBuildGradle(project) 120 | -------------------------------------------------------------------------------- /android/app/debug.keystore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livekit-examples/react-native-meet/b2fd5fc55f18f79e5f420fc35dd866e7cad6029e/android/app/debug.keystore -------------------------------------------------------------------------------- /android/app/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # By default, the flags in this file are appended to flags specified 3 | # in /usr/local/Cellar/android-sdk/24.3.3/tools/proguard/proguard-android.txt 4 | # You can edit the include path and order by changing the proguardFiles 5 | # directive in build.gradle. 6 | # 7 | # For more details, see 8 | # http://developer.android.com/guide/developing/tools/proguard.html 9 | 10 | # Add any project specific keep options here: 11 | -------------------------------------------------------------------------------- /android/app/src/debug/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 9 | 10 | -------------------------------------------------------------------------------- /android/app/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 12 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /android/app/src/main/java/com/livekitreactnativemeet/MainActivity.kt: -------------------------------------------------------------------------------- 1 | package com.livekitreactnativemeet 2 | 3 | import com.facebook.react.ReactActivity 4 | import com.facebook.react.ReactActivityDelegate 5 | import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint.fabricEnabled 6 | import com.facebook.react.defaults.DefaultReactActivityDelegate 7 | 8 | class MainActivity : ReactActivity() { 9 | 10 | /** 11 | * Returns the name of the main component registered from JavaScript. This is used to schedule 12 | * rendering of the component. 13 | */ 14 | override fun getMainComponentName(): String = "LiveKitReactNativeMeet" 15 | 16 | /** 17 | * Returns the instance of the [ReactActivityDelegate]. We use [DefaultReactActivityDelegate] 18 | * which allows you to enable New Architecture with a single boolean flags [fabricEnabled] 19 | */ 20 | override fun createReactActivityDelegate(): ReactActivityDelegate = 21 | DefaultReactActivityDelegate(this, mainComponentName, fabricEnabled) 22 | } 23 | -------------------------------------------------------------------------------- /android/app/src/main/java/com/livekitreactnativemeet/MainApplication.kt: -------------------------------------------------------------------------------- 1 | package com.livekitreactnativemeet 2 | 3 | import android.app.Application 4 | import com.facebook.react.PackageList 5 | import com.facebook.react.ReactApplication 6 | import com.facebook.react.ReactHost 7 | import com.facebook.react.ReactNativeHost 8 | import com.facebook.react.ReactPackage 9 | import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint.load 10 | import com.facebook.react.defaults.DefaultReactHost.getDefaultReactHost 11 | import com.facebook.react.defaults.DefaultReactNativeHost 12 | import com.facebook.react.flipper.ReactNativeFlipper 13 | import com.facebook.soloader.SoLoader 14 | import com.livekit.reactnative.LiveKitReactNative 15 | import com.livekit.reactnative.audio.AudioType 16 | 17 | class MainApplication : Application(), ReactApplication { 18 | 19 | override val reactNativeHost: ReactNativeHost = 20 | object : DefaultReactNativeHost(this) { 21 | override fun getPackages(): List = 22 | PackageList(this).packages.apply { 23 | // Packages that cannot be autolinked yet can be added manually here, for example: 24 | // add(MyReactNativePackage()) 25 | } 26 | 27 | override fun getJSMainModuleName(): String = "index" 28 | 29 | override fun getUseDeveloperSupport(): Boolean = BuildConfig.DEBUG 30 | 31 | override val isNewArchEnabled: Boolean = BuildConfig.IS_NEW_ARCHITECTURE_ENABLED 32 | override val isHermesEnabled: Boolean = BuildConfig.IS_HERMES_ENABLED 33 | } 34 | 35 | override val reactHost: ReactHost 36 | get() = getDefaultReactHost(this.applicationContext, reactNativeHost) 37 | 38 | override fun onCreate() { 39 | LiveKitReactNative.setup(this); 40 | super.onCreate() 41 | SoLoader.init(this, false) 42 | if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) { 43 | // If you opted-in for the New Architecture, we load the native entry point for this app. 44 | load() 45 | } 46 | ReactNativeFlipper.initializeFlipper(this, reactNativeHost.reactInstanceManager) 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /android/app/src/main/res/drawable/rn_edit_text_material.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 21 | 22 | 23 | 32 | 33 | 34 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livekit-examples/react-native-meet/b2fd5fc55f18f79e5f420fc35dd866e7cad6029e/android/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livekit-examples/react-native-meet/b2fd5fc55f18f79e5f420fc35dd866e7cad6029e/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livekit-examples/react-native-meet/b2fd5fc55f18f79e5f420fc35dd866e7cad6029e/android/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livekit-examples/react-native-meet/b2fd5fc55f18f79e5f420fc35dd866e7cad6029e/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livekit-examples/react-native-meet/b2fd5fc55f18f79e5f420fc35dd866e7cad6029e/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livekit-examples/react-native-meet/b2fd5fc55f18f79e5f420fc35dd866e7cad6029e/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livekit-examples/react-native-meet/b2fd5fc55f18f79e5f420fc35dd866e7cad6029e/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livekit-examples/react-native-meet/b2fd5fc55f18f79e5f420fc35dd866e7cad6029e/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livekit-examples/react-native-meet/b2fd5fc55f18f79e5f420fc35dd866e7cad6029e/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livekit-examples/react-native-meet/b2fd5fc55f18f79e5f420fc35dd866e7cad6029e/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /android/app/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | LiveKitReactNativeMeet 3 | 4 | -------------------------------------------------------------------------------- /android/app/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /android/build.gradle: -------------------------------------------------------------------------------- 1 | buildscript { 2 | ext { 3 | buildToolsVersion = "34.0.0" 4 | minSdkVersion = 21 5 | compileSdkVersion = 34 6 | targetSdkVersion = 34 7 | ndkVersion = "25.1.8937393" 8 | kotlinVersion = "1.8.0" 9 | } 10 | repositories { 11 | google() 12 | mavenCentral() 13 | } 14 | dependencies { 15 | classpath("com.android.tools.build:gradle") 16 | classpath("com.facebook.react:react-native-gradle-plugin") 17 | classpath("org.jetbrains.kotlin:kotlin-gradle-plugin") 18 | } 19 | } 20 | 21 | apply plugin: "com.facebook.react.rootproject" 22 | -------------------------------------------------------------------------------- /android/gradle.properties: -------------------------------------------------------------------------------- 1 | # Project-wide Gradle settings. 2 | 3 | # IDE (e.g. Android Studio) users: 4 | # Gradle settings configured through the IDE *will override* 5 | # any settings specified in this file. 6 | 7 | # For more details on how to configure your build environment visit 8 | # http://www.gradle.org/docs/current/userguide/build_environment.html 9 | 10 | # Specifies the JVM arguments used for the daemon process. 11 | # The setting is particularly useful for tweaking memory settings. 12 | # Default value: -Xmx512m -XX:MaxMetaspaceSize=256m 13 | org.gradle.jvmargs=-Xmx2048m -XX:MaxMetaspaceSize=512m 14 | 15 | # When configured, Gradle will run in incubating parallel mode. 16 | # This option should only be used with decoupled projects. More details, visit 17 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects 18 | # org.gradle.parallel=true 19 | 20 | # AndroidX package structure to make it clearer which packages are bundled with the 21 | # Android operating system, and which are packaged with your app's APK 22 | # https://developer.android.com/topic/libraries/support-library/androidx-rn 23 | android.useAndroidX=true 24 | # Automatically convert third-party libraries to use AndroidX 25 | android.enableJetifier=true 26 | 27 | # Use this property to specify which architecture you want to build. 28 | # You can also override it from the CLI using 29 | # ./gradlew -PreactNativeArchitectures=x86_64 30 | reactNativeArchitectures=armeabi-v7a,arm64-v8a,x86,x86_64 31 | 32 | # Use this property to enable support to the new architecture. 33 | # This will allow you to use TurboModules and the Fabric render in 34 | # your application. You should enable this flag either if you want 35 | # to write custom TurboModules/Fabric components OR use libraries that 36 | # are providing them. 37 | newArchEnabled=false 38 | 39 | # Use this property to enable or disable the Hermes JS engine. 40 | # If set to false, you will be using JSC instead. 41 | hermesEnabled=true 42 | -------------------------------------------------------------------------------- /android/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livekit-examples/react-native-meet/b2fd5fc55f18f79e5f420fc35dd866e7cad6029e/android/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /android/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.3-all.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /android/gradlew: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # 4 | # Copyright © 2015-2021 the original authors. 5 | # 6 | # Licensed under the Apache License, Version 2.0 (the "License"); 7 | # you may not use this file except in compliance with the License. 8 | # You may obtain a copy of the License at 9 | # 10 | # https://www.apache.org/licenses/LICENSE-2.0 11 | # 12 | # Unless required by applicable law or agreed to in writing, software 13 | # distributed under the License is distributed on an "AS IS" BASIS, 14 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | # See the License for the specific language governing permissions and 16 | # limitations under the License. 17 | # 18 | 19 | ############################################################################## 20 | # 21 | # Gradle start up script for POSIX generated by Gradle. 22 | # 23 | # Important for running: 24 | # 25 | # (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is 26 | # noncompliant, but you have some other compliant shell such as ksh or 27 | # bash, then to run this script, type that shell name before the whole 28 | # command line, like: 29 | # 30 | # ksh Gradle 31 | # 32 | # Busybox and similar reduced shells will NOT work, because this script 33 | # requires all of these POSIX shell features: 34 | # * functions; 35 | # * expansions «$var», «${var}», «${var:-default}», «${var+SET}», 36 | # «${var#prefix}», «${var%suffix}», and «$( cmd )»; 37 | # * compound commands having a testable exit status, especially «case»; 38 | # * various built-in commands including «command», «set», and «ulimit». 39 | # 40 | # Important for patching: 41 | # 42 | # (2) This script targets any POSIX shell, so it avoids extensions provided 43 | # by Bash, Ksh, etc; in particular arrays are avoided. 44 | # 45 | # The "traditional" practice of packing multiple parameters into a 46 | # space-separated string is a well documented source of bugs and security 47 | # problems, so this is (mostly) avoided, by progressively accumulating 48 | # options in "$@", and eventually passing that to Java. 49 | # 50 | # Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, 51 | # and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; 52 | # see the in-line comments for details. 53 | # 54 | # There are tweaks for specific operating systems such as AIX, CygWin, 55 | # Darwin, MinGW, and NonStop. 56 | # 57 | # (3) This script is generated from the Groovy template 58 | # https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt 59 | # within the Gradle project. 60 | # 61 | # You can find Gradle at https://github.com/gradle/gradle/. 62 | # 63 | ############################################################################## 64 | 65 | # Attempt to set APP_HOME 66 | 67 | # Resolve links: $0 may be a link 68 | app_path=$0 69 | 70 | # Need this for daisy-chained symlinks. 71 | while 72 | APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path 73 | [ -h "$app_path" ] 74 | do 75 | ls=$( ls -ld "$app_path" ) 76 | link=${ls#*' -> '} 77 | case $link in #( 78 | /*) app_path=$link ;; #( 79 | *) app_path=$APP_HOME$link ;; 80 | esac 81 | done 82 | 83 | # This is normally unused 84 | # shellcheck disable=SC2034 85 | APP_BASE_NAME=${0##*/} 86 | # Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) 87 | APP_HOME=$( cd "${APP_HOME:-./}" > /dev/null && pwd -P ) || exit 88 | 89 | # Use the maximum available, or set MAX_FD != -1 to use that value. 90 | MAX_FD=maximum 91 | 92 | warn () { 93 | echo "$*" 94 | } >&2 95 | 96 | die () { 97 | echo 98 | echo "$*" 99 | echo 100 | exit 1 101 | } >&2 102 | 103 | # OS specific support (must be 'true' or 'false'). 104 | cygwin=false 105 | msys=false 106 | darwin=false 107 | nonstop=false 108 | case "$( uname )" in #( 109 | CYGWIN* ) cygwin=true ;; #( 110 | Darwin* ) darwin=true ;; #( 111 | MSYS* | MINGW* ) msys=true ;; #( 112 | NONSTOP* ) nonstop=true ;; 113 | esac 114 | 115 | CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar 116 | 117 | 118 | # Determine the Java command to use to start the JVM. 119 | if [ -n "$JAVA_HOME" ] ; then 120 | if [ -x "$JAVA_HOME/jre/sh/java" ] ; then 121 | # IBM's JDK on AIX uses strange locations for the executables 122 | JAVACMD=$JAVA_HOME/jre/sh/java 123 | else 124 | JAVACMD=$JAVA_HOME/bin/java 125 | fi 126 | if [ ! -x "$JAVACMD" ] ; then 127 | die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME 128 | 129 | Please set the JAVA_HOME variable in your environment to match the 130 | location of your Java installation." 131 | fi 132 | else 133 | JAVACMD=java 134 | if ! command -v java >/dev/null 2>&1 135 | then 136 | die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 137 | 138 | Please set the JAVA_HOME variable in your environment to match the 139 | location of your Java installation." 140 | fi 141 | fi 142 | 143 | # Increase the maximum file descriptors if we can. 144 | if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then 145 | case $MAX_FD in #( 146 | max*) 147 | # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. 148 | # shellcheck disable=SC3045 149 | MAX_FD=$( ulimit -H -n ) || 150 | warn "Could not query maximum file descriptor limit" 151 | esac 152 | case $MAX_FD in #( 153 | '' | soft) :;; #( 154 | *) 155 | # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. 156 | # shellcheck disable=SC3045 157 | ulimit -n "$MAX_FD" || 158 | warn "Could not set maximum file descriptor limit to $MAX_FD" 159 | esac 160 | fi 161 | 162 | # Collect all arguments for the java command, stacking in reverse order: 163 | # * args from the command line 164 | # * the main class name 165 | # * -classpath 166 | # * -D...appname settings 167 | # * --module-path (only if needed) 168 | # * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. 169 | 170 | # For Cygwin or MSYS, switch paths to Windows format before running java 171 | if "$cygwin" || "$msys" ; then 172 | APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) 173 | CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) 174 | 175 | JAVACMD=$( cygpath --unix "$JAVACMD" ) 176 | 177 | # Now convert the arguments - kludge to limit ourselves to /bin/sh 178 | for arg do 179 | if 180 | case $arg in #( 181 | -*) false ;; # don't mess with options #( 182 | /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath 183 | [ -e "$t" ] ;; #( 184 | *) false ;; 185 | esac 186 | then 187 | arg=$( cygpath --path --ignore --mixed "$arg" ) 188 | fi 189 | # Roll the args list around exactly as many times as the number of 190 | # args, so each arg winds up back in the position where it started, but 191 | # possibly modified. 192 | # 193 | # NB: a `for` loop captures its iteration list before it begins, so 194 | # changing the positional parameters here affects neither the number of 195 | # iterations, nor the values presented in `arg`. 196 | shift # remove old arg 197 | set -- "$@" "$arg" # push replacement arg 198 | done 199 | fi 200 | 201 | 202 | # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. 203 | DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' 204 | 205 | # Collect all arguments for the java command; 206 | # * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of 207 | # shell script including quotes and variable substitutions, so put them in 208 | # double quotes to make sure that they get re-expanded; and 209 | # * put everything else in single quotes, so that it's not re-expanded. 210 | 211 | set -- \ 212 | "-Dorg.gradle.appname=$APP_BASE_NAME" \ 213 | -classpath "$CLASSPATH" \ 214 | org.gradle.wrapper.GradleWrapperMain \ 215 | "$@" 216 | 217 | # Stop when "xargs" is not available. 218 | if ! command -v xargs >/dev/null 2>&1 219 | then 220 | die "xargs is not available" 221 | fi 222 | 223 | # Use "xargs" to parse quoted args. 224 | # 225 | # With -n1 it outputs one arg per line, with the quotes and backslashes removed. 226 | # 227 | # In Bash we could simply go: 228 | # 229 | # readarray ARGS < <( xargs -n1 <<<"$var" ) && 230 | # set -- "${ARGS[@]}" "$@" 231 | # 232 | # but POSIX shell has neither arrays nor command substitution, so instead we 233 | # post-process each arg (as a line of input to sed) to backslash-escape any 234 | # character that might be a shell metacharacter, then use eval to reverse 235 | # that process (while maintaining the separation between arguments), and wrap 236 | # the whole thing up as a single "set" statement. 237 | # 238 | # This will of course break if any of these variables contains a newline or 239 | # an unmatched quote. 240 | # 241 | 242 | eval "set -- $( 243 | printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | 244 | xargs -n1 | 245 | sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | 246 | tr '\n' ' ' 247 | )" '"$@"' 248 | 249 | exec "$JAVACMD" "$@" 250 | -------------------------------------------------------------------------------- /android/gradlew.bat: -------------------------------------------------------------------------------- 1 | @rem 2 | @rem Copyright 2015 the original author or authors. 3 | @rem 4 | @rem Licensed under the Apache License, Version 2.0 (the "License"); 5 | @rem you may not use this file except in compliance with the License. 6 | @rem You may obtain a copy of the License at 7 | @rem 8 | @rem https://www.apache.org/licenses/LICENSE-2.0 9 | @rem 10 | @rem Unless required by applicable law or agreed to in writing, software 11 | @rem distributed under the License is distributed on an "AS IS" BASIS, 12 | @rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | @rem See the License for the specific language governing permissions and 14 | @rem limitations under the License. 15 | @rem 16 | 17 | @if "%DEBUG%"=="" @echo off 18 | @rem ########################################################################## 19 | @rem 20 | @rem Gradle startup script for Windows 21 | @rem 22 | @rem ########################################################################## 23 | 24 | @rem Set local scope for the variables with windows NT shell 25 | if "%OS%"=="Windows_NT" setlocal 26 | 27 | set DIRNAME=%~dp0 28 | if "%DIRNAME%"=="" set DIRNAME=. 29 | @rem This is normally unused 30 | set APP_BASE_NAME=%~n0 31 | set APP_HOME=%DIRNAME% 32 | 33 | @rem Resolve any "." and ".." in APP_HOME to make it shorter. 34 | for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi 35 | 36 | @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. 37 | set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" 38 | 39 | @rem Find java.exe 40 | if defined JAVA_HOME goto findJavaFromJavaHome 41 | 42 | set JAVA_EXE=java.exe 43 | %JAVA_EXE% -version >NUL 2>&1 44 | if %ERRORLEVEL% equ 0 goto execute 45 | 46 | echo. 47 | echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 48 | echo. 49 | echo Please set the JAVA_HOME variable in your environment to match the 50 | echo location of your Java installation. 51 | 52 | goto fail 53 | 54 | :findJavaFromJavaHome 55 | set JAVA_HOME=%JAVA_HOME:"=% 56 | set JAVA_EXE=%JAVA_HOME%/bin/java.exe 57 | 58 | if exist "%JAVA_EXE%" goto execute 59 | 60 | echo. 61 | echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 62 | echo. 63 | echo Please set the JAVA_HOME variable in your environment to match the 64 | echo location of your Java installation. 65 | 66 | goto fail 67 | 68 | :execute 69 | @rem Setup the command line 70 | 71 | set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar 72 | 73 | 74 | @rem Execute Gradle 75 | "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* 76 | 77 | :end 78 | @rem End local scope for the variables with windows NT shell 79 | if %ERRORLEVEL% equ 0 goto mainEnd 80 | 81 | :fail 82 | rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of 83 | rem the _cmd.exe /c_ return code! 84 | set EXIT_CODE=%ERRORLEVEL% 85 | if %EXIT_CODE% equ 0 set EXIT_CODE=1 86 | if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% 87 | exit /b %EXIT_CODE% 88 | 89 | :mainEnd 90 | if "%OS%"=="Windows_NT" endlocal 91 | 92 | :omega 93 | -------------------------------------------------------------------------------- /android/settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'LiveKitReactNativeMeet' 2 | apply from: file("../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesSettingsGradle(settings) 3 | include ':app' 4 | includeBuild('../node_modules/@react-native/gradle-plugin') 5 | -------------------------------------------------------------------------------- /app.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "LiveKitReactNativeMeet", 3 | "displayName": "LiveKitReactNativeMeet" 4 | } 5 | -------------------------------------------------------------------------------- /babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: ['module:@react-native/babel-preset'], 3 | }; 4 | -------------------------------------------------------------------------------- /index.tsx: -------------------------------------------------------------------------------- 1 | import { AppRegistry } from 'react-native'; 2 | import App from './src/App'; 3 | import { name as appName } from './app.json'; 4 | import { registerGlobals } from '@livekit/react-native'; 5 | import ReactNativeForegroundService from '@supersami/rn-foreground-service'; 6 | 7 | registerGlobals(); 8 | ReactNativeForegroundService.register(); 9 | AppRegistry.registerComponent(appName, () => App); 10 | -------------------------------------------------------------------------------- /ios/.xcode.env: -------------------------------------------------------------------------------- 1 | # This `.xcode.env` file is versioned and is used to source the environment 2 | # used when running script phases inside Xcode. 3 | # To customize your local environment, you can create an `.xcode.env.local` 4 | # file that is not versioned. 5 | 6 | # NODE_BINARY variable contains the PATH to the node executable. 7 | # 8 | # Customize the NODE_BINARY variable here. 9 | # For example, to use nvm with brew, add the following line 10 | # . "$(brew --prefix nvm)/nvm.sh" --no-use 11 | export NODE_BINARY=$(command -v node) 12 | -------------------------------------------------------------------------------- /ios/LiveKitReactNativeMeet.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 54; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 00E356F31AD99517003FC87E /* LiveKitReactNativeMeetTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E356F21AD99517003FC87E /* LiveKitReactNativeMeetTests.m */; }; 11 | 0C80B921A6F3F58F76C31292 /* libPods-LiveKitReactNativeMeet.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5DCACB8F33CDC322A6C60F78 /* libPods-LiveKitReactNativeMeet.a */; }; 12 | 13B07FBC1A68108700A75B9A /* AppDelegate.mm in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.mm */; }; 13 | 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; }; 14 | 13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; }; 15 | 6132EF182BDFF13200BBE14D /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 6132EF172BDFF13200BBE14D /* PrivacyInfo.xcprivacy */; }; 16 | 7699B88040F8A987B510C191 /* libPods-LiveKitReactNativeMeet-LiveKitReactNativeMeetTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 19F6CBCC0A4E27FBF8BF4A61 /* libPods-LiveKitReactNativeMeet-LiveKitReactNativeMeetTests.a */; }; 17 | 81AB9BB82411601600AC10FF /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */; }; 18 | /* End PBXBuildFile section */ 19 | 20 | /* Begin PBXContainerItemProxy section */ 21 | 00E356F41AD99517003FC87E /* PBXContainerItemProxy */ = { 22 | isa = PBXContainerItemProxy; 23 | containerPortal = 83CBB9F71A601CBA00E9B192 /* Project object */; 24 | proxyType = 1; 25 | remoteGlobalIDString = 13B07F861A680F5B00A75B9A; 26 | remoteInfo = LiveKitReactNativeMeet; 27 | }; 28 | /* End PBXContainerItemProxy section */ 29 | 30 | /* Begin PBXFileReference section */ 31 | 00E356EE1AD99517003FC87E /* LiveKitReactNativeMeetTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = LiveKitReactNativeMeetTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 32 | 00E356F11AD99517003FC87E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 33 | 00E356F21AD99517003FC87E /* LiveKitReactNativeMeetTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = LiveKitReactNativeMeetTests.m; sourceTree = ""; }; 34 | 13B07F961A680F5B00A75B9A /* LiveKitReactNativeMeet.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = LiveKitReactNativeMeet.app; sourceTree = BUILT_PRODUCTS_DIR; }; 35 | 13B07FAF1A68108700A75B9A /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppDelegate.h; path = LiveKitReactNativeMeet/AppDelegate.h; sourceTree = ""; }; 36 | 13B07FB01A68108700A75B9A /* AppDelegate.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = AppDelegate.mm; path = LiveKitReactNativeMeet/AppDelegate.mm; sourceTree = ""; }; 37 | 13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = LiveKitReactNativeMeet/Images.xcassets; sourceTree = ""; }; 38 | 13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = LiveKitReactNativeMeet/Info.plist; sourceTree = ""; }; 39 | 13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = LiveKitReactNativeMeet/main.m; sourceTree = ""; }; 40 | 19F6CBCC0A4E27FBF8BF4A61 /* libPods-LiveKitReactNativeMeet-LiveKitReactNativeMeetTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-LiveKitReactNativeMeet-LiveKitReactNativeMeetTests.a"; sourceTree = BUILT_PRODUCTS_DIR; }; 41 | 3B4392A12AC88292D35C810B /* Pods-LiveKitReactNativeMeet.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-LiveKitReactNativeMeet.debug.xcconfig"; path = "Target Support Files/Pods-LiveKitReactNativeMeet/Pods-LiveKitReactNativeMeet.debug.xcconfig"; sourceTree = ""; }; 42 | 5709B34CF0A7D63546082F79 /* Pods-LiveKitReactNativeMeet.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-LiveKitReactNativeMeet.release.xcconfig"; path = "Target Support Files/Pods-LiveKitReactNativeMeet/Pods-LiveKitReactNativeMeet.release.xcconfig"; sourceTree = ""; }; 43 | 5B7EB9410499542E8C5724F5 /* Pods-LiveKitReactNativeMeet-LiveKitReactNativeMeetTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-LiveKitReactNativeMeet-LiveKitReactNativeMeetTests.debug.xcconfig"; path = "Target Support Files/Pods-LiveKitReactNativeMeet-LiveKitReactNativeMeetTests/Pods-LiveKitReactNativeMeet-LiveKitReactNativeMeetTests.debug.xcconfig"; sourceTree = ""; }; 44 | 5DCACB8F33CDC322A6C60F78 /* libPods-LiveKitReactNativeMeet.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-LiveKitReactNativeMeet.a"; sourceTree = BUILT_PRODUCTS_DIR; }; 45 | 6132EF172BDFF13200BBE14D /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; lastKnownFileType = text.xml; name = PrivacyInfo.xcprivacy; path = LiveKitReactNativeMeet/PrivacyInfo.xcprivacy; sourceTree = ""; }; 46 | 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = LaunchScreen.storyboard; path = LiveKitReactNativeMeet/LaunchScreen.storyboard; sourceTree = ""; }; 47 | 89C6BE57DB24E9ADA2F236DE /* Pods-LiveKitReactNativeMeet-LiveKitReactNativeMeetTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-LiveKitReactNativeMeet-LiveKitReactNativeMeetTests.release.xcconfig"; path = "Target Support Files/Pods-LiveKitReactNativeMeet-LiveKitReactNativeMeetTests/Pods-LiveKitReactNativeMeet-LiveKitReactNativeMeetTests.release.xcconfig"; sourceTree = ""; }; 48 | ED297162215061F000B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; }; 49 | /* End PBXFileReference section */ 50 | 51 | /* Begin PBXFrameworksBuildPhase section */ 52 | 00E356EB1AD99517003FC87E /* Frameworks */ = { 53 | isa = PBXFrameworksBuildPhase; 54 | buildActionMask = 2147483647; 55 | files = ( 56 | 7699B88040F8A987B510C191 /* libPods-LiveKitReactNativeMeet-LiveKitReactNativeMeetTests.a in Frameworks */, 57 | ); 58 | runOnlyForDeploymentPostprocessing = 0; 59 | }; 60 | 13B07F8C1A680F5B00A75B9A /* Frameworks */ = { 61 | isa = PBXFrameworksBuildPhase; 62 | buildActionMask = 2147483647; 63 | files = ( 64 | 0C80B921A6F3F58F76C31292 /* libPods-LiveKitReactNativeMeet.a in Frameworks */, 65 | ); 66 | runOnlyForDeploymentPostprocessing = 0; 67 | }; 68 | /* End PBXFrameworksBuildPhase section */ 69 | 70 | /* Begin PBXGroup section */ 71 | 00E356EF1AD99517003FC87E /* LiveKitReactNativeMeetTests */ = { 72 | isa = PBXGroup; 73 | children = ( 74 | 00E356F21AD99517003FC87E /* LiveKitReactNativeMeetTests.m */, 75 | 00E356F01AD99517003FC87E /* Supporting Files */, 76 | ); 77 | path = LiveKitReactNativeMeetTests; 78 | sourceTree = ""; 79 | }; 80 | 00E356F01AD99517003FC87E /* Supporting Files */ = { 81 | isa = PBXGroup; 82 | children = ( 83 | 00E356F11AD99517003FC87E /* Info.plist */, 84 | ); 85 | name = "Supporting Files"; 86 | sourceTree = ""; 87 | }; 88 | 13B07FAE1A68108700A75B9A /* LiveKitReactNativeMeet */ = { 89 | isa = PBXGroup; 90 | children = ( 91 | 13B07FAF1A68108700A75B9A /* AppDelegate.h */, 92 | 13B07FB01A68108700A75B9A /* AppDelegate.mm */, 93 | 13B07FB51A68108700A75B9A /* Images.xcassets */, 94 | 13B07FB61A68108700A75B9A /* Info.plist */, 95 | 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */, 96 | 13B07FB71A68108700A75B9A /* main.m */, 97 | ); 98 | name = LiveKitReactNativeMeet; 99 | sourceTree = ""; 100 | }; 101 | 2D16E6871FA4F8E400B85C8A /* Frameworks */ = { 102 | isa = PBXGroup; 103 | children = ( 104 | ED297162215061F000B7C4FE /* JavaScriptCore.framework */, 105 | 5DCACB8F33CDC322A6C60F78 /* libPods-LiveKitReactNativeMeet.a */, 106 | 19F6CBCC0A4E27FBF8BF4A61 /* libPods-LiveKitReactNativeMeet-LiveKitReactNativeMeetTests.a */, 107 | ); 108 | name = Frameworks; 109 | sourceTree = ""; 110 | }; 111 | 832341AE1AAA6A7D00B99B32 /* Libraries */ = { 112 | isa = PBXGroup; 113 | children = ( 114 | ); 115 | name = Libraries; 116 | sourceTree = ""; 117 | }; 118 | 83CBB9F61A601CBA00E9B192 = { 119 | isa = PBXGroup; 120 | children = ( 121 | 6132EF172BDFF13200BBE14D /* PrivacyInfo.xcprivacy */, 122 | 13B07FAE1A68108700A75B9A /* LiveKitReactNativeMeet */, 123 | 832341AE1AAA6A7D00B99B32 /* Libraries */, 124 | 00E356EF1AD99517003FC87E /* LiveKitReactNativeMeetTests */, 125 | 83CBBA001A601CBA00E9B192 /* Products */, 126 | 2D16E6871FA4F8E400B85C8A /* Frameworks */, 127 | BBD78D7AC51CEA395F1C20DB /* Pods */, 128 | ); 129 | indentWidth = 2; 130 | sourceTree = ""; 131 | tabWidth = 2; 132 | usesTabs = 0; 133 | }; 134 | 83CBBA001A601CBA00E9B192 /* Products */ = { 135 | isa = PBXGroup; 136 | children = ( 137 | 13B07F961A680F5B00A75B9A /* LiveKitReactNativeMeet.app */, 138 | 00E356EE1AD99517003FC87E /* LiveKitReactNativeMeetTests.xctest */, 139 | ); 140 | name = Products; 141 | sourceTree = ""; 142 | }; 143 | BBD78D7AC51CEA395F1C20DB /* Pods */ = { 144 | isa = PBXGroup; 145 | children = ( 146 | 3B4392A12AC88292D35C810B /* Pods-LiveKitReactNativeMeet.debug.xcconfig */, 147 | 5709B34CF0A7D63546082F79 /* Pods-LiveKitReactNativeMeet.release.xcconfig */, 148 | 5B7EB9410499542E8C5724F5 /* Pods-LiveKitReactNativeMeet-LiveKitReactNativeMeetTests.debug.xcconfig */, 149 | 89C6BE57DB24E9ADA2F236DE /* Pods-LiveKitReactNativeMeet-LiveKitReactNativeMeetTests.release.xcconfig */, 150 | ); 151 | path = Pods; 152 | sourceTree = ""; 153 | }; 154 | /* End PBXGroup section */ 155 | 156 | /* Begin PBXNativeTarget section */ 157 | 00E356ED1AD99517003FC87E /* LiveKitReactNativeMeetTests */ = { 158 | isa = PBXNativeTarget; 159 | buildConfigurationList = 00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget "LiveKitReactNativeMeetTests" */; 160 | buildPhases = ( 161 | A55EABD7B0C7F3A422A6CC61 /* [CP] Check Pods Manifest.lock */, 162 | 00E356EA1AD99517003FC87E /* Sources */, 163 | 00E356EB1AD99517003FC87E /* Frameworks */, 164 | 00E356EC1AD99517003FC87E /* Resources */, 165 | C59DA0FBD6956966B86A3779 /* [CP] Embed Pods Frameworks */, 166 | F6A41C54EA430FDDC6A6ED99 /* [CP] Copy Pods Resources */, 167 | ); 168 | buildRules = ( 169 | ); 170 | dependencies = ( 171 | 00E356F51AD99517003FC87E /* PBXTargetDependency */, 172 | ); 173 | name = LiveKitReactNativeMeetTests; 174 | productName = LiveKitReactNativeMeetTests; 175 | productReference = 00E356EE1AD99517003FC87E /* LiveKitReactNativeMeetTests.xctest */; 176 | productType = "com.apple.product-type.bundle.unit-test"; 177 | }; 178 | 13B07F861A680F5B00A75B9A /* LiveKitReactNativeMeet */ = { 179 | isa = PBXNativeTarget; 180 | buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "LiveKitReactNativeMeet" */; 181 | buildPhases = ( 182 | C38B50BA6285516D6DCD4F65 /* [CP] Check Pods Manifest.lock */, 183 | 13B07F871A680F5B00A75B9A /* Sources */, 184 | 13B07F8C1A680F5B00A75B9A /* Frameworks */, 185 | 13B07F8E1A680F5B00A75B9A /* Resources */, 186 | 00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */, 187 | 00EEFC60759A1932668264C0 /* [CP] Embed Pods Frameworks */, 188 | E235C05ADACE081382539298 /* [CP] Copy Pods Resources */, 189 | ); 190 | buildRules = ( 191 | ); 192 | dependencies = ( 193 | ); 194 | name = LiveKitReactNativeMeet; 195 | productName = LiveKitReactNativeMeet; 196 | productReference = 13B07F961A680F5B00A75B9A /* LiveKitReactNativeMeet.app */; 197 | productType = "com.apple.product-type.application"; 198 | }; 199 | /* End PBXNativeTarget section */ 200 | 201 | /* Begin PBXProject section */ 202 | 83CBB9F71A601CBA00E9B192 /* Project object */ = { 203 | isa = PBXProject; 204 | attributes = { 205 | LastUpgradeCheck = 1210; 206 | TargetAttributes = { 207 | 00E356ED1AD99517003FC87E = { 208 | CreatedOnToolsVersion = 6.2; 209 | TestTargetID = 13B07F861A680F5B00A75B9A; 210 | }; 211 | 13B07F861A680F5B00A75B9A = { 212 | LastSwiftMigration = 1120; 213 | }; 214 | }; 215 | }; 216 | buildConfigurationList = 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "LiveKitReactNativeMeet" */; 217 | compatibilityVersion = "Xcode 12.0"; 218 | developmentRegion = en; 219 | hasScannedForEncodings = 0; 220 | knownRegions = ( 221 | en, 222 | Base, 223 | ); 224 | mainGroup = 83CBB9F61A601CBA00E9B192; 225 | productRefGroup = 83CBBA001A601CBA00E9B192 /* Products */; 226 | projectDirPath = ""; 227 | projectRoot = ""; 228 | targets = ( 229 | 13B07F861A680F5B00A75B9A /* LiveKitReactNativeMeet */, 230 | 00E356ED1AD99517003FC87E /* LiveKitReactNativeMeetTests */, 231 | ); 232 | }; 233 | /* End PBXProject section */ 234 | 235 | /* Begin PBXResourcesBuildPhase section */ 236 | 00E356EC1AD99517003FC87E /* Resources */ = { 237 | isa = PBXResourcesBuildPhase; 238 | buildActionMask = 2147483647; 239 | files = ( 240 | ); 241 | runOnlyForDeploymentPostprocessing = 0; 242 | }; 243 | 13B07F8E1A680F5B00A75B9A /* Resources */ = { 244 | isa = PBXResourcesBuildPhase; 245 | buildActionMask = 2147483647; 246 | files = ( 247 | 6132EF182BDFF13200BBE14D /* PrivacyInfo.xcprivacy in Resources */, 248 | 81AB9BB82411601600AC10FF /* LaunchScreen.storyboard in Resources */, 249 | 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */, 250 | ); 251 | runOnlyForDeploymentPostprocessing = 0; 252 | }; 253 | /* End PBXResourcesBuildPhase section */ 254 | 255 | /* Begin PBXShellScriptBuildPhase section */ 256 | 00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */ = { 257 | isa = PBXShellScriptBuildPhase; 258 | buildActionMask = 2147483647; 259 | files = ( 260 | ); 261 | inputPaths = ( 262 | "$(SRCROOT)/.xcode.env.local", 263 | "$(SRCROOT)/.xcode.env", 264 | ); 265 | name = "Bundle React Native code and images"; 266 | outputPaths = ( 267 | ); 268 | runOnlyForDeploymentPostprocessing = 0; 269 | shellPath = /bin/sh; 270 | shellScript = "set -e\n\nWITH_ENVIRONMENT=\"../node_modules/react-native/scripts/xcode/with-environment.sh\"\nREACT_NATIVE_XCODE=\"../node_modules/react-native/scripts/react-native-xcode.sh\"\n\n/bin/sh -c \"$WITH_ENVIRONMENT $REACT_NATIVE_XCODE\"\n"; 271 | }; 272 | 00EEFC60759A1932668264C0 /* [CP] Embed Pods Frameworks */ = { 273 | isa = PBXShellScriptBuildPhase; 274 | buildActionMask = 2147483647; 275 | files = ( 276 | ); 277 | inputFileListPaths = ( 278 | "${PODS_ROOT}/Target Support Files/Pods-LiveKitReactNativeMeet/Pods-LiveKitReactNativeMeet-frameworks-${CONFIGURATION}-input-files.xcfilelist", 279 | ); 280 | name = "[CP] Embed Pods Frameworks"; 281 | outputFileListPaths = ( 282 | "${PODS_ROOT}/Target Support Files/Pods-LiveKitReactNativeMeet/Pods-LiveKitReactNativeMeet-frameworks-${CONFIGURATION}-output-files.xcfilelist", 283 | ); 284 | runOnlyForDeploymentPostprocessing = 0; 285 | shellPath = /bin/sh; 286 | shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-LiveKitReactNativeMeet/Pods-LiveKitReactNativeMeet-frameworks.sh\"\n"; 287 | showEnvVarsInLog = 0; 288 | }; 289 | A55EABD7B0C7F3A422A6CC61 /* [CP] Check Pods Manifest.lock */ = { 290 | isa = PBXShellScriptBuildPhase; 291 | buildActionMask = 2147483647; 292 | files = ( 293 | ); 294 | inputFileListPaths = ( 295 | ); 296 | inputPaths = ( 297 | "${PODS_PODFILE_DIR_PATH}/Podfile.lock", 298 | "${PODS_ROOT}/Manifest.lock", 299 | ); 300 | name = "[CP] Check Pods Manifest.lock"; 301 | outputFileListPaths = ( 302 | ); 303 | outputPaths = ( 304 | "$(DERIVED_FILE_DIR)/Pods-LiveKitReactNativeMeet-LiveKitReactNativeMeetTests-checkManifestLockResult.txt", 305 | ); 306 | runOnlyForDeploymentPostprocessing = 0; 307 | shellPath = /bin/sh; 308 | shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; 309 | showEnvVarsInLog = 0; 310 | }; 311 | C38B50BA6285516D6DCD4F65 /* [CP] Check Pods Manifest.lock */ = { 312 | isa = PBXShellScriptBuildPhase; 313 | buildActionMask = 2147483647; 314 | files = ( 315 | ); 316 | inputFileListPaths = ( 317 | ); 318 | inputPaths = ( 319 | "${PODS_PODFILE_DIR_PATH}/Podfile.lock", 320 | "${PODS_ROOT}/Manifest.lock", 321 | ); 322 | name = "[CP] Check Pods Manifest.lock"; 323 | outputFileListPaths = ( 324 | ); 325 | outputPaths = ( 326 | "$(DERIVED_FILE_DIR)/Pods-LiveKitReactNativeMeet-checkManifestLockResult.txt", 327 | ); 328 | runOnlyForDeploymentPostprocessing = 0; 329 | shellPath = /bin/sh; 330 | shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; 331 | showEnvVarsInLog = 0; 332 | }; 333 | C59DA0FBD6956966B86A3779 /* [CP] Embed Pods Frameworks */ = { 334 | isa = PBXShellScriptBuildPhase; 335 | buildActionMask = 2147483647; 336 | files = ( 337 | ); 338 | inputFileListPaths = ( 339 | "${PODS_ROOT}/Target Support Files/Pods-LiveKitReactNativeMeet-LiveKitReactNativeMeetTests/Pods-LiveKitReactNativeMeet-LiveKitReactNativeMeetTests-frameworks-${CONFIGURATION}-input-files.xcfilelist", 340 | ); 341 | name = "[CP] Embed Pods Frameworks"; 342 | outputFileListPaths = ( 343 | "${PODS_ROOT}/Target Support Files/Pods-LiveKitReactNativeMeet-LiveKitReactNativeMeetTests/Pods-LiveKitReactNativeMeet-LiveKitReactNativeMeetTests-frameworks-${CONFIGURATION}-output-files.xcfilelist", 344 | ); 345 | runOnlyForDeploymentPostprocessing = 0; 346 | shellPath = /bin/sh; 347 | shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-LiveKitReactNativeMeet-LiveKitReactNativeMeetTests/Pods-LiveKitReactNativeMeet-LiveKitReactNativeMeetTests-frameworks.sh\"\n"; 348 | showEnvVarsInLog = 0; 349 | }; 350 | E235C05ADACE081382539298 /* [CP] Copy Pods Resources */ = { 351 | isa = PBXShellScriptBuildPhase; 352 | buildActionMask = 2147483647; 353 | files = ( 354 | ); 355 | inputFileListPaths = ( 356 | "${PODS_ROOT}/Target Support Files/Pods-LiveKitReactNativeMeet/Pods-LiveKitReactNativeMeet-resources-${CONFIGURATION}-input-files.xcfilelist", 357 | ); 358 | name = "[CP] Copy Pods Resources"; 359 | outputFileListPaths = ( 360 | "${PODS_ROOT}/Target Support Files/Pods-LiveKitReactNativeMeet/Pods-LiveKitReactNativeMeet-resources-${CONFIGURATION}-output-files.xcfilelist", 361 | ); 362 | runOnlyForDeploymentPostprocessing = 0; 363 | shellPath = /bin/sh; 364 | shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-LiveKitReactNativeMeet/Pods-LiveKitReactNativeMeet-resources.sh\"\n"; 365 | showEnvVarsInLog = 0; 366 | }; 367 | F6A41C54EA430FDDC6A6ED99 /* [CP] Copy Pods Resources */ = { 368 | isa = PBXShellScriptBuildPhase; 369 | buildActionMask = 2147483647; 370 | files = ( 371 | ); 372 | inputFileListPaths = ( 373 | "${PODS_ROOT}/Target Support Files/Pods-LiveKitReactNativeMeet-LiveKitReactNativeMeetTests/Pods-LiveKitReactNativeMeet-LiveKitReactNativeMeetTests-resources-${CONFIGURATION}-input-files.xcfilelist", 374 | ); 375 | name = "[CP] Copy Pods Resources"; 376 | outputFileListPaths = ( 377 | "${PODS_ROOT}/Target Support Files/Pods-LiveKitReactNativeMeet-LiveKitReactNativeMeetTests/Pods-LiveKitReactNativeMeet-LiveKitReactNativeMeetTests-resources-${CONFIGURATION}-output-files.xcfilelist", 378 | ); 379 | runOnlyForDeploymentPostprocessing = 0; 380 | shellPath = /bin/sh; 381 | shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-LiveKitReactNativeMeet-LiveKitReactNativeMeetTests/Pods-LiveKitReactNativeMeet-LiveKitReactNativeMeetTests-resources.sh\"\n"; 382 | showEnvVarsInLog = 0; 383 | }; 384 | /* End PBXShellScriptBuildPhase section */ 385 | 386 | /* Begin PBXSourcesBuildPhase section */ 387 | 00E356EA1AD99517003FC87E /* Sources */ = { 388 | isa = PBXSourcesBuildPhase; 389 | buildActionMask = 2147483647; 390 | files = ( 391 | 00E356F31AD99517003FC87E /* LiveKitReactNativeMeetTests.m in Sources */, 392 | ); 393 | runOnlyForDeploymentPostprocessing = 0; 394 | }; 395 | 13B07F871A680F5B00A75B9A /* Sources */ = { 396 | isa = PBXSourcesBuildPhase; 397 | buildActionMask = 2147483647; 398 | files = ( 399 | 13B07FBC1A68108700A75B9A /* AppDelegate.mm in Sources */, 400 | 13B07FC11A68108700A75B9A /* main.m in Sources */, 401 | ); 402 | runOnlyForDeploymentPostprocessing = 0; 403 | }; 404 | /* End PBXSourcesBuildPhase section */ 405 | 406 | /* Begin PBXTargetDependency section */ 407 | 00E356F51AD99517003FC87E /* PBXTargetDependency */ = { 408 | isa = PBXTargetDependency; 409 | target = 13B07F861A680F5B00A75B9A /* LiveKitReactNativeMeet */; 410 | targetProxy = 00E356F41AD99517003FC87E /* PBXContainerItemProxy */; 411 | }; 412 | /* End PBXTargetDependency section */ 413 | 414 | /* Begin XCBuildConfiguration section */ 415 | 00E356F61AD99517003FC87E /* Debug */ = { 416 | isa = XCBuildConfiguration; 417 | baseConfigurationReference = 5B7EB9410499542E8C5724F5 /* Pods-LiveKitReactNativeMeet-LiveKitReactNativeMeetTests.debug.xcconfig */; 418 | buildSettings = { 419 | BUNDLE_LOADER = "$(TEST_HOST)"; 420 | GCC_PREPROCESSOR_DEFINITIONS = ( 421 | "DEBUG=1", 422 | "$(inherited)", 423 | ); 424 | INFOPLIST_FILE = LiveKitReactNativeMeetTests/Info.plist; 425 | IPHONEOS_DEPLOYMENT_TARGET = 13.4; 426 | LD_RUNPATH_SEARCH_PATHS = ( 427 | "$(inherited)", 428 | "@executable_path/Frameworks", 429 | "@loader_path/Frameworks", 430 | ); 431 | OTHER_LDFLAGS = ( 432 | "-ObjC", 433 | "-lc++", 434 | "$(inherited)", 435 | ); 436 | PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)"; 437 | PRODUCT_NAME = "$(TARGET_NAME)"; 438 | TEST_HOST = "$(BUILT_PRODUCTS_DIR)/LiveKitReactNativeMeet.app/LiveKitReactNativeMeet"; 439 | }; 440 | name = Debug; 441 | }; 442 | 00E356F71AD99517003FC87E /* Release */ = { 443 | isa = XCBuildConfiguration; 444 | baseConfigurationReference = 89C6BE57DB24E9ADA2F236DE /* Pods-LiveKitReactNativeMeet-LiveKitReactNativeMeetTests.release.xcconfig */; 445 | buildSettings = { 446 | BUNDLE_LOADER = "$(TEST_HOST)"; 447 | COPY_PHASE_STRIP = NO; 448 | INFOPLIST_FILE = LiveKitReactNativeMeetTests/Info.plist; 449 | IPHONEOS_DEPLOYMENT_TARGET = 13.4; 450 | LD_RUNPATH_SEARCH_PATHS = ( 451 | "$(inherited)", 452 | "@executable_path/Frameworks", 453 | "@loader_path/Frameworks", 454 | ); 455 | OTHER_LDFLAGS = ( 456 | "-ObjC", 457 | "-lc++", 458 | "$(inherited)", 459 | ); 460 | PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)"; 461 | PRODUCT_NAME = "$(TARGET_NAME)"; 462 | TEST_HOST = "$(BUILT_PRODUCTS_DIR)/LiveKitReactNativeMeet.app/LiveKitReactNativeMeet"; 463 | }; 464 | name = Release; 465 | }; 466 | 13B07F941A680F5B00A75B9A /* Debug */ = { 467 | isa = XCBuildConfiguration; 468 | baseConfigurationReference = 3B4392A12AC88292D35C810B /* Pods-LiveKitReactNativeMeet.debug.xcconfig */; 469 | buildSettings = { 470 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 471 | CLANG_ENABLE_MODULES = YES; 472 | CURRENT_PROJECT_VERSION = 1; 473 | ENABLE_BITCODE = NO; 474 | INFOPLIST_FILE = LiveKitReactNativeMeet/Info.plist; 475 | LD_RUNPATH_SEARCH_PATHS = ( 476 | "$(inherited)", 477 | "@executable_path/Frameworks", 478 | ); 479 | MARKETING_VERSION = 1.0; 480 | OTHER_LDFLAGS = ( 481 | "$(inherited)", 482 | "-ObjC", 483 | "-lc++", 484 | ); 485 | PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)"; 486 | PRODUCT_NAME = LiveKitReactNativeMeet; 487 | SWIFT_OPTIMIZATION_LEVEL = "-Onone"; 488 | SWIFT_VERSION = 5.0; 489 | VERSIONING_SYSTEM = "apple-generic"; 490 | }; 491 | name = Debug; 492 | }; 493 | 13B07F951A680F5B00A75B9A /* Release */ = { 494 | isa = XCBuildConfiguration; 495 | baseConfigurationReference = 5709B34CF0A7D63546082F79 /* Pods-LiveKitReactNativeMeet.release.xcconfig */; 496 | buildSettings = { 497 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 498 | CLANG_ENABLE_MODULES = YES; 499 | CURRENT_PROJECT_VERSION = 1; 500 | INFOPLIST_FILE = LiveKitReactNativeMeet/Info.plist; 501 | LD_RUNPATH_SEARCH_PATHS = ( 502 | "$(inherited)", 503 | "@executable_path/Frameworks", 504 | ); 505 | MARKETING_VERSION = 1.0; 506 | OTHER_LDFLAGS = ( 507 | "$(inherited)", 508 | "-ObjC", 509 | "-lc++", 510 | ); 511 | PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)"; 512 | PRODUCT_NAME = LiveKitReactNativeMeet; 513 | SWIFT_VERSION = 5.0; 514 | VERSIONING_SYSTEM = "apple-generic"; 515 | }; 516 | name = Release; 517 | }; 518 | 83CBBA201A601CBA00E9B192 /* Debug */ = { 519 | isa = XCBuildConfiguration; 520 | buildSettings = { 521 | ALWAYS_SEARCH_USER_PATHS = NO; 522 | CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; 523 | CLANG_CXX_LANGUAGE_STANDARD = "c++20"; 524 | CLANG_CXX_LIBRARY = "libc++"; 525 | CLANG_ENABLE_MODULES = YES; 526 | CLANG_ENABLE_OBJC_ARC = YES; 527 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 528 | CLANG_WARN_BOOL_CONVERSION = YES; 529 | CLANG_WARN_COMMA = YES; 530 | CLANG_WARN_CONSTANT_CONVERSION = YES; 531 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 532 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 533 | CLANG_WARN_EMPTY_BODY = YES; 534 | CLANG_WARN_ENUM_CONVERSION = YES; 535 | CLANG_WARN_INFINITE_RECURSION = YES; 536 | CLANG_WARN_INT_CONVERSION = YES; 537 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 538 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 539 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 540 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 541 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; 542 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 543 | CLANG_WARN_STRICT_PROTOTYPES = YES; 544 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 545 | CLANG_WARN_UNREACHABLE_CODE = YES; 546 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 547 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 548 | COPY_PHASE_STRIP = NO; 549 | ENABLE_STRICT_OBJC_MSGSEND = YES; 550 | ENABLE_TESTABILITY = YES; 551 | "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = i386; 552 | GCC_C_LANGUAGE_STANDARD = gnu99; 553 | GCC_DYNAMIC_NO_PIC = NO; 554 | GCC_NO_COMMON_BLOCKS = YES; 555 | GCC_OPTIMIZATION_LEVEL = 0; 556 | GCC_PREPROCESSOR_DEFINITIONS = ( 557 | "DEBUG=1", 558 | "$(inherited)", 559 | ); 560 | GCC_SYMBOLS_PRIVATE_EXTERN = NO; 561 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 562 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 563 | GCC_WARN_UNDECLARED_SELECTOR = YES; 564 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 565 | GCC_WARN_UNUSED_FUNCTION = YES; 566 | GCC_WARN_UNUSED_VARIABLE = YES; 567 | IPHONEOS_DEPLOYMENT_TARGET = 13.4; 568 | LD_RUNPATH_SEARCH_PATHS = ( 569 | /usr/lib/swift, 570 | "$(inherited)", 571 | ); 572 | LIBRARY_SEARCH_PATHS = ( 573 | "\"$(SDKROOT)/usr/lib/swift\"", 574 | "\"$(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME)\"", 575 | "\"$(inherited)\"", 576 | ); 577 | MTL_ENABLE_DEBUG_INFO = YES; 578 | ONLY_ACTIVE_ARCH = YES; 579 | OTHER_CFLAGS = "$(inherited)"; 580 | OTHER_CPLUSPLUSFLAGS = ( 581 | "$(OTHER_CFLAGS)", 582 | "-DFOLLY_NO_CONFIG", 583 | "-DFOLLY_MOBILE=1", 584 | "-DFOLLY_USE_LIBCPP=1", 585 | "-DFOLLY_CFG_NO_COROUTINES=1", 586 | ); 587 | OTHER_LDFLAGS = ( 588 | "$(inherited)", 589 | " ", 590 | ); 591 | REACT_NATIVE_PATH = "${PODS_ROOT}/../../node_modules/react-native"; 592 | SDKROOT = iphoneos; 593 | USE_HERMES = true; 594 | }; 595 | name = Debug; 596 | }; 597 | 83CBBA211A601CBA00E9B192 /* Release */ = { 598 | isa = XCBuildConfiguration; 599 | buildSettings = { 600 | ALWAYS_SEARCH_USER_PATHS = NO; 601 | CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; 602 | CLANG_CXX_LANGUAGE_STANDARD = "c++20"; 603 | CLANG_CXX_LIBRARY = "libc++"; 604 | CLANG_ENABLE_MODULES = YES; 605 | CLANG_ENABLE_OBJC_ARC = YES; 606 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 607 | CLANG_WARN_BOOL_CONVERSION = YES; 608 | CLANG_WARN_COMMA = YES; 609 | CLANG_WARN_CONSTANT_CONVERSION = YES; 610 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 611 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 612 | CLANG_WARN_EMPTY_BODY = YES; 613 | CLANG_WARN_ENUM_CONVERSION = YES; 614 | CLANG_WARN_INFINITE_RECURSION = YES; 615 | CLANG_WARN_INT_CONVERSION = YES; 616 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 617 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 618 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 619 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 620 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; 621 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 622 | CLANG_WARN_STRICT_PROTOTYPES = YES; 623 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 624 | CLANG_WARN_UNREACHABLE_CODE = YES; 625 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 626 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 627 | COPY_PHASE_STRIP = YES; 628 | ENABLE_NS_ASSERTIONS = NO; 629 | ENABLE_STRICT_OBJC_MSGSEND = YES; 630 | "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = i386; 631 | GCC_C_LANGUAGE_STANDARD = gnu99; 632 | GCC_NO_COMMON_BLOCKS = YES; 633 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 634 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 635 | GCC_WARN_UNDECLARED_SELECTOR = YES; 636 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 637 | GCC_WARN_UNUSED_FUNCTION = YES; 638 | GCC_WARN_UNUSED_VARIABLE = YES; 639 | IPHONEOS_DEPLOYMENT_TARGET = 13.4; 640 | LD_RUNPATH_SEARCH_PATHS = ( 641 | /usr/lib/swift, 642 | "$(inherited)", 643 | ); 644 | LIBRARY_SEARCH_PATHS = ( 645 | "\"$(SDKROOT)/usr/lib/swift\"", 646 | "\"$(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME)\"", 647 | "\"$(inherited)\"", 648 | ); 649 | MTL_ENABLE_DEBUG_INFO = NO; 650 | OTHER_CFLAGS = "$(inherited)"; 651 | OTHER_CPLUSPLUSFLAGS = ( 652 | "$(OTHER_CFLAGS)", 653 | "-DFOLLY_NO_CONFIG", 654 | "-DFOLLY_MOBILE=1", 655 | "-DFOLLY_USE_LIBCPP=1", 656 | "-DFOLLY_CFG_NO_COROUTINES=1", 657 | ); 658 | OTHER_LDFLAGS = ( 659 | "$(inherited)", 660 | " ", 661 | ); 662 | REACT_NATIVE_PATH = "${PODS_ROOT}/../../node_modules/react-native"; 663 | SDKROOT = iphoneos; 664 | USE_HERMES = true; 665 | VALIDATE_PRODUCT = YES; 666 | }; 667 | name = Release; 668 | }; 669 | /* End XCBuildConfiguration section */ 670 | 671 | /* Begin XCConfigurationList section */ 672 | 00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget "LiveKitReactNativeMeetTests" */ = { 673 | isa = XCConfigurationList; 674 | buildConfigurations = ( 675 | 00E356F61AD99517003FC87E /* Debug */, 676 | 00E356F71AD99517003FC87E /* Release */, 677 | ); 678 | defaultConfigurationIsVisible = 0; 679 | defaultConfigurationName = Release; 680 | }; 681 | 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "LiveKitReactNativeMeet" */ = { 682 | isa = XCConfigurationList; 683 | buildConfigurations = ( 684 | 13B07F941A680F5B00A75B9A /* Debug */, 685 | 13B07F951A680F5B00A75B9A /* Release */, 686 | ); 687 | defaultConfigurationIsVisible = 0; 688 | defaultConfigurationName = Release; 689 | }; 690 | 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "LiveKitReactNativeMeet" */ = { 691 | isa = XCConfigurationList; 692 | buildConfigurations = ( 693 | 83CBBA201A601CBA00E9B192 /* Debug */, 694 | 83CBBA211A601CBA00E9B192 /* Release */, 695 | ); 696 | defaultConfigurationIsVisible = 0; 697 | defaultConfigurationName = Release; 698 | }; 699 | /* End XCConfigurationList section */ 700 | }; 701 | rootObject = 83CBB9F71A601CBA00E9B192 /* Project object */; 702 | } 703 | -------------------------------------------------------------------------------- /ios/LiveKitReactNativeMeet.xcodeproj/xcshareddata/xcschemes/LiveKitReactNativeMeet.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 33 | 39 | 40 | 41 | 42 | 43 | 53 | 55 | 61 | 62 | 63 | 64 | 70 | 72 | 78 | 79 | 80 | 81 | 83 | 84 | 87 | 88 | 89 | -------------------------------------------------------------------------------- /ios/LiveKitReactNativeMeet.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /ios/LiveKitReactNativeMeet/AppDelegate.h: -------------------------------------------------------------------------------- 1 | #import 2 | #import 3 | 4 | @interface AppDelegate : RCTAppDelegate 5 | 6 | @end 7 | -------------------------------------------------------------------------------- /ios/LiveKitReactNativeMeet/AppDelegate.mm: -------------------------------------------------------------------------------- 1 | #import "AppDelegate.h" 2 | #import "LivekitReactNative.h" 3 | #import 4 | 5 | @implementation AppDelegate 6 | 7 | - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 8 | { 9 | [LivekitReactNative setup]; 10 | self.moduleName = @"LiveKitReactNativeMeet"; 11 | // You can add your custom initial props in the dictionary below. 12 | // They will be passed down to the ViewController used by React Native. 13 | self.initialProps = @{}; 14 | 15 | return [super application:application didFinishLaunchingWithOptions:launchOptions]; 16 | } 17 | 18 | - (NSURL *)sourceURLForBridge:(RCTBridge *)bridge 19 | { 20 | return [self getBundleURL]; 21 | } 22 | 23 | - (NSURL *)getBundleURL 24 | { 25 | #if DEBUG 26 | return [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index"]; 27 | #else 28 | return [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"]; 29 | #endif 30 | } 31 | 32 | @end 33 | -------------------------------------------------------------------------------- /ios/LiveKitReactNativeMeet/Images.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "iphone", 5 | "scale" : "2x", 6 | "size" : "20x20" 7 | }, 8 | { 9 | "idiom" : "iphone", 10 | "scale" : "3x", 11 | "size" : "20x20" 12 | }, 13 | { 14 | "idiom" : "iphone", 15 | "scale" : "2x", 16 | "size" : "29x29" 17 | }, 18 | { 19 | "idiom" : "iphone", 20 | "scale" : "3x", 21 | "size" : "29x29" 22 | }, 23 | { 24 | "idiom" : "iphone", 25 | "scale" : "2x", 26 | "size" : "40x40" 27 | }, 28 | { 29 | "idiom" : "iphone", 30 | "scale" : "3x", 31 | "size" : "40x40" 32 | }, 33 | { 34 | "idiom" : "iphone", 35 | "scale" : "2x", 36 | "size" : "60x60" 37 | }, 38 | { 39 | "idiom" : "iphone", 40 | "scale" : "3x", 41 | "size" : "60x60" 42 | }, 43 | { 44 | "idiom" : "ios-marketing", 45 | "scale" : "1x", 46 | "size" : "1024x1024" 47 | } 48 | ], 49 | "info" : { 50 | "author" : "xcode", 51 | "version" : 1 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /ios/LiveKitReactNativeMeet/Images.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /ios/LiveKitReactNativeMeet/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleDisplayName 8 | LiveKitReactNativeMeet 9 | CFBundleExecutable 10 | $(EXECUTABLE_NAME) 11 | CFBundleIdentifier 12 | $(PRODUCT_BUNDLE_IDENTIFIER) 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | $(PRODUCT_NAME) 17 | CFBundlePackageType 18 | APPL 19 | CFBundleShortVersionString 20 | $(MARKETING_VERSION) 21 | CFBundleSignature 22 | ???? 23 | CFBundleVersion 24 | $(CURRENT_PROJECT_VERSION) 25 | LSRequiresIPhoneOS 26 | 27 | NSAppTransportSecurity 28 | 29 | 30 | NSAllowsArbitraryLoads 31 | 32 | NSAllowsLocalNetworking 33 | 34 | 35 | NSLocationWhenInUseUsageDescription 36 | 37 | UILaunchStoryboardName 38 | LaunchScreen 39 | UIRequiredDeviceCapabilities 40 | 41 | armv7 42 | 43 | UISupportedInterfaceOrientations 44 | 45 | UIInterfaceOrientationPortrait 46 | UIInterfaceOrientationLandscapeLeft 47 | UIInterfaceOrientationLandscapeRight 48 | 49 | UIViewControllerBasedStatusBarAppearance 50 | 51 | 52 | 53 | -------------------------------------------------------------------------------- /ios/LiveKitReactNativeMeet/LaunchScreen.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 24 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | -------------------------------------------------------------------------------- /ios/LiveKitReactNativeMeet/PrivacyInfo.xcprivacy: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | NSPrivacyCollectedDataTypes 6 | 7 | 8 | NSPrivacyAccessedAPITypes 9 | 10 | 11 | NSPrivacyAccessedAPIType 12 | NSPrivacyAccessedAPICategoryFileTimestamp 13 | NSPrivacyAccessedAPITypeReasons 14 | 15 | C617.1 16 | 17 | 18 | 19 | NSPrivacyAccessedAPIType 20 | NSPrivacyAccessedAPICategoryUserDefaults 21 | NSPrivacyAccessedAPITypeReasons 22 | 23 | CA92.1 24 | 25 | 26 | 27 | NSPrivacyAccessedAPIType 28 | NSPrivacyAccessedAPICategorySystemBootTime 29 | NSPrivacyAccessedAPITypeReasons 30 | 31 | 35F9.1 32 | 33 | 34 | 35 | NSPrivacyTracking 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /ios/LiveKitReactNativeMeet/main.m: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | #import "AppDelegate.h" 4 | 5 | int main(int argc, char *argv[]) 6 | { 7 | @autoreleasepool { 8 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /ios/LiveKitReactNativeMeetTests/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | BNDL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1 23 | 24 | 25 | -------------------------------------------------------------------------------- /ios/LiveKitReactNativeMeetTests/LiveKitReactNativeMeetTests.m: -------------------------------------------------------------------------------- 1 | #import 2 | #import 3 | 4 | #import 5 | #import 6 | 7 | #define TIMEOUT_SECONDS 600 8 | #define TEXT_TO_LOOK_FOR @"Welcome to React" 9 | 10 | @interface LiveKitReactNativeMeetTests : XCTestCase 11 | 12 | @end 13 | 14 | @implementation LiveKitReactNativeMeetTests 15 | 16 | - (BOOL)findSubviewInView:(UIView *)view matching:(BOOL (^)(UIView *view))test 17 | { 18 | if (test(view)) { 19 | return YES; 20 | } 21 | for (UIView *subview in [view subviews]) { 22 | if ([self findSubviewInView:subview matching:test]) { 23 | return YES; 24 | } 25 | } 26 | return NO; 27 | } 28 | 29 | - (void)testRendersWelcomeScreen 30 | { 31 | UIViewController *vc = [[[RCTSharedApplication() delegate] window] rootViewController]; 32 | NSDate *date = [NSDate dateWithTimeIntervalSinceNow:TIMEOUT_SECONDS]; 33 | BOOL foundElement = NO; 34 | 35 | __block NSString *redboxError = nil; 36 | #ifdef DEBUG 37 | RCTSetLogFunction( 38 | ^(RCTLogLevel level, RCTLogSource source, NSString *fileName, NSNumber *lineNumber, NSString *message) { 39 | if (level >= RCTLogLevelError) { 40 | redboxError = message; 41 | } 42 | }); 43 | #endif 44 | 45 | while ([date timeIntervalSinceNow] > 0 && !foundElement && !redboxError) { 46 | [[NSRunLoop mainRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate dateWithTimeIntervalSinceNow:0.1]]; 47 | [[NSRunLoop mainRunLoop] runMode:NSRunLoopCommonModes beforeDate:[NSDate dateWithTimeIntervalSinceNow:0.1]]; 48 | 49 | foundElement = [self findSubviewInView:vc.view 50 | matching:^BOOL(UIView *view) { 51 | if ([view.accessibilityLabel isEqualToString:TEXT_TO_LOOK_FOR]) { 52 | return YES; 53 | } 54 | return NO; 55 | }]; 56 | } 57 | 58 | #ifdef DEBUG 59 | RCTSetLogFunction(RCTDefaultLogFunction); 60 | #endif 61 | 62 | XCTAssertNil(redboxError, @"RedBox error: %@", redboxError); 63 | XCTAssertTrue(foundElement, @"Couldn't find element with text '%@' in %d seconds", TEXT_TO_LOOK_FOR, TIMEOUT_SECONDS); 64 | } 65 | 66 | @end 67 | -------------------------------------------------------------------------------- /ios/Podfile: -------------------------------------------------------------------------------- 1 | # Resolve react_native_pods.rb with node to allow for hoisting 2 | require Pod::Executable.execute_command('node', ['-p', 3 | 'require.resolve( 4 | "react-native/scripts/react_native_pods.rb", 5 | {paths: [process.argv[1]]}, 6 | )', __dir__]).strip 7 | 8 | platform :ios, min_ios_version_supported 9 | prepare_react_native_project! 10 | 11 | # If you are using a `react-native-flipper` your iOS build will fail when `NO_FLIPPER=1` is set. 12 | # because `react-native-flipper` depends on (FlipperKit,...) that will be excluded 13 | # 14 | # To fix this you can also exclude `react-native-flipper` using a `react-native.config.js` 15 | # ```js 16 | # module.exports = { 17 | # dependencies: { 18 | # ...(process.env.NO_FLIPPER ? { 'react-native-flipper': { platforms: { ios: null } } } : {}), 19 | # ``` 20 | flipper_config = ENV['NO_FLIPPER'] == "1" ? FlipperConfiguration.disabled : FlipperConfiguration.enabled 21 | 22 | linkage = ENV['USE_FRAMEWORKS'] 23 | if linkage != nil 24 | Pod::UI.puts "Configuring Pod with #{linkage}ally linked Frameworks".green 25 | use_frameworks! :linkage => linkage.to_sym 26 | end 27 | 28 | target 'LiveKitReactNativeMeet' do 29 | config = use_native_modules! 30 | 31 | use_react_native!( 32 | :path => config[:reactNativePath], 33 | # Enables Flipper. 34 | # 35 | # Note that if you have use_frameworks! enabled, Flipper will not work and 36 | # you should disable the next line. 37 | :flipper_configuration => flipper_config, 38 | # An absolute path to your application root. 39 | :app_path => "#{Pod::Config.instance.installation_root}/.." 40 | ) 41 | 42 | target 'LiveKitReactNativeMeetTests' do 43 | inherit! :complete 44 | # Pods for testing 45 | end 46 | 47 | post_install do |installer| 48 | # https://github.com/facebook/react-native/blob/main/packages/react-native/scripts/react_native_pods.rb#L197-L202 49 | react_native_post_install( 50 | installer, 51 | config[:reactNativePath], 52 | :mac_catalyst_enabled => false 53 | ) 54 | end 55 | end 56 | -------------------------------------------------------------------------------- /ios/Podfile.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - boost (1.83.0) 3 | - DoubleConversion (1.1.6) 4 | - FBLazyVector (0.73.8) 5 | - FBReactNativeSpec (0.73.8): 6 | - RCT-Folly (= 2022.05.16.00) 7 | - RCTRequired (= 0.73.8) 8 | - RCTTypeSafety (= 0.73.8) 9 | - React-Core (= 0.73.8) 10 | - React-jsi (= 0.73.8) 11 | - ReactCommon/turbomodule/core (= 0.73.8) 12 | - fmt (6.2.1) 13 | - glog (0.3.5) 14 | - hermes-engine (0.73.8): 15 | - hermes-engine/Pre-built (= 0.73.8) 16 | - hermes-engine/Pre-built (0.73.8) 17 | - libevent (2.1.12) 18 | - livekit-react-native (2.1.0): 19 | - livekit-react-native-webrtc 20 | - React-Core 21 | - livekit-react-native-webrtc (114.1.1): 22 | - React-Core 23 | - WebRTC-SDK (= 114.5735.08) 24 | - RCT-Folly (2022.05.16.00): 25 | - boost 26 | - DoubleConversion 27 | - fmt (~> 6.2.1) 28 | - glog 29 | - RCT-Folly/Default (= 2022.05.16.00) 30 | - RCT-Folly/Default (2022.05.16.00): 31 | - boost 32 | - DoubleConversion 33 | - fmt (~> 6.2.1) 34 | - glog 35 | - RCT-Folly/Fabric (2022.05.16.00): 36 | - boost 37 | - DoubleConversion 38 | - fmt (~> 6.2.1) 39 | - glog 40 | - RCT-Folly/Futures (2022.05.16.00): 41 | - boost 42 | - DoubleConversion 43 | - fmt (~> 6.2.1) 44 | - glog 45 | - libevent 46 | - RCTRequired (0.73.8) 47 | - RCTTypeSafety (0.73.8): 48 | - FBLazyVector (= 0.73.8) 49 | - RCTRequired (= 0.73.8) 50 | - React-Core (= 0.73.8) 51 | - React (0.73.8): 52 | - React-Core (= 0.73.8) 53 | - React-Core/DevSupport (= 0.73.8) 54 | - React-Core/RCTWebSocket (= 0.73.8) 55 | - React-RCTActionSheet (= 0.73.8) 56 | - React-RCTAnimation (= 0.73.8) 57 | - React-RCTBlob (= 0.73.8) 58 | - React-RCTImage (= 0.73.8) 59 | - React-RCTLinking (= 0.73.8) 60 | - React-RCTNetwork (= 0.73.8) 61 | - React-RCTSettings (= 0.73.8) 62 | - React-RCTText (= 0.73.8) 63 | - React-RCTVibration (= 0.73.8) 64 | - React-callinvoker (0.73.8) 65 | - React-Codegen (0.73.8): 66 | - DoubleConversion 67 | - FBReactNativeSpec 68 | - glog 69 | - hermes-engine 70 | - RCT-Folly 71 | - RCTRequired 72 | - RCTTypeSafety 73 | - React-Core 74 | - React-jsi 75 | - React-jsiexecutor 76 | - React-NativeModulesApple 77 | - React-rncore 78 | - ReactCommon/turbomodule/bridging 79 | - ReactCommon/turbomodule/core 80 | - React-Core (0.73.8): 81 | - glog 82 | - hermes-engine 83 | - RCT-Folly (= 2022.05.16.00) 84 | - React-Core/Default (= 0.73.8) 85 | - React-cxxreact 86 | - React-hermes 87 | - React-jsi 88 | - React-jsiexecutor 89 | - React-perflogger 90 | - React-runtimescheduler 91 | - React-utils 92 | - SocketRocket (= 0.6.1) 93 | - Yoga 94 | - React-Core/CoreModulesHeaders (0.73.8): 95 | - glog 96 | - hermes-engine 97 | - RCT-Folly (= 2022.05.16.00) 98 | - React-Core/Default 99 | - React-cxxreact 100 | - React-hermes 101 | - React-jsi 102 | - React-jsiexecutor 103 | - React-perflogger 104 | - React-runtimescheduler 105 | - React-utils 106 | - SocketRocket (= 0.6.1) 107 | - Yoga 108 | - React-Core/Default (0.73.8): 109 | - glog 110 | - hermes-engine 111 | - RCT-Folly (= 2022.05.16.00) 112 | - React-cxxreact 113 | - React-hermes 114 | - React-jsi 115 | - React-jsiexecutor 116 | - React-perflogger 117 | - React-runtimescheduler 118 | - React-utils 119 | - SocketRocket (= 0.6.1) 120 | - Yoga 121 | - React-Core/DevSupport (0.73.8): 122 | - glog 123 | - hermes-engine 124 | - RCT-Folly (= 2022.05.16.00) 125 | - React-Core/Default (= 0.73.8) 126 | - React-Core/RCTWebSocket (= 0.73.8) 127 | - React-cxxreact 128 | - React-hermes 129 | - React-jsi 130 | - React-jsiexecutor 131 | - React-jsinspector (= 0.73.8) 132 | - React-perflogger 133 | - React-runtimescheduler 134 | - React-utils 135 | - SocketRocket (= 0.6.1) 136 | - Yoga 137 | - React-Core/RCTActionSheetHeaders (0.73.8): 138 | - glog 139 | - hermes-engine 140 | - RCT-Folly (= 2022.05.16.00) 141 | - React-Core/Default 142 | - React-cxxreact 143 | - React-hermes 144 | - React-jsi 145 | - React-jsiexecutor 146 | - React-perflogger 147 | - React-runtimescheduler 148 | - React-utils 149 | - SocketRocket (= 0.6.1) 150 | - Yoga 151 | - React-Core/RCTAnimationHeaders (0.73.8): 152 | - glog 153 | - hermes-engine 154 | - RCT-Folly (= 2022.05.16.00) 155 | - React-Core/Default 156 | - React-cxxreact 157 | - React-hermes 158 | - React-jsi 159 | - React-jsiexecutor 160 | - React-perflogger 161 | - React-runtimescheduler 162 | - React-utils 163 | - SocketRocket (= 0.6.1) 164 | - Yoga 165 | - React-Core/RCTBlobHeaders (0.73.8): 166 | - glog 167 | - hermes-engine 168 | - RCT-Folly (= 2022.05.16.00) 169 | - React-Core/Default 170 | - React-cxxreact 171 | - React-hermes 172 | - React-jsi 173 | - React-jsiexecutor 174 | - React-perflogger 175 | - React-runtimescheduler 176 | - React-utils 177 | - SocketRocket (= 0.6.1) 178 | - Yoga 179 | - React-Core/RCTImageHeaders (0.73.8): 180 | - glog 181 | - hermes-engine 182 | - RCT-Folly (= 2022.05.16.00) 183 | - React-Core/Default 184 | - React-cxxreact 185 | - React-hermes 186 | - React-jsi 187 | - React-jsiexecutor 188 | - React-perflogger 189 | - React-runtimescheduler 190 | - React-utils 191 | - SocketRocket (= 0.6.1) 192 | - Yoga 193 | - React-Core/RCTLinkingHeaders (0.73.8): 194 | - glog 195 | - hermes-engine 196 | - RCT-Folly (= 2022.05.16.00) 197 | - React-Core/Default 198 | - React-cxxreact 199 | - React-hermes 200 | - React-jsi 201 | - React-jsiexecutor 202 | - React-perflogger 203 | - React-runtimescheduler 204 | - React-utils 205 | - SocketRocket (= 0.6.1) 206 | - Yoga 207 | - React-Core/RCTNetworkHeaders (0.73.8): 208 | - glog 209 | - hermes-engine 210 | - RCT-Folly (= 2022.05.16.00) 211 | - React-Core/Default 212 | - React-cxxreact 213 | - React-hermes 214 | - React-jsi 215 | - React-jsiexecutor 216 | - React-perflogger 217 | - React-runtimescheduler 218 | - React-utils 219 | - SocketRocket (= 0.6.1) 220 | - Yoga 221 | - React-Core/RCTSettingsHeaders (0.73.8): 222 | - glog 223 | - hermes-engine 224 | - RCT-Folly (= 2022.05.16.00) 225 | - React-Core/Default 226 | - React-cxxreact 227 | - React-hermes 228 | - React-jsi 229 | - React-jsiexecutor 230 | - React-perflogger 231 | - React-runtimescheduler 232 | - React-utils 233 | - SocketRocket (= 0.6.1) 234 | - Yoga 235 | - React-Core/RCTTextHeaders (0.73.8): 236 | - glog 237 | - hermes-engine 238 | - RCT-Folly (= 2022.05.16.00) 239 | - React-Core/Default 240 | - React-cxxreact 241 | - React-hermes 242 | - React-jsi 243 | - React-jsiexecutor 244 | - React-perflogger 245 | - React-runtimescheduler 246 | - React-utils 247 | - SocketRocket (= 0.6.1) 248 | - Yoga 249 | - React-Core/RCTVibrationHeaders (0.73.8): 250 | - glog 251 | - hermes-engine 252 | - RCT-Folly (= 2022.05.16.00) 253 | - React-Core/Default 254 | - React-cxxreact 255 | - React-hermes 256 | - React-jsi 257 | - React-jsiexecutor 258 | - React-perflogger 259 | - React-runtimescheduler 260 | - React-utils 261 | - SocketRocket (= 0.6.1) 262 | - Yoga 263 | - React-Core/RCTWebSocket (0.73.8): 264 | - glog 265 | - hermes-engine 266 | - RCT-Folly (= 2022.05.16.00) 267 | - React-Core/Default (= 0.73.8) 268 | - React-cxxreact 269 | - React-hermes 270 | - React-jsi 271 | - React-jsiexecutor 272 | - React-perflogger 273 | - React-runtimescheduler 274 | - React-utils 275 | - SocketRocket (= 0.6.1) 276 | - Yoga 277 | - React-CoreModules (0.73.8): 278 | - RCT-Folly (= 2022.05.16.00) 279 | - RCTTypeSafety (= 0.73.8) 280 | - React-Codegen 281 | - React-Core/CoreModulesHeaders (= 0.73.8) 282 | - React-jsi (= 0.73.8) 283 | - React-NativeModulesApple 284 | - React-RCTBlob 285 | - React-RCTImage (= 0.73.8) 286 | - ReactCommon 287 | - SocketRocket (= 0.6.1) 288 | - React-cxxreact (0.73.8): 289 | - boost (= 1.83.0) 290 | - DoubleConversion 291 | - fmt (~> 6.2.1) 292 | - glog 293 | - hermes-engine 294 | - RCT-Folly (= 2022.05.16.00) 295 | - React-callinvoker (= 0.73.8) 296 | - React-debug (= 0.73.8) 297 | - React-jsi (= 0.73.8) 298 | - React-jsinspector (= 0.73.8) 299 | - React-logger (= 0.73.8) 300 | - React-perflogger (= 0.73.8) 301 | - React-runtimeexecutor (= 0.73.8) 302 | - React-debug (0.73.8) 303 | - React-Fabric (0.73.8): 304 | - DoubleConversion 305 | - fmt (~> 6.2.1) 306 | - glog 307 | - hermes-engine 308 | - RCT-Folly/Fabric (= 2022.05.16.00) 309 | - RCTRequired 310 | - RCTTypeSafety 311 | - React-Core 312 | - React-cxxreact 313 | - React-debug 314 | - React-Fabric/animations (= 0.73.8) 315 | - React-Fabric/attributedstring (= 0.73.8) 316 | - React-Fabric/componentregistry (= 0.73.8) 317 | - React-Fabric/componentregistrynative (= 0.73.8) 318 | - React-Fabric/components (= 0.73.8) 319 | - React-Fabric/core (= 0.73.8) 320 | - React-Fabric/imagemanager (= 0.73.8) 321 | - React-Fabric/leakchecker (= 0.73.8) 322 | - React-Fabric/mounting (= 0.73.8) 323 | - React-Fabric/scheduler (= 0.73.8) 324 | - React-Fabric/telemetry (= 0.73.8) 325 | - React-Fabric/templateprocessor (= 0.73.8) 326 | - React-Fabric/textlayoutmanager (= 0.73.8) 327 | - React-Fabric/uimanager (= 0.73.8) 328 | - React-graphics 329 | - React-jsi 330 | - React-jsiexecutor 331 | - React-logger 332 | - React-rendererdebug 333 | - React-runtimescheduler 334 | - React-utils 335 | - ReactCommon/turbomodule/core 336 | - React-Fabric/animations (0.73.8): 337 | - DoubleConversion 338 | - fmt (~> 6.2.1) 339 | - glog 340 | - hermes-engine 341 | - RCT-Folly/Fabric (= 2022.05.16.00) 342 | - RCTRequired 343 | - RCTTypeSafety 344 | - React-Core 345 | - React-cxxreact 346 | - React-debug 347 | - React-graphics 348 | - React-jsi 349 | - React-jsiexecutor 350 | - React-logger 351 | - React-rendererdebug 352 | - React-runtimescheduler 353 | - React-utils 354 | - ReactCommon/turbomodule/core 355 | - React-Fabric/attributedstring (0.73.8): 356 | - DoubleConversion 357 | - fmt (~> 6.2.1) 358 | - glog 359 | - hermes-engine 360 | - RCT-Folly/Fabric (= 2022.05.16.00) 361 | - RCTRequired 362 | - RCTTypeSafety 363 | - React-Core 364 | - React-cxxreact 365 | - React-debug 366 | - React-graphics 367 | - React-jsi 368 | - React-jsiexecutor 369 | - React-logger 370 | - React-rendererdebug 371 | - React-runtimescheduler 372 | - React-utils 373 | - ReactCommon/turbomodule/core 374 | - React-Fabric/componentregistry (0.73.8): 375 | - DoubleConversion 376 | - fmt (~> 6.2.1) 377 | - glog 378 | - hermes-engine 379 | - RCT-Folly/Fabric (= 2022.05.16.00) 380 | - RCTRequired 381 | - RCTTypeSafety 382 | - React-Core 383 | - React-cxxreact 384 | - React-debug 385 | - React-graphics 386 | - React-jsi 387 | - React-jsiexecutor 388 | - React-logger 389 | - React-rendererdebug 390 | - React-runtimescheduler 391 | - React-utils 392 | - ReactCommon/turbomodule/core 393 | - React-Fabric/componentregistrynative (0.73.8): 394 | - DoubleConversion 395 | - fmt (~> 6.2.1) 396 | - glog 397 | - hermes-engine 398 | - RCT-Folly/Fabric (= 2022.05.16.00) 399 | - RCTRequired 400 | - RCTTypeSafety 401 | - React-Core 402 | - React-cxxreact 403 | - React-debug 404 | - React-graphics 405 | - React-jsi 406 | - React-jsiexecutor 407 | - React-logger 408 | - React-rendererdebug 409 | - React-runtimescheduler 410 | - React-utils 411 | - ReactCommon/turbomodule/core 412 | - React-Fabric/components (0.73.8): 413 | - DoubleConversion 414 | - fmt (~> 6.2.1) 415 | - glog 416 | - hermes-engine 417 | - RCT-Folly/Fabric (= 2022.05.16.00) 418 | - RCTRequired 419 | - RCTTypeSafety 420 | - React-Core 421 | - React-cxxreact 422 | - React-debug 423 | - React-Fabric/components/inputaccessory (= 0.73.8) 424 | - React-Fabric/components/legacyviewmanagerinterop (= 0.73.8) 425 | - React-Fabric/components/modal (= 0.73.8) 426 | - React-Fabric/components/rncore (= 0.73.8) 427 | - React-Fabric/components/root (= 0.73.8) 428 | - React-Fabric/components/safeareaview (= 0.73.8) 429 | - React-Fabric/components/scrollview (= 0.73.8) 430 | - React-Fabric/components/text (= 0.73.8) 431 | - React-Fabric/components/textinput (= 0.73.8) 432 | - React-Fabric/components/unimplementedview (= 0.73.8) 433 | - React-Fabric/components/view (= 0.73.8) 434 | - React-graphics 435 | - React-jsi 436 | - React-jsiexecutor 437 | - React-logger 438 | - React-rendererdebug 439 | - React-runtimescheduler 440 | - React-utils 441 | - ReactCommon/turbomodule/core 442 | - React-Fabric/components/inputaccessory (0.73.8): 443 | - DoubleConversion 444 | - fmt (~> 6.2.1) 445 | - glog 446 | - hermes-engine 447 | - RCT-Folly/Fabric (= 2022.05.16.00) 448 | - RCTRequired 449 | - RCTTypeSafety 450 | - React-Core 451 | - React-cxxreact 452 | - React-debug 453 | - React-graphics 454 | - React-jsi 455 | - React-jsiexecutor 456 | - React-logger 457 | - React-rendererdebug 458 | - React-runtimescheduler 459 | - React-utils 460 | - ReactCommon/turbomodule/core 461 | - React-Fabric/components/legacyviewmanagerinterop (0.73.8): 462 | - DoubleConversion 463 | - fmt (~> 6.2.1) 464 | - glog 465 | - hermes-engine 466 | - RCT-Folly/Fabric (= 2022.05.16.00) 467 | - RCTRequired 468 | - RCTTypeSafety 469 | - React-Core 470 | - React-cxxreact 471 | - React-debug 472 | - React-graphics 473 | - React-jsi 474 | - React-jsiexecutor 475 | - React-logger 476 | - React-rendererdebug 477 | - React-runtimescheduler 478 | - React-utils 479 | - ReactCommon/turbomodule/core 480 | - React-Fabric/components/modal (0.73.8): 481 | - DoubleConversion 482 | - fmt (~> 6.2.1) 483 | - glog 484 | - hermes-engine 485 | - RCT-Folly/Fabric (= 2022.05.16.00) 486 | - RCTRequired 487 | - RCTTypeSafety 488 | - React-Core 489 | - React-cxxreact 490 | - React-debug 491 | - React-graphics 492 | - React-jsi 493 | - React-jsiexecutor 494 | - React-logger 495 | - React-rendererdebug 496 | - React-runtimescheduler 497 | - React-utils 498 | - ReactCommon/turbomodule/core 499 | - React-Fabric/components/rncore (0.73.8): 500 | - DoubleConversion 501 | - fmt (~> 6.2.1) 502 | - glog 503 | - hermes-engine 504 | - RCT-Folly/Fabric (= 2022.05.16.00) 505 | - RCTRequired 506 | - RCTTypeSafety 507 | - React-Core 508 | - React-cxxreact 509 | - React-debug 510 | - React-graphics 511 | - React-jsi 512 | - React-jsiexecutor 513 | - React-logger 514 | - React-rendererdebug 515 | - React-runtimescheduler 516 | - React-utils 517 | - ReactCommon/turbomodule/core 518 | - React-Fabric/components/root (0.73.8): 519 | - DoubleConversion 520 | - fmt (~> 6.2.1) 521 | - glog 522 | - hermes-engine 523 | - RCT-Folly/Fabric (= 2022.05.16.00) 524 | - RCTRequired 525 | - RCTTypeSafety 526 | - React-Core 527 | - React-cxxreact 528 | - React-debug 529 | - React-graphics 530 | - React-jsi 531 | - React-jsiexecutor 532 | - React-logger 533 | - React-rendererdebug 534 | - React-runtimescheduler 535 | - React-utils 536 | - ReactCommon/turbomodule/core 537 | - React-Fabric/components/safeareaview (0.73.8): 538 | - DoubleConversion 539 | - fmt (~> 6.2.1) 540 | - glog 541 | - hermes-engine 542 | - RCT-Folly/Fabric (= 2022.05.16.00) 543 | - RCTRequired 544 | - RCTTypeSafety 545 | - React-Core 546 | - React-cxxreact 547 | - React-debug 548 | - React-graphics 549 | - React-jsi 550 | - React-jsiexecutor 551 | - React-logger 552 | - React-rendererdebug 553 | - React-runtimescheduler 554 | - React-utils 555 | - ReactCommon/turbomodule/core 556 | - React-Fabric/components/scrollview (0.73.8): 557 | - DoubleConversion 558 | - fmt (~> 6.2.1) 559 | - glog 560 | - hermes-engine 561 | - RCT-Folly/Fabric (= 2022.05.16.00) 562 | - RCTRequired 563 | - RCTTypeSafety 564 | - React-Core 565 | - React-cxxreact 566 | - React-debug 567 | - React-graphics 568 | - React-jsi 569 | - React-jsiexecutor 570 | - React-logger 571 | - React-rendererdebug 572 | - React-runtimescheduler 573 | - React-utils 574 | - ReactCommon/turbomodule/core 575 | - React-Fabric/components/text (0.73.8): 576 | - DoubleConversion 577 | - fmt (~> 6.2.1) 578 | - glog 579 | - hermes-engine 580 | - RCT-Folly/Fabric (= 2022.05.16.00) 581 | - RCTRequired 582 | - RCTTypeSafety 583 | - React-Core 584 | - React-cxxreact 585 | - React-debug 586 | - React-graphics 587 | - React-jsi 588 | - React-jsiexecutor 589 | - React-logger 590 | - React-rendererdebug 591 | - React-runtimescheduler 592 | - React-utils 593 | - ReactCommon/turbomodule/core 594 | - React-Fabric/components/textinput (0.73.8): 595 | - DoubleConversion 596 | - fmt (~> 6.2.1) 597 | - glog 598 | - hermes-engine 599 | - RCT-Folly/Fabric (= 2022.05.16.00) 600 | - RCTRequired 601 | - RCTTypeSafety 602 | - React-Core 603 | - React-cxxreact 604 | - React-debug 605 | - React-graphics 606 | - React-jsi 607 | - React-jsiexecutor 608 | - React-logger 609 | - React-rendererdebug 610 | - React-runtimescheduler 611 | - React-utils 612 | - ReactCommon/turbomodule/core 613 | - React-Fabric/components/unimplementedview (0.73.8): 614 | - DoubleConversion 615 | - fmt (~> 6.2.1) 616 | - glog 617 | - hermes-engine 618 | - RCT-Folly/Fabric (= 2022.05.16.00) 619 | - RCTRequired 620 | - RCTTypeSafety 621 | - React-Core 622 | - React-cxxreact 623 | - React-debug 624 | - React-graphics 625 | - React-jsi 626 | - React-jsiexecutor 627 | - React-logger 628 | - React-rendererdebug 629 | - React-runtimescheduler 630 | - React-utils 631 | - ReactCommon/turbomodule/core 632 | - React-Fabric/components/view (0.73.8): 633 | - DoubleConversion 634 | - fmt (~> 6.2.1) 635 | - glog 636 | - hermes-engine 637 | - RCT-Folly/Fabric (= 2022.05.16.00) 638 | - RCTRequired 639 | - RCTTypeSafety 640 | - React-Core 641 | - React-cxxreact 642 | - React-debug 643 | - React-graphics 644 | - React-jsi 645 | - React-jsiexecutor 646 | - React-logger 647 | - React-rendererdebug 648 | - React-runtimescheduler 649 | - React-utils 650 | - ReactCommon/turbomodule/core 651 | - Yoga 652 | - React-Fabric/core (0.73.8): 653 | - DoubleConversion 654 | - fmt (~> 6.2.1) 655 | - glog 656 | - hermes-engine 657 | - RCT-Folly/Fabric (= 2022.05.16.00) 658 | - RCTRequired 659 | - RCTTypeSafety 660 | - React-Core 661 | - React-cxxreact 662 | - React-debug 663 | - React-graphics 664 | - React-jsi 665 | - React-jsiexecutor 666 | - React-logger 667 | - React-rendererdebug 668 | - React-runtimescheduler 669 | - React-utils 670 | - ReactCommon/turbomodule/core 671 | - React-Fabric/imagemanager (0.73.8): 672 | - DoubleConversion 673 | - fmt (~> 6.2.1) 674 | - glog 675 | - hermes-engine 676 | - RCT-Folly/Fabric (= 2022.05.16.00) 677 | - RCTRequired 678 | - RCTTypeSafety 679 | - React-Core 680 | - React-cxxreact 681 | - React-debug 682 | - React-graphics 683 | - React-jsi 684 | - React-jsiexecutor 685 | - React-logger 686 | - React-rendererdebug 687 | - React-runtimescheduler 688 | - React-utils 689 | - ReactCommon/turbomodule/core 690 | - React-Fabric/leakchecker (0.73.8): 691 | - DoubleConversion 692 | - fmt (~> 6.2.1) 693 | - glog 694 | - hermes-engine 695 | - RCT-Folly/Fabric (= 2022.05.16.00) 696 | - RCTRequired 697 | - RCTTypeSafety 698 | - React-Core 699 | - React-cxxreact 700 | - React-debug 701 | - React-graphics 702 | - React-jsi 703 | - React-jsiexecutor 704 | - React-logger 705 | - React-rendererdebug 706 | - React-runtimescheduler 707 | - React-utils 708 | - ReactCommon/turbomodule/core 709 | - React-Fabric/mounting (0.73.8): 710 | - DoubleConversion 711 | - fmt (~> 6.2.1) 712 | - glog 713 | - hermes-engine 714 | - RCT-Folly/Fabric (= 2022.05.16.00) 715 | - RCTRequired 716 | - RCTTypeSafety 717 | - React-Core 718 | - React-cxxreact 719 | - React-debug 720 | - React-graphics 721 | - React-jsi 722 | - React-jsiexecutor 723 | - React-logger 724 | - React-rendererdebug 725 | - React-runtimescheduler 726 | - React-utils 727 | - ReactCommon/turbomodule/core 728 | - React-Fabric/scheduler (0.73.8): 729 | - DoubleConversion 730 | - fmt (~> 6.2.1) 731 | - glog 732 | - hermes-engine 733 | - RCT-Folly/Fabric (= 2022.05.16.00) 734 | - RCTRequired 735 | - RCTTypeSafety 736 | - React-Core 737 | - React-cxxreact 738 | - React-debug 739 | - React-graphics 740 | - React-jsi 741 | - React-jsiexecutor 742 | - React-logger 743 | - React-rendererdebug 744 | - React-runtimescheduler 745 | - React-utils 746 | - ReactCommon/turbomodule/core 747 | - React-Fabric/telemetry (0.73.8): 748 | - DoubleConversion 749 | - fmt (~> 6.2.1) 750 | - glog 751 | - hermes-engine 752 | - RCT-Folly/Fabric (= 2022.05.16.00) 753 | - RCTRequired 754 | - RCTTypeSafety 755 | - React-Core 756 | - React-cxxreact 757 | - React-debug 758 | - React-graphics 759 | - React-jsi 760 | - React-jsiexecutor 761 | - React-logger 762 | - React-rendererdebug 763 | - React-runtimescheduler 764 | - React-utils 765 | - ReactCommon/turbomodule/core 766 | - React-Fabric/templateprocessor (0.73.8): 767 | - DoubleConversion 768 | - fmt (~> 6.2.1) 769 | - glog 770 | - hermes-engine 771 | - RCT-Folly/Fabric (= 2022.05.16.00) 772 | - RCTRequired 773 | - RCTTypeSafety 774 | - React-Core 775 | - React-cxxreact 776 | - React-debug 777 | - React-graphics 778 | - React-jsi 779 | - React-jsiexecutor 780 | - React-logger 781 | - React-rendererdebug 782 | - React-runtimescheduler 783 | - React-utils 784 | - ReactCommon/turbomodule/core 785 | - React-Fabric/textlayoutmanager (0.73.8): 786 | - DoubleConversion 787 | - fmt (~> 6.2.1) 788 | - glog 789 | - hermes-engine 790 | - RCT-Folly/Fabric (= 2022.05.16.00) 791 | - RCTRequired 792 | - RCTTypeSafety 793 | - React-Core 794 | - React-cxxreact 795 | - React-debug 796 | - React-Fabric/uimanager 797 | - React-graphics 798 | - React-jsi 799 | - React-jsiexecutor 800 | - React-logger 801 | - React-rendererdebug 802 | - React-runtimescheduler 803 | - React-utils 804 | - ReactCommon/turbomodule/core 805 | - React-Fabric/uimanager (0.73.8): 806 | - DoubleConversion 807 | - fmt (~> 6.2.1) 808 | - glog 809 | - hermes-engine 810 | - RCT-Folly/Fabric (= 2022.05.16.00) 811 | - RCTRequired 812 | - RCTTypeSafety 813 | - React-Core 814 | - React-cxxreact 815 | - React-debug 816 | - React-graphics 817 | - React-jsi 818 | - React-jsiexecutor 819 | - React-logger 820 | - React-rendererdebug 821 | - React-runtimescheduler 822 | - React-utils 823 | - ReactCommon/turbomodule/core 824 | - React-FabricImage (0.73.8): 825 | - DoubleConversion 826 | - fmt (~> 6.2.1) 827 | - glog 828 | - hermes-engine 829 | - RCT-Folly/Fabric (= 2022.05.16.00) 830 | - RCTRequired (= 0.73.8) 831 | - RCTTypeSafety (= 0.73.8) 832 | - React-Fabric 833 | - React-graphics 834 | - React-ImageManager 835 | - React-jsi 836 | - React-jsiexecutor (= 0.73.8) 837 | - React-logger 838 | - React-rendererdebug 839 | - React-utils 840 | - ReactCommon 841 | - Yoga 842 | - React-graphics (0.73.8): 843 | - glog 844 | - RCT-Folly/Fabric (= 2022.05.16.00) 845 | - React-Core/Default (= 0.73.8) 846 | - React-utils 847 | - React-hermes (0.73.8): 848 | - DoubleConversion 849 | - fmt (~> 6.2.1) 850 | - glog 851 | - hermes-engine 852 | - RCT-Folly (= 2022.05.16.00) 853 | - RCT-Folly/Futures (= 2022.05.16.00) 854 | - React-cxxreact (= 0.73.8) 855 | - React-jsi 856 | - React-jsiexecutor (= 0.73.8) 857 | - React-jsinspector (= 0.73.8) 858 | - React-perflogger (= 0.73.8) 859 | - React-ImageManager (0.73.8): 860 | - glog 861 | - RCT-Folly/Fabric 862 | - React-Core/Default 863 | - React-debug 864 | - React-Fabric 865 | - React-graphics 866 | - React-rendererdebug 867 | - React-utils 868 | - React-jserrorhandler (0.73.8): 869 | - RCT-Folly/Fabric (= 2022.05.16.00) 870 | - React-debug 871 | - React-jsi 872 | - React-Mapbuffer 873 | - React-jsi (0.73.8): 874 | - boost (= 1.83.0) 875 | - DoubleConversion 876 | - fmt (~> 6.2.1) 877 | - glog 878 | - hermes-engine 879 | - RCT-Folly (= 2022.05.16.00) 880 | - React-jsiexecutor (0.73.8): 881 | - DoubleConversion 882 | - fmt (~> 6.2.1) 883 | - glog 884 | - hermes-engine 885 | - RCT-Folly (= 2022.05.16.00) 886 | - React-cxxreact (= 0.73.8) 887 | - React-jsi (= 0.73.8) 888 | - React-perflogger (= 0.73.8) 889 | - React-jsinspector (0.73.8) 890 | - React-logger (0.73.8): 891 | - glog 892 | - React-Mapbuffer (0.73.8): 893 | - glog 894 | - React-debug 895 | - react-native-safe-area-context (4.10.1): 896 | - React-Core 897 | - React-nativeconfig (0.73.8) 898 | - React-NativeModulesApple (0.73.8): 899 | - glog 900 | - hermes-engine 901 | - React-callinvoker 902 | - React-Core 903 | - React-cxxreact 904 | - React-jsi 905 | - React-runtimeexecutor 906 | - ReactCommon/turbomodule/bridging 907 | - ReactCommon/turbomodule/core 908 | - React-perflogger (0.73.8) 909 | - React-RCTActionSheet (0.73.8): 910 | - React-Core/RCTActionSheetHeaders (= 0.73.8) 911 | - React-RCTAnimation (0.73.8): 912 | - RCT-Folly (= 2022.05.16.00) 913 | - RCTTypeSafety 914 | - React-Codegen 915 | - React-Core/RCTAnimationHeaders 916 | - React-jsi 917 | - React-NativeModulesApple 918 | - ReactCommon 919 | - React-RCTAppDelegate (0.73.8): 920 | - RCT-Folly 921 | - RCTRequired 922 | - RCTTypeSafety 923 | - React-Core 924 | - React-CoreModules 925 | - React-hermes 926 | - React-nativeconfig 927 | - React-NativeModulesApple 928 | - React-RCTFabric 929 | - React-RCTImage 930 | - React-RCTNetwork 931 | - React-runtimescheduler 932 | - ReactCommon 933 | - React-RCTBlob (0.73.8): 934 | - hermes-engine 935 | - RCT-Folly (= 2022.05.16.00) 936 | - React-Codegen 937 | - React-Core/RCTBlobHeaders 938 | - React-Core/RCTWebSocket 939 | - React-jsi 940 | - React-NativeModulesApple 941 | - React-RCTNetwork 942 | - ReactCommon 943 | - React-RCTFabric (0.73.8): 944 | - glog 945 | - hermes-engine 946 | - RCT-Folly/Fabric (= 2022.05.16.00) 947 | - React-Core 948 | - React-debug 949 | - React-Fabric 950 | - React-FabricImage 951 | - React-graphics 952 | - React-ImageManager 953 | - React-jsi 954 | - React-nativeconfig 955 | - React-RCTImage 956 | - React-RCTText 957 | - React-rendererdebug 958 | - React-runtimescheduler 959 | - React-utils 960 | - Yoga 961 | - React-RCTImage (0.73.8): 962 | - RCT-Folly (= 2022.05.16.00) 963 | - RCTTypeSafety 964 | - React-Codegen 965 | - React-Core/RCTImageHeaders 966 | - React-jsi 967 | - React-NativeModulesApple 968 | - React-RCTNetwork 969 | - ReactCommon 970 | - React-RCTLinking (0.73.8): 971 | - React-Codegen 972 | - React-Core/RCTLinkingHeaders (= 0.73.8) 973 | - React-jsi (= 0.73.8) 974 | - React-NativeModulesApple 975 | - ReactCommon 976 | - ReactCommon/turbomodule/core (= 0.73.8) 977 | - React-RCTNetwork (0.73.8): 978 | - RCT-Folly (= 2022.05.16.00) 979 | - RCTTypeSafety 980 | - React-Codegen 981 | - React-Core/RCTNetworkHeaders 982 | - React-jsi 983 | - React-NativeModulesApple 984 | - ReactCommon 985 | - React-RCTSettings (0.73.8): 986 | - RCT-Folly (= 2022.05.16.00) 987 | - RCTTypeSafety 988 | - React-Codegen 989 | - React-Core/RCTSettingsHeaders 990 | - React-jsi 991 | - React-NativeModulesApple 992 | - ReactCommon 993 | - React-RCTText (0.73.8): 994 | - React-Core/RCTTextHeaders (= 0.73.8) 995 | - Yoga 996 | - React-RCTVibration (0.73.8): 997 | - RCT-Folly (= 2022.05.16.00) 998 | - React-Codegen 999 | - React-Core/RCTVibrationHeaders 1000 | - React-jsi 1001 | - React-NativeModulesApple 1002 | - ReactCommon 1003 | - React-rendererdebug (0.73.8): 1004 | - DoubleConversion 1005 | - fmt (~> 6.2.1) 1006 | - RCT-Folly (= 2022.05.16.00) 1007 | - React-debug 1008 | - React-rncore (0.73.8) 1009 | - React-runtimeexecutor (0.73.8): 1010 | - React-jsi (= 0.73.8) 1011 | - React-runtimescheduler (0.73.8): 1012 | - glog 1013 | - hermes-engine 1014 | - RCT-Folly (= 2022.05.16.00) 1015 | - React-callinvoker 1016 | - React-cxxreact 1017 | - React-debug 1018 | - React-jsi 1019 | - React-rendererdebug 1020 | - React-runtimeexecutor 1021 | - React-utils 1022 | - React-utils (0.73.8): 1023 | - glog 1024 | - RCT-Folly (= 2022.05.16.00) 1025 | - React-debug 1026 | - ReactCommon (0.73.8): 1027 | - React-logger (= 0.73.8) 1028 | - ReactCommon/turbomodule (= 0.73.8) 1029 | - ReactCommon/turbomodule (0.73.8): 1030 | - DoubleConversion 1031 | - fmt (~> 6.2.1) 1032 | - glog 1033 | - hermes-engine 1034 | - RCT-Folly (= 2022.05.16.00) 1035 | - React-callinvoker (= 0.73.8) 1036 | - React-cxxreact (= 0.73.8) 1037 | - React-jsi (= 0.73.8) 1038 | - React-logger (= 0.73.8) 1039 | - React-perflogger (= 0.73.8) 1040 | - ReactCommon/turbomodule/bridging (= 0.73.8) 1041 | - ReactCommon/turbomodule/core (= 0.73.8) 1042 | - ReactCommon/turbomodule/bridging (0.73.8): 1043 | - DoubleConversion 1044 | - fmt (~> 6.2.1) 1045 | - glog 1046 | - hermes-engine 1047 | - RCT-Folly (= 2022.05.16.00) 1048 | - React-callinvoker (= 0.73.8) 1049 | - React-cxxreact (= 0.73.8) 1050 | - React-jsi (= 0.73.8) 1051 | - React-logger (= 0.73.8) 1052 | - React-perflogger (= 0.73.8) 1053 | - ReactCommon/turbomodule/core (0.73.8): 1054 | - DoubleConversion 1055 | - fmt (~> 6.2.1) 1056 | - glog 1057 | - hermes-engine 1058 | - RCT-Folly (= 2022.05.16.00) 1059 | - React-callinvoker (= 0.73.8) 1060 | - React-cxxreact (= 0.73.8) 1061 | - React-jsi (= 0.73.8) 1062 | - React-logger (= 0.73.8) 1063 | - React-perflogger (= 0.73.8) 1064 | - RNCAsyncStorage (1.23.1): 1065 | - React-Core 1066 | - RNScreens (3.31.1): 1067 | - glog 1068 | - RCT-Folly (= 2022.05.16.00) 1069 | - React-Core 1070 | - React-RCTImage 1071 | - SocketRocket (0.6.1) 1072 | - WebRTC-SDK (114.5735.08) 1073 | - Yoga (1.14.0) 1074 | 1075 | DEPENDENCIES: 1076 | - boost (from `../node_modules/react-native/third-party-podspecs/boost.podspec`) 1077 | - DoubleConversion (from `../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec`) 1078 | - FBLazyVector (from `../node_modules/react-native/Libraries/FBLazyVector`) 1079 | - FBReactNativeSpec (from `../node_modules/react-native/React/FBReactNativeSpec`) 1080 | - glog (from `../node_modules/react-native/third-party-podspecs/glog.podspec`) 1081 | - hermes-engine (from `../node_modules/react-native/sdks/hermes-engine/hermes-engine.podspec`) 1082 | - libevent (~> 2.1.12) 1083 | - "livekit-react-native (from `../node_modules/@livekit/react-native`)" 1084 | - "livekit-react-native-webrtc (from `../node_modules/@livekit/react-native-webrtc`)" 1085 | - RCT-Folly (from `../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec`) 1086 | - RCT-Folly/Fabric (from `../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec`) 1087 | - RCTRequired (from `../node_modules/react-native/Libraries/RCTRequired`) 1088 | - RCTTypeSafety (from `../node_modules/react-native/Libraries/TypeSafety`) 1089 | - React (from `../node_modules/react-native/`) 1090 | - React-callinvoker (from `../node_modules/react-native/ReactCommon/callinvoker`) 1091 | - React-Codegen (from `build/generated/ios`) 1092 | - React-Core (from `../node_modules/react-native/`) 1093 | - React-Core/RCTWebSocket (from `../node_modules/react-native/`) 1094 | - React-CoreModules (from `../node_modules/react-native/React/CoreModules`) 1095 | - React-cxxreact (from `../node_modules/react-native/ReactCommon/cxxreact`) 1096 | - React-debug (from `../node_modules/react-native/ReactCommon/react/debug`) 1097 | - React-Fabric (from `../node_modules/react-native/ReactCommon`) 1098 | - React-FabricImage (from `../node_modules/react-native/ReactCommon`) 1099 | - React-graphics (from `../node_modules/react-native/ReactCommon/react/renderer/graphics`) 1100 | - React-hermes (from `../node_modules/react-native/ReactCommon/hermes`) 1101 | - React-ImageManager (from `../node_modules/react-native/ReactCommon/react/renderer/imagemanager/platform/ios`) 1102 | - React-jserrorhandler (from `../node_modules/react-native/ReactCommon/jserrorhandler`) 1103 | - React-jsi (from `../node_modules/react-native/ReactCommon/jsi`) 1104 | - React-jsiexecutor (from `../node_modules/react-native/ReactCommon/jsiexecutor`) 1105 | - React-jsinspector (from `../node_modules/react-native/ReactCommon/jsinspector-modern`) 1106 | - React-logger (from `../node_modules/react-native/ReactCommon/logger`) 1107 | - React-Mapbuffer (from `../node_modules/react-native/ReactCommon`) 1108 | - react-native-safe-area-context (from `../node_modules/react-native-safe-area-context`) 1109 | - React-nativeconfig (from `../node_modules/react-native/ReactCommon`) 1110 | - React-NativeModulesApple (from `../node_modules/react-native/ReactCommon/react/nativemodule/core/platform/ios`) 1111 | - React-perflogger (from `../node_modules/react-native/ReactCommon/reactperflogger`) 1112 | - React-RCTActionSheet (from `../node_modules/react-native/Libraries/ActionSheetIOS`) 1113 | - React-RCTAnimation (from `../node_modules/react-native/Libraries/NativeAnimation`) 1114 | - React-RCTAppDelegate (from `../node_modules/react-native/Libraries/AppDelegate`) 1115 | - React-RCTBlob (from `../node_modules/react-native/Libraries/Blob`) 1116 | - React-RCTFabric (from `../node_modules/react-native/React`) 1117 | - React-RCTImage (from `../node_modules/react-native/Libraries/Image`) 1118 | - React-RCTLinking (from `../node_modules/react-native/Libraries/LinkingIOS`) 1119 | - React-RCTNetwork (from `../node_modules/react-native/Libraries/Network`) 1120 | - React-RCTSettings (from `../node_modules/react-native/Libraries/Settings`) 1121 | - React-RCTText (from `../node_modules/react-native/Libraries/Text`) 1122 | - React-RCTVibration (from `../node_modules/react-native/Libraries/Vibration`) 1123 | - React-rendererdebug (from `../node_modules/react-native/ReactCommon/react/renderer/debug`) 1124 | - React-rncore (from `../node_modules/react-native/ReactCommon`) 1125 | - React-runtimeexecutor (from `../node_modules/react-native/ReactCommon/runtimeexecutor`) 1126 | - React-runtimescheduler (from `../node_modules/react-native/ReactCommon/react/renderer/runtimescheduler`) 1127 | - React-utils (from `../node_modules/react-native/ReactCommon/react/utils`) 1128 | - ReactCommon/turbomodule/core (from `../node_modules/react-native/ReactCommon`) 1129 | - "RNCAsyncStorage (from `../node_modules/@react-native-async-storage/async-storage`)" 1130 | - RNScreens (from `../node_modules/react-native-screens`) 1131 | - Yoga (from `../node_modules/react-native/ReactCommon/yoga`) 1132 | 1133 | SPEC REPOS: 1134 | trunk: 1135 | - fmt 1136 | - libevent 1137 | - SocketRocket 1138 | - WebRTC-SDK 1139 | 1140 | EXTERNAL SOURCES: 1141 | boost: 1142 | :podspec: "../node_modules/react-native/third-party-podspecs/boost.podspec" 1143 | DoubleConversion: 1144 | :podspec: "../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec" 1145 | FBLazyVector: 1146 | :path: "../node_modules/react-native/Libraries/FBLazyVector" 1147 | FBReactNativeSpec: 1148 | :path: "../node_modules/react-native/React/FBReactNativeSpec" 1149 | glog: 1150 | :podspec: "../node_modules/react-native/third-party-podspecs/glog.podspec" 1151 | hermes-engine: 1152 | :podspec: "../node_modules/react-native/sdks/hermes-engine/hermes-engine.podspec" 1153 | :tag: hermes-2024-04-29-RNv0.73.8-644c8be78af1eae7c138fa4093fb87f0f4f8db85 1154 | livekit-react-native: 1155 | :path: "../node_modules/@livekit/react-native" 1156 | livekit-react-native-webrtc: 1157 | :path: "../node_modules/@livekit/react-native-webrtc" 1158 | RCT-Folly: 1159 | :podspec: "../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec" 1160 | RCTRequired: 1161 | :path: "../node_modules/react-native/Libraries/RCTRequired" 1162 | RCTTypeSafety: 1163 | :path: "../node_modules/react-native/Libraries/TypeSafety" 1164 | React: 1165 | :path: "../node_modules/react-native/" 1166 | React-callinvoker: 1167 | :path: "../node_modules/react-native/ReactCommon/callinvoker" 1168 | React-Codegen: 1169 | :path: build/generated/ios 1170 | React-Core: 1171 | :path: "../node_modules/react-native/" 1172 | React-CoreModules: 1173 | :path: "../node_modules/react-native/React/CoreModules" 1174 | React-cxxreact: 1175 | :path: "../node_modules/react-native/ReactCommon/cxxreact" 1176 | React-debug: 1177 | :path: "../node_modules/react-native/ReactCommon/react/debug" 1178 | React-Fabric: 1179 | :path: "../node_modules/react-native/ReactCommon" 1180 | React-FabricImage: 1181 | :path: "../node_modules/react-native/ReactCommon" 1182 | React-graphics: 1183 | :path: "../node_modules/react-native/ReactCommon/react/renderer/graphics" 1184 | React-hermes: 1185 | :path: "../node_modules/react-native/ReactCommon/hermes" 1186 | React-ImageManager: 1187 | :path: "../node_modules/react-native/ReactCommon/react/renderer/imagemanager/platform/ios" 1188 | React-jserrorhandler: 1189 | :path: "../node_modules/react-native/ReactCommon/jserrorhandler" 1190 | React-jsi: 1191 | :path: "../node_modules/react-native/ReactCommon/jsi" 1192 | React-jsiexecutor: 1193 | :path: "../node_modules/react-native/ReactCommon/jsiexecutor" 1194 | React-jsinspector: 1195 | :path: "../node_modules/react-native/ReactCommon/jsinspector-modern" 1196 | React-logger: 1197 | :path: "../node_modules/react-native/ReactCommon/logger" 1198 | React-Mapbuffer: 1199 | :path: "../node_modules/react-native/ReactCommon" 1200 | react-native-safe-area-context: 1201 | :path: "../node_modules/react-native-safe-area-context" 1202 | React-nativeconfig: 1203 | :path: "../node_modules/react-native/ReactCommon" 1204 | React-NativeModulesApple: 1205 | :path: "../node_modules/react-native/ReactCommon/react/nativemodule/core/platform/ios" 1206 | React-perflogger: 1207 | :path: "../node_modules/react-native/ReactCommon/reactperflogger" 1208 | React-RCTActionSheet: 1209 | :path: "../node_modules/react-native/Libraries/ActionSheetIOS" 1210 | React-RCTAnimation: 1211 | :path: "../node_modules/react-native/Libraries/NativeAnimation" 1212 | React-RCTAppDelegate: 1213 | :path: "../node_modules/react-native/Libraries/AppDelegate" 1214 | React-RCTBlob: 1215 | :path: "../node_modules/react-native/Libraries/Blob" 1216 | React-RCTFabric: 1217 | :path: "../node_modules/react-native/React" 1218 | React-RCTImage: 1219 | :path: "../node_modules/react-native/Libraries/Image" 1220 | React-RCTLinking: 1221 | :path: "../node_modules/react-native/Libraries/LinkingIOS" 1222 | React-RCTNetwork: 1223 | :path: "../node_modules/react-native/Libraries/Network" 1224 | React-RCTSettings: 1225 | :path: "../node_modules/react-native/Libraries/Settings" 1226 | React-RCTText: 1227 | :path: "../node_modules/react-native/Libraries/Text" 1228 | React-RCTVibration: 1229 | :path: "../node_modules/react-native/Libraries/Vibration" 1230 | React-rendererdebug: 1231 | :path: "../node_modules/react-native/ReactCommon/react/renderer/debug" 1232 | React-rncore: 1233 | :path: "../node_modules/react-native/ReactCommon" 1234 | React-runtimeexecutor: 1235 | :path: "../node_modules/react-native/ReactCommon/runtimeexecutor" 1236 | React-runtimescheduler: 1237 | :path: "../node_modules/react-native/ReactCommon/react/renderer/runtimescheduler" 1238 | React-utils: 1239 | :path: "../node_modules/react-native/ReactCommon/react/utils" 1240 | ReactCommon: 1241 | :path: "../node_modules/react-native/ReactCommon" 1242 | RNCAsyncStorage: 1243 | :path: "../node_modules/@react-native-async-storage/async-storage" 1244 | RNScreens: 1245 | :path: "../node_modules/react-native-screens" 1246 | Yoga: 1247 | :path: "../node_modules/react-native/ReactCommon/yoga" 1248 | 1249 | SPEC CHECKSUMS: 1250 | boost: d3f49c53809116a5d38da093a8aa78bf551aed09 1251 | DoubleConversion: fea03f2699887d960129cc54bba7e52542b6f953 1252 | FBLazyVector: df34a309e356a77581809834f6ec3fbe7153f620 1253 | FBReactNativeSpec: bbe8b686178e5ce03d1d8a356789f211f91f31b8 1254 | fmt: ff9d55029c625d3757ed641535fd4a75fedc7ce9 1255 | glog: c5d68082e772fa1c511173d6b30a9de2c05a69a2 1256 | hermes-engine: b12d9bb1b7cee546f5e48212e7ea7e3c1665a367 1257 | libevent: 4049cae6c81cdb3654a443be001fb9bdceff7913 1258 | livekit-react-native: 0bc4499e7e668eb4ab6a109d3574c34a7828efd1 1259 | livekit-react-native-webrtc: 866212979a99f022324c00a0b735c1141912a608 1260 | RCT-Folly: 7169b2b1c44399c76a47b5deaaba715eeeb476c0 1261 | RCTRequired: 0c7f03a41ee32dec802c74c341e317a4165973d5 1262 | RCTTypeSafety: 57698bb7fcde424922e201dab377f496a08a63e3 1263 | React: 64c0c83924460a3d34fa5857ca2fd3ed2a69b581 1264 | React-callinvoker: c0129cd7b8babac64b3d3515e72a8b2e743d261e 1265 | React-Codegen: fea55b35ab6e6091091f84ec7924424c6375a9d0 1266 | React-Core: 607dac2a3cc5962c3d9612d79907ac28296c3f13 1267 | React-CoreModules: af9d2eca18c26b319157df21d5ea9eef7d5d4ad2 1268 | React-cxxreact: 91453f3e345b7c7b9286a9b3a04d01d402f7aa5a 1269 | React-debug: 9a287572a7a36429da0509664ce3d1931f39f3c3 1270 | React-Fabric: 528abafe4e58be9ca229b25eac44b2a393432b08 1271 | React-FabricImage: 42101f6e6fc9b91c2695be0002d2d6568e0067e1 1272 | React-graphics: 6af7e672af66a9e8b46e4b140a8d28c129ed2758 1273 | React-hermes: 7155160dabef04a20a41b817fbea764039833de0 1274 | React-ImageManager: 4b5f59abe72ad1cf721ef1e52e56f5974dc785a9 1275 | React-jserrorhandler: c89f6315b401eff2ff0b57f2dd5cb1624c740e63 1276 | React-jsi: da0ebd65e8da907855a7ca4e3dfeb45f5d671886 1277 | React-jsiexecutor: e0623342677d9c9f18c8b42121a70a9671c2b80b 1278 | React-jsinspector: 1729acf5ffe2d4439d698da25fddf0c75d07d1a1 1279 | React-logger: 60afd40b183e8e6642bfd0108f1a1ad360cc665e 1280 | React-Mapbuffer: 672a9342eb75a4d0663306e94d4dfc88aee73b93 1281 | react-native-safe-area-context: dcab599c527c2d7de2d76507a523d20a0b83823d 1282 | React-nativeconfig: 2e44d0d2dd222b12a5183f4bcaa4a91881497acb 1283 | React-NativeModulesApple: 8aa032fe6c92c1a3c63e4809d42816284a56a9b0 1284 | React-perflogger: f9367428cf475f4606b5965c1d5a71781bb95299 1285 | React-RCTActionSheet: 39b3248276c7f98e455aebb0cdd473a35c6d5082 1286 | React-RCTAnimation: 10eee15d10e420f56b4014efd4d7fb7f064105fc 1287 | React-RCTAppDelegate: d58a00ce3178b077984f9cbb90c6191d73c9b3a7 1288 | React-RCTBlob: 67bd0b38c39f59ec77dcbab01217a7b9dd338446 1289 | React-RCTFabric: 78b07ebde8adc626b210219bf1a3ab5bafa6b8b7 1290 | React-RCTImage: e9c7790c25684ec5b64b4c92def4d6b95b225826 1291 | React-RCTLinking: d3d3ea5596c9f30fa0e8138e356258fca1f2ccaf 1292 | React-RCTNetwork: b52bcb51f559535612957f20b4ca28ff1438182f 1293 | React-RCTSettings: 6763f9d5210ce3dae6f892a0546c06738014025b 1294 | React-RCTText: 6b8365ef043d3fc01848bb8de48ee9e67ba3bc47 1295 | React-RCTVibration: aa85a228a382b66e8844c2f94cd3e734fa96d07a 1296 | React-rendererdebug: db3c2ce7c7c239b5b2e2c913acd08dc03666e88f 1297 | React-rncore: e4514e3d953d0ad476a3e5dd999e16d68ebae2e4 1298 | React-runtimeexecutor: 1fb11b17da6dcf79da6f301ab54fcb51545bab6e 1299 | React-runtimescheduler: 1c40cfe98dcc7b06354d96a1cd8ee10cbc4cc797 1300 | React-utils: 4cc2ba652f5df1c8f0461d4ae9e3ee474c1354ea 1301 | ReactCommon: 1da3fc14d904883c46327b3322325eebf60a720a 1302 | RNCAsyncStorage: 826b603ae9c0f88b5ac4e956801f755109fa4d5c 1303 | RNScreens: 134a7511b12b8eb440b87aac21e36a71295d6024 1304 | SocketRocket: f32cd54efbe0f095c4d7594881e52619cfe80b17 1305 | WebRTC-SDK: c24d2a6c9f571f2ed42297cb8ffba9557093142b 1306 | Yoga: e5b887426cee15d2a326bdd34afc0282fc0486ad 1307 | 1308 | PODFILE CHECKSUM: c1e7619596de8e8516240eac0c0234325a3ec3e0 1309 | 1310 | COCOAPODS: 1.13.0 1311 | -------------------------------------------------------------------------------- /jest.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | preset: 'react-native', 3 | }; 4 | -------------------------------------------------------------------------------- /metro.config.js: -------------------------------------------------------------------------------- 1 | const {getDefaultConfig, mergeConfig} = require('@react-native/metro-config'); 2 | 3 | /** 4 | * Metro configuration 5 | * https://facebook.github.io/metro/docs/configuration 6 | * 7 | * @type {import('metro-config').MetroConfig} 8 | */ 9 | const config = {}; 10 | 11 | module.exports = mergeConfig(getDefaultConfig(__dirname), config); 12 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "LiveKitReactNativeMeet", 3 | "version": "0.0.1", 4 | "private": true, 5 | "scripts": { 6 | "android": "react-native run-android", 7 | "ios": "react-native run-ios", 8 | "lint": "eslint .", 9 | "start": "react-native start", 10 | "test": "jest", 11 | "postinstall": "patch-package" 12 | }, 13 | "dependencies": { 14 | "@livekit/react-native": "^2.1.0", 15 | "@livekit/react-native-webrtc": "^114.1.1", 16 | "@react-native-async-storage/async-storage": "^1.23.1", 17 | "@react-navigation/native": "^6.1.17", 18 | "@react-navigation/native-stack": "^6.9.26", 19 | "@supersami/rn-foreground-service": "^2.1.0", 20 | "react": "18.2.0", 21 | "react-native": "0.73.8", 22 | "react-native-dialog": "^9.3.0", 23 | "react-native-safe-area-context": "^4.10.1", 24 | "react-native-screens": "^3.31.1", 25 | "react-native-toast-message": "^2.2.0" 26 | }, 27 | "devDependencies": { 28 | "@babel/core": "^7.20.0", 29 | "@babel/preset-env": "^7.20.0", 30 | "@babel/runtime": "^7.20.0", 31 | "@react-native/babel-preset": "0.73.21", 32 | "@react-native/eslint-config": "0.73.2", 33 | "@react-native/metro-config": "0.73.5", 34 | "@react-native/typescript-config": "0.73.1", 35 | "@types/react": "^18.2.6", 36 | "@types/react-test-renderer": "^18.0.0", 37 | "babel-jest": "^29.6.3", 38 | "eslint": "^8.19.0", 39 | "jest": "^29.6.3", 40 | "patch-package": "^8.0.0", 41 | "prettier": "2.8.8", 42 | "react-test-renderer": "18.2.0", 43 | "typescript": "5.0.4" 44 | }, 45 | "engines": { 46 | "node": ">=18" 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /patches/@supersami+rn-foreground-service+2.1.0.patch: -------------------------------------------------------------------------------- 1 | diff --git a/node_modules/@supersami/rn-foreground-service/android/src/main/java/com/supersami/foregroundservice/NotificationHelper.java b/node_modules/@supersami/rn-foreground-service/android/src/main/java/com/supersami/foregroundservice/NotificationHelper.java 2 | index afccd04..26dbded 100644 3 | --- a/node_modules/@supersami/rn-foreground-service/android/src/main/java/com/supersami/foregroundservice/NotificationHelper.java 4 | +++ b/node_modules/@supersami/rn-foreground-service/android/src/main/java/com/supersami/foregroundservice/NotificationHelper.java 5 | @@ -14,6 +14,7 @@ import android.os.Bundle; 6 | import androidx.core.app.NotificationCompat; 7 | import android.util.Log; 8 | 9 | +import com.facebook.react.R; 10 | 11 | // partially took ideas from: https://github.com/zo0r/react-native-push-notification/blob/master/android/src/main/java/com/dieam/reactnativepushnotification/modules/RNPushNotificationHelper.java 12 | 13 | -------------------------------------------------------------------------------- /src/App.tsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | 3 | import { DarkTheme, NavigationContainer } from '@react-navigation/native'; 4 | import { createNativeStackNavigator } from '@react-navigation/native-stack'; 5 | import { PreJoinPage } from './PreJoinPage'; 6 | import { RoomPage } from './RoomPage'; 7 | import Toast from 'react-native-toast-message'; 8 | 9 | const Stack = createNativeStackNavigator(); 10 | export default function App() { 11 | return ( 12 | <> 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | ); 22 | } 23 | 24 | export type RootStackParamList = { 25 | PreJoinPage: undefined; 26 | RoomPage: { url: string; token: string }; 27 | }; 28 | -------------------------------------------------------------------------------- /src/ParticipantView.tsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | 3 | import { Image, StyleSheet, ViewStyle } from 'react-native'; 4 | import { 5 | isTrackReference, 6 | TrackReferenceOrPlaceholder, 7 | useEnsureTrackRef, 8 | useIsMuted, 9 | useIsSpeaking, 10 | useParticipantInfo, 11 | VideoTrack, 12 | } from '@livekit/react-native'; 13 | import { View } from 'react-native'; 14 | import { Text } from 'react-native'; 15 | import { useTheme } from '@react-navigation/native'; 16 | export type Props = { 17 | trackRef: TrackReferenceOrPlaceholder; 18 | style?: ViewStyle; 19 | zOrder?: number; 20 | mirror?: boolean; 21 | }; 22 | export const ParticipantView = ({ 23 | style = {}, 24 | trackRef, 25 | zOrder, 26 | mirror, 27 | }: Props) => { 28 | const trackReference = useEnsureTrackRef(trackRef); 29 | const { identity, name } = useParticipantInfo({ 30 | participant: trackReference.participant, 31 | }); 32 | const isSpeaking = useIsSpeaking(trackRef.participant); 33 | const isVideoMuted = useIsMuted(trackRef); 34 | const { colors } = useTheme(); 35 | let videoView; 36 | if (isTrackReference(trackRef) && !isVideoMuted) { 37 | videoView = ( 38 | 44 | ); 45 | } else { 46 | videoView = ( 47 | 48 | 49 | 53 | 54 | 55 | ); 56 | } 57 | 58 | const displayName = name ? name : identity; 59 | return ( 60 | 61 | {videoView} 62 | 63 | {displayName} 64 | 65 | {isSpeaking && } 66 | 67 | ); 68 | }; 69 | 70 | const styles = StyleSheet.create({ 71 | container: { 72 | backgroundColor: '#00153C', 73 | }, 74 | speakingIndicator: { 75 | position: 'absolute', 76 | bottom: 0, 77 | width: '100%', 78 | height: '100%', 79 | borderColor: '#007DFF', 80 | borderWidth: 3, 81 | }, 82 | spacer: { 83 | flex: 1, 84 | }, 85 | videoView: { 86 | width: '100%', 87 | height: '100%', 88 | }, 89 | identityBar: { 90 | position: 'absolute', 91 | bottom: 0, 92 | width: '100%', 93 | padding: 2, 94 | backgroundColor: 'rgba(0,0,0,0.5)', 95 | }, 96 | icon: { 97 | width: 40, 98 | height: 40, 99 | alignSelf: 'center', 100 | }, 101 | }); 102 | -------------------------------------------------------------------------------- /src/PreJoinPage.tsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import { useState, useEffect } from 'react'; 3 | import type { NativeStackScreenProps } from '@react-navigation/native-stack'; 4 | 5 | import { StyleSheet, View, TextInput, Text, Button } from 'react-native'; 6 | import type { RootStackParamList } from './App'; 7 | import { useTheme } from '@react-navigation/native'; 8 | import AsyncStorage from '@react-native-async-storage/async-storage'; 9 | 10 | const DEFAULT_URL = 'wss://www.example.com'; 11 | const DEFAULT_TOKEN = ''; 12 | 13 | const URL_KEY = 'url'; 14 | const TOKEN_KEY = 'token'; 15 | 16 | export const PreJoinPage = ({ 17 | navigation, 18 | }: NativeStackScreenProps) => { 19 | const [url, setUrl] = useState(DEFAULT_URL); 20 | const [token, setToken] = useState(DEFAULT_TOKEN); 21 | 22 | useEffect(() => { 23 | AsyncStorage.getItem(URL_KEY).then((value) => { 24 | if (value) { 25 | setUrl(value); 26 | } 27 | }); 28 | 29 | AsyncStorage.getItem(TOKEN_KEY).then((value) => { 30 | if (value) { 31 | setToken(value); 32 | } 33 | }); 34 | }, []); 35 | 36 | const { colors } = useTheme(); 37 | 38 | let saveValues = (saveUrl: string, saveToken: string) => { 39 | AsyncStorage.setItem(URL_KEY, saveUrl); 40 | AsyncStorage.setItem(TOKEN_KEY, saveToken); 41 | }; 42 | return ( 43 | 44 | URL 45 | 54 | 55 | Token 56 | 65 | 66 |