diff --git a/CHANGELOG.md b/CHANGELOG.md index 020ea5237..26446439c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,14 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.1.0/) and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html). +## [7.9.0] - 24-09-06 + +### Added + +- Added THEOlive source integration type to `SourceDescription`. +- Added THEOads as `AdIntegrationKind`. +- Added a `headers` property to `TypedSource`. The player will add the headers to the HTTP requests for the given resource. + ## [7.8.2] - 24-08-21 ### Changed diff --git a/android/build.gradle b/android/build.gradle index 2d542fba6..b96749a88 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -112,9 +112,9 @@ dependencies { implementation "androidx.appcompat:appcompat:${safeExtGet('appcompatVersion', '1.6.1')}" implementation "androidx.core:core-ktx:${safeExtGet('corektxVersion', '1.10.1')}" - // The minimum supported THEOplayer version is 7.6.0 - def theoplayer_sdk_version = safeExtGet('THEOplayer_sdk', '[7.10.0, 8.0.0)') - def theoplayer_mediasession_version = safeExtGet('THEOplayer_mediasession', '[7.10.0, 8.0.0)') + // The minimum supported THEOplayer version is 7.12.0 + def theoplayer_sdk_version = safeExtGet('THEOplayer_sdk', '[7.12.0, 8.0.0)') + def theoplayer_mediasession_version = safeExtGet('THEOplayer_mediasession', '[7.12.0, 8.0.0)') println("Using THEOplayer (${versionString(theoplayer_sdk_version)})") implementation "com.theoplayer.theoplayer-sdk-android:core:${theoplayer_sdk_version}" diff --git a/android/src/main/java/com/theoplayer/source/SourceAdapter.kt b/android/src/main/java/com/theoplayer/source/SourceAdapter.kt index bb4249775..ec85bd8a5 100644 --- a/android/src/main/java/com/theoplayer/source/SourceAdapter.kt +++ b/android/src/main/java/com/theoplayer/source/SourceAdapter.kt @@ -51,6 +51,7 @@ private const val PROP_POSTER = "poster" private const val PROP_ADS = "ads" private const val PROP_DASH = "dash" private const val PROP_DASH_IGNORE_AVAILABILITYWINDOW = "ignoreAvailabilityWindow" +private const val PROP_HEADERS = "headers" private const val ERROR_IMA_NOT_ENABLED = "Google IMA support not enabled." private const val ERROR_UNSUPPORTED_CSAI_INTEGRATION = "Unsupported CSAI integration" private const val ERROR_MISSING_CSAI_INTEGRATION = "Missing CSAI integration" @@ -151,6 +152,13 @@ class SourceAdapter { if (jsonTypedSource.has(PROP_DASH)) { tsBuilder.dash(parseDashConfig(jsonTypedSource.getJSONObject(PROP_DASH))) } + jsonTypedSource.optJSONObject(PROP_HEADERS)?.let { headersJson -> + tsBuilder.headers(mutableMapOf().apply { + headersJson.keys().forEach { key -> + put(key, headersJson.getString(key)) + } + }) + } if (jsonTypedSource.has(PROP_LIVE_OFFSET)) { tsBuilder.liveOffset(jsonTypedSource.getDouble(PROP_LIVE_OFFSET)) } diff --git a/example/android/gradle.properties b/example/android/gradle.properties index b95ed244a..02c192d56 100644 --- a/example/android/gradle.properties +++ b/example/android/gradle.properties @@ -41,7 +41,7 @@ newArchEnabled=false hermesEnabled=true # Version of the THEOplayer SDK, if not specified, the latest available version within bounds is set. -#THEOplayer_sdk=[7.10.0, 8.0.0) +#THEOplayer_sdk=[7.12.0, 8.0.0) # Override Android sdk versions #THEOplayer_compileSdkVersion = 34 diff --git a/example/ios/Podfile.lock b/example/ios/Podfile.lock index 118a6d104..58197857b 100644 --- a/example/ios/Podfile.lock +++ b/example/ios/Podfile.lock @@ -953,14 +953,14 @@ PODS: - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - Yoga - - react-native-theoplayer (7.7.0): + - react-native-theoplayer (7.9.0): - google-cast-sdk-dynamic-xcframework (~> 4.8) - React-Core - - THEOplayer-Connector-SideloadedSubtitle (~> 7.8) - - THEOplayer-Integration-GoogleCast/Base (~> 7.8) - - THEOplayer-Integration-GoogleIMA/Base (~> 7.8) - - THEOplayer-Integration-GoogleIMA/Dependencies (~> 7.8) - - THEOplayerSDK-core (~> 7.8) + - THEOplayer-Connector-SideloadedSubtitle (~> 7.12) + - THEOplayer-Integration-GoogleCast/Base (~> 7.12) + - THEOplayer-Integration-GoogleIMA/Base (~> 7.12) + - THEOplayer-Integration-GoogleIMA/Dependencies (~> 7.12) + - THEOplayerSDK-core (~> 7.12) - React-nativeconfig (0.74.1-0) - React-NativeModulesApple (0.74.1-0): - glog @@ -1190,16 +1190,16 @@ PODS: - SwiftSubtitles (0.9.1): - DSFRegex (~> 3.3.1) - TinyCSV (~> 0.6.1) - - THEOplayer-Connector-SideloadedSubtitle (7.8.0): + - THEOplayer-Connector-SideloadedSubtitle (7.12.0): - Swifter (= 1.5.0) - SwiftSubtitles (= 0.9.1) - - THEOplayerSDK-core (~> 7) - - THEOplayer-Integration-GoogleCast/Base (7.8.0) - - THEOplayer-Integration-GoogleIMA/Base (7.8.0) - - THEOplayer-Integration-GoogleIMA/Dependencies (7.8.0): + - THEOplayerSDK-core (~> 7.10) + - THEOplayer-Integration-GoogleCast/Base (7.12.0) + - THEOplayer-Integration-GoogleIMA/Base (7.12.0) + - THEOplayer-Integration-GoogleIMA/Dependencies (7.12.0): - GoogleAds-IMA-iOS-SDK (~> 3.18) - GoogleAds-IMA-tvOS-SDK (~> 4.8) - - THEOplayerSDK-core (7.8.0) + - THEOplayerSDK-core (7.12.0) - TinyCSV (0.6.1) - Yoga (0.0.0) @@ -1441,7 +1441,7 @@ SPEC CHECKSUMS: React-Mapbuffer: e1da272870606f17a64520bf78d85e1b73bb0778 react-native-google-cast: d7bdfd1a0eeba84afde03b9722351ec29543e74c react-native-slider: 315e6552460f5d7753c71cf3142b00161cb2d5a5 - react-native-theoplayer: cf37bf1729a4e0db65d56c592d2b6793aaf97346 + react-native-theoplayer: 89adf55885db50bebb334a35ef2ce7b495b0f332 React-nativeconfig: 0e309fafbbfbb8eac2f1999d0756732624ac5b39 React-NativeModulesApple: a53141b07c57c53cdc1f2043e5acf3b9318bc340 React-perflogger: e4f171200bc71bb8cf0686a0ad41a242f53b6b36 @@ -1468,10 +1468,10 @@ SPEC CHECKSUMS: SocketRocket: abac6f5de4d4d62d24e11868d7a2f427e0ef940d Swifter: e71dd674404923d7f03ebb03f3f222d1c570bc8e SwiftSubtitles: c659af19d710a2946779015464c0577d07fe4666 - THEOplayer-Connector-SideloadedSubtitle: a458ce38a5d686dccc5acdf9bf3edc312ab70cd3 - THEOplayer-Integration-GoogleCast: 345adf295f90a8ab78ba77c3e1eff251c5447109 - THEOplayer-Integration-GoogleIMA: c8281e46454d152095410bbe994a31b0e55834b8 - THEOplayerSDK-core: d8551e4b9f38c73503a91b778df4c0412ddfadd1 + THEOplayer-Connector-SideloadedSubtitle: d85e580211d4327be7ed8faf0633bcd6401f38dd + THEOplayer-Integration-GoogleCast: c4d49b120b05005a90b03fff6d711ef0300b64a1 + THEOplayer-Integration-GoogleIMA: 64505e6feee971c0ebec3ab4ab14296e009a290c + THEOplayerSDK-core: b162d868db9229c3c9bc6f2e2e2ba0edab47035b TinyCSV: fd6228edbcf1c07466ac34b76dac5e052143eaba Yoga: d84d1e521e3f8fa3cdd139d617ddf6514d061c78 diff --git a/example/ios/ReactNativeTHEOplayer.xcodeproj/project.pbxproj b/example/ios/ReactNativeTHEOplayer.xcodeproj/project.pbxproj index ac18d88be..ccea40742 100644 --- a/example/ios/ReactNativeTHEOplayer.xcodeproj/project.pbxproj +++ b/example/ios/ReactNativeTHEOplayer.xcodeproj/project.pbxproj @@ -11,17 +11,17 @@ 13B07FBC1A68108700A75B9A /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.m */; }; 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; }; 13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; }; - 269984920579226908D49904 /* libPods-ReactNativeTHEOplayer.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 8DC2855AB2CCC04BED0978AE /* libPods-ReactNativeTHEOplayer.a */; }; + 144AFEB0365614C64FBCAD99 /* libPods-ReactNativeTHEOplayer-tvOS-ReactNativeTHEOplayer-tvOSTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 17BEB785211211E17565C821 /* libPods-ReactNativeTHEOplayer-tvOS-ReactNativeTHEOplayer-tvOSTests.a */; }; 2D02E4BC1E0B4A80006451C7 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.m */; }; 2D02E4BD1E0B4A84006451C7 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; }; 2D02E4BF1E0B4AB3006451C7 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; }; 2DCD954D1E0B4F2C00145EB5 /* ReactNativeTHEOplayerTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E356F21AD99517003FC87E /* ReactNativeTHEOplayerTests.m */; }; - 41BF5F3596F87FEE707DDD11 /* libPods-ReactNativeTHEOplayer-ReactNativeTHEOplayerTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 4F21F13455730034D850CD1C /* libPods-ReactNativeTHEOplayer-ReactNativeTHEOplayerTests.a */; }; 442BFC3895EC4E39B762450A /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = E13BF0204B80026411EC76D2 /* PrivacyInfo.xcprivacy */; }; - 47EB63F3390701B2260096C6 /* libPods-ReactNativeTHEOplayer-tvOS-ReactNativeTHEOplayer-tvOSTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = A0216F1136BF7C90703C880F /* libPods-ReactNativeTHEOplayer-tvOS-ReactNativeTHEOplayer-tvOSTests.a */; }; 81AB9BB82411601600AC10FF /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */; }; + B132A7615192F470DFD25B50 /* libPods-ReactNativeTHEOplayer.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B3FB3DD1C39700ED56788880 /* libPods-ReactNativeTHEOplayer.a */; }; + CAB8FDDCDB8A35929E68B6CE /* libPods-ReactNativeTHEOplayer-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B084F3EA77EA940F5E5780C5 /* libPods-ReactNativeTHEOplayer-tvOS.a */; }; DC6595BC1C39D39B157BFA59 /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 7740B1311B6C85C9C1C70CE2 /* PrivacyInfo.xcprivacy */; }; - EE57DEA5314790D63C074D03 /* libPods-ReactNativeTHEOplayer-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = EA54FCF2086BA3B4678F8237 /* libPods-ReactNativeTHEOplayer-tvOS.a */; }; + E84400218C35B7AA0B8005E3 /* libPods-ReactNativeTHEOplayer-ReactNativeTHEOplayerTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5AA67747D91D0900899ED730 /* libPods-ReactNativeTHEOplayer-ReactNativeTHEOplayerTests.a */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -46,33 +46,33 @@ 00E356EE1AD99517003FC87E /* ReactNativeTHEOplayerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = ReactNativeTHEOplayerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 00E356F11AD99517003FC87E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 00E356F21AD99517003FC87E /* ReactNativeTHEOplayerTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ReactNativeTHEOplayerTests.m; sourceTree = ""; }; - 015BA46D04C1496C29E63456 /* Pods-ReactNativeTHEOplayer.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ReactNativeTHEOplayer.debug.xcconfig"; path = "Target Support Files/Pods-ReactNativeTHEOplayer/Pods-ReactNativeTHEOplayer.debug.xcconfig"; sourceTree = ""; }; + 0460E03D342B1D1D12A43958 /* Pods-ReactNativeTHEOplayer-tvOS-ReactNativeTHEOplayer-tvOSTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ReactNativeTHEOplayer-tvOS-ReactNativeTHEOplayer-tvOSTests.debug.xcconfig"; path = "Target Support Files/Pods-ReactNativeTHEOplayer-tvOS-ReactNativeTHEOplayer-tvOSTests/Pods-ReactNativeTHEOplayer-tvOS-ReactNativeTHEOplayer-tvOSTests.debug.xcconfig"; sourceTree = ""; }; 13B07F961A680F5B00A75B9A /* ReactNativeTHEOplayer.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = ReactNativeTHEOplayer.app; sourceTree = BUILT_PRODUCTS_DIR; }; 13B07FAF1A68108700A75B9A /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppDelegate.h; path = ReactNativeTHEOplayer/AppDelegate.h; sourceTree = ""; }; 13B07FB01A68108700A75B9A /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AppDelegate.m; path = ReactNativeTHEOplayer/AppDelegate.m; sourceTree = ""; }; 13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = ReactNativeTHEOplayer/Images.xcassets; sourceTree = ""; }; 13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = ReactNativeTHEOplayer/Info.plist; sourceTree = ""; }; 13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = ReactNativeTHEOplayer/main.m; sourceTree = ""; }; - 224D5D4AEB9A0A36B75746AA /* Pods-ReactNativeTHEOplayer.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ReactNativeTHEOplayer.release.xcconfig"; path = "Target Support Files/Pods-ReactNativeTHEOplayer/Pods-ReactNativeTHEOplayer.release.xcconfig"; sourceTree = ""; }; + 17BEB785211211E17565C821 /* libPods-ReactNativeTHEOplayer-tvOS-ReactNativeTHEOplayer-tvOSTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-ReactNativeTHEOplayer-tvOS-ReactNativeTHEOplayer-tvOSTests.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + 190AEA5559B8C0309FC48742 /* Pods-ReactNativeTHEOplayer-tvOS.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ReactNativeTHEOplayer-tvOS.release.xcconfig"; path = "Target Support Files/Pods-ReactNativeTHEOplayer-tvOS/Pods-ReactNativeTHEOplayer-tvOS.release.xcconfig"; sourceTree = ""; }; 26849ED127A3FF7900FFFB02 /* ReactNativeTHEOplayer-tvOS-Bridging-Header.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "ReactNativeTHEOplayer-tvOS-Bridging-Header.h"; sourceTree = ""; }; 26849ED227A3FF8800FFFB02 /* ReactNativeTHEOplayer-Bridging-Header.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "ReactNativeTHEOplayer-Bridging-Header.h"; sourceTree = ""; }; - 2C329346E04FD437DBF160C6 /* Pods-ReactNativeTHEOplayer-ReactNativeTHEOplayerTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ReactNativeTHEOplayer-ReactNativeTHEOplayerTests.release.xcconfig"; path = "Target Support Files/Pods-ReactNativeTHEOplayer-ReactNativeTHEOplayerTests/Pods-ReactNativeTHEOplayer-ReactNativeTHEOplayerTests.release.xcconfig"; sourceTree = ""; }; + 2CEBF59ED7615126693EF430 /* Pods-ReactNativeTHEOplayer.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ReactNativeTHEOplayer.debug.xcconfig"; path = "Target Support Files/Pods-ReactNativeTHEOplayer/Pods-ReactNativeTHEOplayer.debug.xcconfig"; sourceTree = ""; }; 2D02E47B1E0B4A5D006451C7 /* ReactNativeTHEOplayer-tvOS.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "ReactNativeTHEOplayer-tvOS.app"; sourceTree = BUILT_PRODUCTS_DIR; }; 2D02E4901E0B4A5D006451C7 /* ReactNativeTHEOplayer-tvOSTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "ReactNativeTHEOplayer-tvOSTests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; - 36771B2C8C43AC6099096637 /* Pods-ReactNativeTHEOplayer-ReactNativeTHEOplayerTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ReactNativeTHEOplayer-ReactNativeTHEOplayerTests.debug.xcconfig"; path = "Target Support Files/Pods-ReactNativeTHEOplayer-ReactNativeTHEOplayerTests/Pods-ReactNativeTHEOplayer-ReactNativeTHEOplayerTests.debug.xcconfig"; sourceTree = ""; }; - 388308430DF4BE056B0CEF13 /* Pods-ReactNativeTHEOplayer-tvOS.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ReactNativeTHEOplayer-tvOS.release.xcconfig"; path = "Target Support Files/Pods-ReactNativeTHEOplayer-tvOS/Pods-ReactNativeTHEOplayer-tvOS.release.xcconfig"; sourceTree = ""; }; - 3BDF8C4CCF278F944E8C6CBF /* Pods-ReactNativeTHEOplayer-tvOS-ReactNativeTHEOplayer-tvOSTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ReactNativeTHEOplayer-tvOS-ReactNativeTHEOplayer-tvOSTests.release.xcconfig"; path = "Target Support Files/Pods-ReactNativeTHEOplayer-tvOS-ReactNativeTHEOplayer-tvOSTests/Pods-ReactNativeTHEOplayer-tvOS-ReactNativeTHEOplayer-tvOSTests.release.xcconfig"; sourceTree = ""; }; - 4F21F13455730034D850CD1C /* libPods-ReactNativeTHEOplayer-ReactNativeTHEOplayerTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-ReactNativeTHEOplayer-ReactNativeTHEOplayerTests.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + 49AD0676F8A722038DC6C90A /* Pods-ReactNativeTHEOplayer-ReactNativeTHEOplayerTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ReactNativeTHEOplayer-ReactNativeTHEOplayerTests.release.xcconfig"; path = "Target Support Files/Pods-ReactNativeTHEOplayer-ReactNativeTHEOplayerTests/Pods-ReactNativeTHEOplayer-ReactNativeTHEOplayerTests.release.xcconfig"; sourceTree = ""; }; + 5AA67747D91D0900899ED730 /* libPods-ReactNativeTHEOplayer-ReactNativeTHEOplayerTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-ReactNativeTHEOplayer-ReactNativeTHEOplayerTests.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + 6251DD110506EAF87723E482 /* Pods-ReactNativeTHEOplayer-ReactNativeTHEOplayerTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ReactNativeTHEOplayer-ReactNativeTHEOplayerTests.debug.xcconfig"; path = "Target Support Files/Pods-ReactNativeTHEOplayer-ReactNativeTHEOplayerTests/Pods-ReactNativeTHEOplayer-ReactNativeTHEOplayerTests.debug.xcconfig"; sourceTree = ""; }; 7740B1311B6C85C9C1C70CE2 /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xml; name = PrivacyInfo.xcprivacy; path = ReactNativeTHEOplayer/PrivacyInfo.xcprivacy; sourceTree = ""; }; 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = LaunchScreen.storyboard; path = ReactNativeTHEOplayer/LaunchScreen.storyboard; sourceTree = ""; }; - 8DC2855AB2CCC04BED0978AE /* libPods-ReactNativeTHEOplayer.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-ReactNativeTHEOplayer.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - A0216F1136BF7C90703C880F /* libPods-ReactNativeTHEOplayer-tvOS-ReactNativeTHEOplayer-tvOSTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-ReactNativeTHEOplayer-tvOS-ReactNativeTHEOplayer-tvOSTests.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - CCE9A90FED9D09047497AB6D /* Pods-ReactNativeTHEOplayer-tvOS.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ReactNativeTHEOplayer-tvOS.debug.xcconfig"; path = "Target Support Files/Pods-ReactNativeTHEOplayer-tvOS/Pods-ReactNativeTHEOplayer-tvOS.debug.xcconfig"; sourceTree = ""; }; + B084F3EA77EA940F5E5780C5 /* libPods-ReactNativeTHEOplayer-tvOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-ReactNativeTHEOplayer-tvOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + B3FB3DD1C39700ED56788880 /* libPods-ReactNativeTHEOplayer.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-ReactNativeTHEOplayer.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + C49C561B8F50F97E78EF6671 /* Pods-ReactNativeTHEOplayer-tvOS-ReactNativeTHEOplayer-tvOSTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ReactNativeTHEOplayer-tvOS-ReactNativeTHEOplayer-tvOSTests.release.xcconfig"; path = "Target Support Files/Pods-ReactNativeTHEOplayer-tvOS-ReactNativeTHEOplayer-tvOSTests/Pods-ReactNativeTHEOplayer-tvOS-ReactNativeTHEOplayer-tvOSTests.release.xcconfig"; sourceTree = ""; }; + E09A8219605514B320A08A7E /* Pods-ReactNativeTHEOplayer.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ReactNativeTHEOplayer.release.xcconfig"; path = "Target Support Files/Pods-ReactNativeTHEOplayer/Pods-ReactNativeTHEOplayer.release.xcconfig"; sourceTree = ""; }; E13BF0204B80026411EC76D2 /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xml; name = PrivacyInfo.xcprivacy; path = ReactNativeTHEOplayer/PrivacyInfo.xcprivacy; sourceTree = ""; }; - E8891750AE2DFBD87A5BDB74 /* Pods-ReactNativeTHEOplayer-tvOS-ReactNativeTHEOplayer-tvOSTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ReactNativeTHEOplayer-tvOS-ReactNativeTHEOplayer-tvOSTests.debug.xcconfig"; path = "Target Support Files/Pods-ReactNativeTHEOplayer-tvOS-ReactNativeTHEOplayer-tvOSTests/Pods-ReactNativeTHEOplayer-tvOS-ReactNativeTHEOplayer-tvOSTests.debug.xcconfig"; sourceTree = ""; }; - EA54FCF2086BA3B4678F8237 /* libPods-ReactNativeTHEOplayer-tvOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-ReactNativeTHEOplayer-tvOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; ED297162215061F000B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; }; ED2971642150620600B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS12.0.sdk/System/Library/Frameworks/JavaScriptCore.framework; sourceTree = DEVELOPER_DIR; }; + F0B71F66151FBEBD78110A56 /* Pods-ReactNativeTHEOplayer-tvOS.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ReactNativeTHEOplayer-tvOS.debug.xcconfig"; path = "Target Support Files/Pods-ReactNativeTHEOplayer-tvOS/Pods-ReactNativeTHEOplayer-tvOS.debug.xcconfig"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -80,7 +80,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 41BF5F3596F87FEE707DDD11 /* libPods-ReactNativeTHEOplayer-ReactNativeTHEOplayerTests.a in Frameworks */, + E84400218C35B7AA0B8005E3 /* libPods-ReactNativeTHEOplayer-ReactNativeTHEOplayerTests.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -88,7 +88,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 269984920579226908D49904 /* libPods-ReactNativeTHEOplayer.a in Frameworks */, + B132A7615192F470DFD25B50 /* libPods-ReactNativeTHEOplayer.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -96,7 +96,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - EE57DEA5314790D63C074D03 /* libPods-ReactNativeTHEOplayer-tvOS.a in Frameworks */, + CAB8FDDCDB8A35929E68B6CE /* libPods-ReactNativeTHEOplayer-tvOS.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -104,7 +104,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 47EB63F3390701B2260096C6 /* libPods-ReactNativeTHEOplayer-tvOS-ReactNativeTHEOplayer-tvOSTests.a in Frameworks */, + 144AFEB0365614C64FBCAD99 /* libPods-ReactNativeTHEOplayer-tvOS-ReactNativeTHEOplayer-tvOSTests.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -150,10 +150,10 @@ children = ( ED297162215061F000B7C4FE /* JavaScriptCore.framework */, ED2971642150620600B7C4FE /* JavaScriptCore.framework */, - 8DC2855AB2CCC04BED0978AE /* libPods-ReactNativeTHEOplayer.a */, - 4F21F13455730034D850CD1C /* libPods-ReactNativeTHEOplayer-ReactNativeTHEOplayerTests.a */, - EA54FCF2086BA3B4678F8237 /* libPods-ReactNativeTHEOplayer-tvOS.a */, - A0216F1136BF7C90703C880F /* libPods-ReactNativeTHEOplayer-tvOS-ReactNativeTHEOplayer-tvOSTests.a */, + B3FB3DD1C39700ED56788880 /* libPods-ReactNativeTHEOplayer.a */, + 5AA67747D91D0900899ED730 /* libPods-ReactNativeTHEOplayer-ReactNativeTHEOplayerTests.a */, + B084F3EA77EA940F5E5780C5 /* libPods-ReactNativeTHEOplayer-tvOS.a */, + 17BEB785211211E17565C821 /* libPods-ReactNativeTHEOplayer-tvOS-ReactNativeTHEOplayer-tvOSTests.a */, ); name = Frameworks; sourceTree = ""; @@ -195,14 +195,14 @@ 9B1644CBAE2FABCCC6E29A69 /* Pods */ = { isa = PBXGroup; children = ( - 015BA46D04C1496C29E63456 /* Pods-ReactNativeTHEOplayer.debug.xcconfig */, - 224D5D4AEB9A0A36B75746AA /* Pods-ReactNativeTHEOplayer.release.xcconfig */, - 36771B2C8C43AC6099096637 /* Pods-ReactNativeTHEOplayer-ReactNativeTHEOplayerTests.debug.xcconfig */, - 2C329346E04FD437DBF160C6 /* Pods-ReactNativeTHEOplayer-ReactNativeTHEOplayerTests.release.xcconfig */, - CCE9A90FED9D09047497AB6D /* Pods-ReactNativeTHEOplayer-tvOS.debug.xcconfig */, - 388308430DF4BE056B0CEF13 /* Pods-ReactNativeTHEOplayer-tvOS.release.xcconfig */, - E8891750AE2DFBD87A5BDB74 /* Pods-ReactNativeTHEOplayer-tvOS-ReactNativeTHEOplayer-tvOSTests.debug.xcconfig */, - 3BDF8C4CCF278F944E8C6CBF /* Pods-ReactNativeTHEOplayer-tvOS-ReactNativeTHEOplayer-tvOSTests.release.xcconfig */, + 2CEBF59ED7615126693EF430 /* Pods-ReactNativeTHEOplayer.debug.xcconfig */, + E09A8219605514B320A08A7E /* Pods-ReactNativeTHEOplayer.release.xcconfig */, + 6251DD110506EAF87723E482 /* Pods-ReactNativeTHEOplayer-ReactNativeTHEOplayerTests.debug.xcconfig */, + 49AD0676F8A722038DC6C90A /* Pods-ReactNativeTHEOplayer-ReactNativeTHEOplayerTests.release.xcconfig */, + F0B71F66151FBEBD78110A56 /* Pods-ReactNativeTHEOplayer-tvOS.debug.xcconfig */, + 190AEA5559B8C0309FC48742 /* Pods-ReactNativeTHEOplayer-tvOS.release.xcconfig */, + 0460E03D342B1D1D12A43958 /* Pods-ReactNativeTHEOplayer-tvOS-ReactNativeTHEOplayer-tvOSTests.debug.xcconfig */, + C49C561B8F50F97E78EF6671 /* Pods-ReactNativeTHEOplayer-tvOS-ReactNativeTHEOplayer-tvOSTests.release.xcconfig */, ); path = Pods; sourceTree = ""; @@ -214,12 +214,12 @@ isa = PBXNativeTarget; buildConfigurationList = 00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget "ReactNativeTHEOplayerTests" */; buildPhases = ( - BC8CB606DF6125BE2BCE6F48 /* [CP] Check Pods Manifest.lock */, + 3A4E0C9A58031A4F75C97D41 /* [CP] Check Pods Manifest.lock */, 00E356EA1AD99517003FC87E /* Sources */, 00E356EB1AD99517003FC87E /* Frameworks */, 00E356EC1AD99517003FC87E /* Resources */, - D9B6B751E2AEDF3F7AB29F2D /* [CP] Copy Pods Resources */, - 072A6152D978B8AF7BE32F45 /* [CP] Embed Pods Frameworks */, + 9C2859372F69FCDD3183024A /* [CP] Embed Pods Frameworks */, + 3629A488E1B40A11671E089B /* [CP] Copy Pods Resources */, ); buildRules = ( ); @@ -235,14 +235,14 @@ isa = PBXNativeTarget; buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "ReactNativeTHEOplayer" */; buildPhases = ( - 5227897DA0E4608219DEAFFA /* [CP] Check Pods Manifest.lock */, + A3E4F6FE1013878E8836320F /* [CP] Check Pods Manifest.lock */, FD10A7F022414F080027D42C /* Start Packager */, 13B07F871A680F5B00A75B9A /* Sources */, 13B07F8C1A680F5B00A75B9A /* Frameworks */, 13B07F8E1A680F5B00A75B9A /* Resources */, 00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */, - 0D7507D506130F6246FD97BE /* [CP] Copy Pods Resources */, - 506E1BCE02C6B79EB0FC27D7 /* [CP] Embed Pods Frameworks */, + F64CF9E80C59E3817A458E87 /* [CP] Embed Pods Frameworks */, + F665E76E14390AA61A72BC31 /* [CP] Copy Pods Resources */, ); buildRules = ( ); @@ -257,14 +257,14 @@ isa = PBXNativeTarget; buildConfigurationList = 2D02E4BA1E0B4A5E006451C7 /* Build configuration list for PBXNativeTarget "ReactNativeTHEOplayer-tvOS" */; buildPhases = ( - 966D472419EA4A89F6874B5E /* [CP] Check Pods Manifest.lock */, + 09535EFC21B262A4BF9F57B6 /* [CP] Check Pods Manifest.lock */, FD10A7F122414F3F0027D42C /* Start Packager */, 2D02E4771E0B4A5D006451C7 /* Sources */, 2D02E4781E0B4A5D006451C7 /* Frameworks */, 2D02E4791E0B4A5D006451C7 /* Resources */, 2D02E4CB1E0B4B27006451C7 /* Bundle React Native Code And Images */, - 42686649B799B0EA1ADB4648 /* [CP] Copy Pods Resources */, - 1460900910E29AD8A9C9E3E0 /* [CP] Embed Pods Frameworks */, + 4CBC6D70E2F1D6E42F246A3F /* [CP] Embed Pods Frameworks */, + 9FA4699612AFC7919DA25924 /* [CP] Copy Pods Resources */, ); buildRules = ( ); @@ -279,12 +279,12 @@ isa = PBXNativeTarget; buildConfigurationList = 2D02E4BB1E0B4A5E006451C7 /* Build configuration list for PBXNativeTarget "ReactNativeTHEOplayer-tvOSTests" */; buildPhases = ( - C021C441AB5F12C78313DC25 /* [CP] Check Pods Manifest.lock */, + 747E8A00F0176045C015237F /* [CP] Check Pods Manifest.lock */, 2D02E48C1E0B4A5D006451C7 /* Sources */, 2D02E48D1E0B4A5D006451C7 /* Frameworks */, 2D02E48E1E0B4A5D006451C7 /* Resources */, - 84F93B44286727BF8D357577 /* [CP] Copy Pods Resources */, - 15A096170E2C8413DF5AD063 /* [CP] Embed Pods Frameworks */, + E8316A64C74E17E48E2D68E9 /* [CP] Embed Pods Frameworks */, + 2FA2AC9BD9DCC41B4EE29132 /* [CP] Copy Pods Resources */, ); buildRules = ( ); @@ -395,41 +395,69 @@ shellPath = /bin/sh; shellScript = "export NODE_BINARY=node\n../node_modules/react-native/scripts/react-native-xcode.sh"; }; - 072A6152D978B8AF7BE32F45 /* [CP] Embed Pods Frameworks */ = { + 09535EFC21B262A4BF9F57B6 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); + inputFileListPaths = ( + ); inputPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-ReactNativeTHEOplayer-ReactNativeTHEOplayerTests/Pods-ReactNativeTHEOplayer-ReactNativeTHEOplayerTests-frameworks.sh", - "${PODS_XCFRAMEWORKS_BUILD_DIR}/GoogleAds-IMA-iOS-SDK/GoogleInteractiveMediaAds.framework/GoogleInteractiveMediaAds", - "${PODS_XCFRAMEWORKS_BUILD_DIR}/THEOplayer-Integration-GoogleCast/Base/THEOplayerGoogleCastIntegration.framework/THEOplayerGoogleCastIntegration", - "${PODS_XCFRAMEWORKS_BUILD_DIR}/THEOplayer-Integration-GoogleIMA/Base/THEOplayerGoogleIMAIntegration.framework/THEOplayerGoogleIMAIntegration", - "${PODS_XCFRAMEWORKS_BUILD_DIR}/THEOplayerSDK-core/THEOplayerSDK.framework/THEOplayerSDK", - "${PODS_XCFRAMEWORKS_BUILD_DIR}/google-cast-sdk-dynamic-xcframework/GoogleCast.framework/GoogleCast", - "${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/Pre-built/hermes.framework/hermes", + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( ); - name = "[CP] Embed Pods Frameworks"; outputPaths = ( - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/GoogleInteractiveMediaAds.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/THEOplayerGoogleCastIntegration.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/THEOplayerGoogleIMAIntegration.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/THEOplayerSDK.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/GoogleCast.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/hermes.framework", + "$(DERIVED_FILE_DIR)/Pods-ReactNativeTHEOplayer-tvOS-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-ReactNativeTHEOplayer-ReactNativeTHEOplayerTests/Pods-ReactNativeTHEOplayer-ReactNativeTHEOplayerTests-frameworks.sh\"\n"; + 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"; showEnvVarsInLog = 0; }; - 0D7507D506130F6246FD97BE /* [CP] Copy Pods Resources */ = { + 2D02E4CB1E0B4B27006451C7 /* Bundle React Native Code And Images */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-ReactNativeTHEOplayer/Pods-ReactNativeTHEOplayer-resources.sh", + ); + name = "Bundle React Native Code And Images"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "export NODE_BINARY=node\n../node_modules/react-native/scripts/react-native-xcode.sh"; + }; + 2FA2AC9BD9DCC41B4EE29132 /* [CP] Copy Pods Resources */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-ReactNativeTHEOplayer-tvOS-ReactNativeTHEOplayer-tvOSTests/Pods-ReactNativeTHEOplayer-tvOS-ReactNativeTHEOplayer-tvOSTests-resources.sh", + "${PODS_CONFIGURATION_BUILD_DIR}/React-Core-tvOS/RCTI18nStrings.bundle", + "${PODS_ROOT}/../../../ios/style.css", + ); + name = "[CP] Copy Pods Resources"; + outputPaths = ( + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/RCTI18nStrings.bundle", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/style.css", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-ReactNativeTHEOplayer-tvOS-ReactNativeTHEOplayer-tvOSTests/Pods-ReactNativeTHEOplayer-tvOS-ReactNativeTHEOplayer-tvOSTests-resources.sh\"\n"; + showEnvVarsInLog = 0; + }; + 3629A488E1B40A11671E089B /* [CP] Copy Pods Resources */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-ReactNativeTHEOplayer-ReactNativeTHEOplayerTests/Pods-ReactNativeTHEOplayer-ReactNativeTHEOplayerTests-resources.sh", "${PODS_CONFIGURATION_BUILD_DIR}/PromisesObjC/FBLPromises_Privacy.bundle", "${PODS_CONFIGURATION_BUILD_DIR}/React-Core-iOS/RCTI18nStrings.bundle", "${PODS_ROOT}/../../../ios/style.css", @@ -442,40 +470,38 @@ ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-ReactNativeTHEOplayer/Pods-ReactNativeTHEOplayer-resources.sh\"\n"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-ReactNativeTHEOplayer-ReactNativeTHEOplayerTests/Pods-ReactNativeTHEOplayer-ReactNativeTHEOplayerTests-resources.sh\"\n"; showEnvVarsInLog = 0; }; - 1460900910E29AD8A9C9E3E0 /* [CP] Embed Pods Frameworks */ = { + 3A4E0C9A58031A4F75C97D41 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); + inputFileListPaths = ( + ); inputPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-ReactNativeTHEOplayer-tvOS/Pods-ReactNativeTHEOplayer-tvOS-frameworks.sh", - "${PODS_XCFRAMEWORKS_BUILD_DIR}/THEOplayer-Integration-GoogleIMA/Base/THEOplayerGoogleIMAIntegration.framework/THEOplayerGoogleIMAIntegration", - "${PODS_XCFRAMEWORKS_BUILD_DIR}/THEOplayerSDK-core/THEOplayerSDK.framework/THEOplayerSDK", - "${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/Pre-built/hermes.framework/hermes", - "${PODS_XCFRAMEWORKS_BUILD_DIR}/GoogleAds-IMA-tvOS-SDK/GoogleInteractiveMediaAds.framework/GoogleInteractiveMediaAds", + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( ); - name = "[CP] Embed Pods Frameworks"; outputPaths = ( - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/THEOplayerGoogleIMAIntegration.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/THEOplayerSDK.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/hermes.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/GoogleInteractiveMediaAds.framework", + "$(DERIVED_FILE_DIR)/Pods-ReactNativeTHEOplayer-ReactNativeTHEOplayerTests-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-ReactNativeTHEOplayer-tvOS/Pods-ReactNativeTHEOplayer-tvOS-frameworks.sh\"\n"; + 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"; showEnvVarsInLog = 0; }; - 15A096170E2C8413DF5AD063 /* [CP] Embed Pods Frameworks */ = { + 4CBC6D70E2F1D6E42F246A3F /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-ReactNativeTHEOplayer-tvOS-ReactNativeTHEOplayer-tvOSTests/Pods-ReactNativeTHEOplayer-tvOS-ReactNativeTHEOplayer-tvOSTests-frameworks.sh", + "${PODS_ROOT}/Target Support Files/Pods-ReactNativeTHEOplayer-tvOS/Pods-ReactNativeTHEOplayer-tvOS-frameworks.sh", "${PODS_XCFRAMEWORKS_BUILD_DIR}/THEOplayer-Integration-GoogleIMA/Base/THEOplayerGoogleIMAIntegration.framework/THEOplayerGoogleIMAIntegration", "${PODS_XCFRAMEWORKS_BUILD_DIR}/THEOplayerSDK-core/THEOplayerSDK.framework/THEOplayerSDK", "${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/Pre-built/hermes.framework/hermes", @@ -490,50 +516,38 @@ ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-ReactNativeTHEOplayer-tvOS-ReactNativeTHEOplayer-tvOSTests/Pods-ReactNativeTHEOplayer-tvOS-ReactNativeTHEOplayer-tvOSTests-frameworks.sh\"\n"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-ReactNativeTHEOplayer-tvOS/Pods-ReactNativeTHEOplayer-tvOS-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; - 2D02E4CB1E0B4B27006451C7 /* Bundle React Native Code And Images */ = { + 747E8A00F0176045C015237F /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); - inputPaths = ( - ); - name = "Bundle React Native Code And Images"; - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "export NODE_BINARY=node\n../node_modules/react-native/scripts/react-native-xcode.sh"; - }; - 42686649B799B0EA1ADB4648 /* [CP] Copy Pods Resources */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( + inputFileListPaths = ( ); inputPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-ReactNativeTHEOplayer-tvOS/Pods-ReactNativeTHEOplayer-tvOS-resources.sh", - "${PODS_CONFIGURATION_BUILD_DIR}/React-Core-tvOS/RCTI18nStrings.bundle", - "${PODS_ROOT}/../../../ios/style.css", + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( ); - name = "[CP] Copy Pods Resources"; outputPaths = ( - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/RCTI18nStrings.bundle", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/style.css", + "$(DERIVED_FILE_DIR)/Pods-ReactNativeTHEOplayer-tvOS-ReactNativeTHEOplayer-tvOSTests-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-ReactNativeTHEOplayer-tvOS/Pods-ReactNativeTHEOplayer-tvOS-resources.sh\"\n"; + 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"; showEnvVarsInLog = 0; }; - 506E1BCE02C6B79EB0FC27D7 /* [CP] Embed Pods Frameworks */ = { + 9C2859372F69FCDD3183024A /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-ReactNativeTHEOplayer/Pods-ReactNativeTHEOplayer-frameworks.sh", + "${PODS_ROOT}/Target Support Files/Pods-ReactNativeTHEOplayer-ReactNativeTHEOplayerTests/Pods-ReactNativeTHEOplayer-ReactNativeTHEOplayerTests-frameworks.sh", "${PODS_XCFRAMEWORKS_BUILD_DIR}/GoogleAds-IMA-iOS-SDK/GoogleInteractiveMediaAds.framework/GoogleInteractiveMediaAds", "${PODS_XCFRAMEWORKS_BUILD_DIR}/THEOplayer-Integration-GoogleCast/Base/THEOplayerGoogleCastIntegration.framework/THEOplayerGoogleCastIntegration", "${PODS_XCFRAMEWORKS_BUILD_DIR}/THEOplayer-Integration-GoogleIMA/Base/THEOplayerGoogleIMAIntegration.framework/THEOplayerGoogleIMAIntegration", @@ -552,38 +566,16 @@ ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-ReactNativeTHEOplayer/Pods-ReactNativeTHEOplayer-frameworks.sh\"\n"; - showEnvVarsInLog = 0; - }; - 5227897DA0E4608219DEAFFA /* [CP] Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-ReactNativeTHEOplayer-checkManifestLockResult.txt", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - 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"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-ReactNativeTHEOplayer-ReactNativeTHEOplayerTests/Pods-ReactNativeTHEOplayer-ReactNativeTHEOplayerTests-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; - 84F93B44286727BF8D357577 /* [CP] Copy Pods Resources */ = { + 9FA4699612AFC7919DA25924 /* [CP] Copy Pods Resources */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-ReactNativeTHEOplayer-tvOS-ReactNativeTHEOplayer-tvOSTests/Pods-ReactNativeTHEOplayer-tvOS-ReactNativeTHEOplayer-tvOSTests-resources.sh", + "${PODS_ROOT}/Target Support Files/Pods-ReactNativeTHEOplayer-tvOS/Pods-ReactNativeTHEOplayer-tvOS-resources.sh", "${PODS_CONFIGURATION_BUILD_DIR}/React-Core-tvOS/RCTI18nStrings.bundle", "${PODS_ROOT}/../../../ios/style.css", ); @@ -594,10 +586,10 @@ ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-ReactNativeTHEOplayer-tvOS-ReactNativeTHEOplayer-tvOSTests/Pods-ReactNativeTHEOplayer-tvOS-ReactNativeTHEOplayer-tvOSTests-resources.sh\"\n"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-ReactNativeTHEOplayer-tvOS/Pods-ReactNativeTHEOplayer-tvOS-resources.sh\"\n"; showEnvVarsInLog = 0; }; - 966D472419EA4A89F6874B5E /* [CP] Check Pods Manifest.lock */ = { + A3E4F6FE1013878E8836320F /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -612,64 +604,72 @@ outputFileListPaths = ( ); outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-ReactNativeTHEOplayer-tvOS-checkManifestLockResult.txt", + "$(DERIVED_FILE_DIR)/Pods-ReactNativeTHEOplayer-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; 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"; showEnvVarsInLog = 0; }; - BC8CB606DF6125BE2BCE6F48 /* [CP] Check Pods Manifest.lock */ = { + E8316A64C74E17E48E2D68E9 /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); - inputFileListPaths = ( - ); inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-ReactNativeTHEOplayer-tvOS-ReactNativeTHEOplayer-tvOSTests/Pods-ReactNativeTHEOplayer-tvOS-ReactNativeTHEOplayer-tvOSTests-frameworks.sh", + "${PODS_XCFRAMEWORKS_BUILD_DIR}/THEOplayer-Integration-GoogleIMA/Base/THEOplayerGoogleIMAIntegration.framework/THEOplayerGoogleIMAIntegration", + "${PODS_XCFRAMEWORKS_BUILD_DIR}/THEOplayerSDK-core/THEOplayerSDK.framework/THEOplayerSDK", + "${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/Pre-built/hermes.framework/hermes", + "${PODS_XCFRAMEWORKS_BUILD_DIR}/GoogleAds-IMA-tvOS-SDK/GoogleInteractiveMediaAds.framework/GoogleInteractiveMediaAds", ); + name = "[CP] Embed Pods Frameworks"; outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-ReactNativeTHEOplayer-ReactNativeTHEOplayerTests-checkManifestLockResult.txt", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/THEOplayerGoogleIMAIntegration.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/THEOplayerSDK.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/hermes.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/GoogleInteractiveMediaAds.framework", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - 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"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-ReactNativeTHEOplayer-tvOS-ReactNativeTHEOplayer-tvOSTests/Pods-ReactNativeTHEOplayer-tvOS-ReactNativeTHEOplayer-tvOSTests-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; - C021C441AB5F12C78313DC25 /* [CP] Check Pods Manifest.lock */ = { + F64CF9E80C59E3817A458E87 /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); - inputFileListPaths = ( - ); inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-ReactNativeTHEOplayer/Pods-ReactNativeTHEOplayer-frameworks.sh", + "${PODS_XCFRAMEWORKS_BUILD_DIR}/GoogleAds-IMA-iOS-SDK/GoogleInteractiveMediaAds.framework/GoogleInteractiveMediaAds", + "${PODS_XCFRAMEWORKS_BUILD_DIR}/THEOplayer-Integration-GoogleCast/Base/THEOplayerGoogleCastIntegration.framework/THEOplayerGoogleCastIntegration", + "${PODS_XCFRAMEWORKS_BUILD_DIR}/THEOplayer-Integration-GoogleIMA/Base/THEOplayerGoogleIMAIntegration.framework/THEOplayerGoogleIMAIntegration", + "${PODS_XCFRAMEWORKS_BUILD_DIR}/THEOplayerSDK-core/THEOplayerSDK.framework/THEOplayerSDK", + "${PODS_XCFRAMEWORKS_BUILD_DIR}/google-cast-sdk-dynamic-xcframework/GoogleCast.framework/GoogleCast", + "${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/Pre-built/hermes.framework/hermes", ); + name = "[CP] Embed Pods Frameworks"; outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-ReactNativeTHEOplayer-tvOS-ReactNativeTHEOplayer-tvOSTests-checkManifestLockResult.txt", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/GoogleInteractiveMediaAds.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/THEOplayerGoogleCastIntegration.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/THEOplayerGoogleIMAIntegration.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/THEOplayerSDK.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/GoogleCast.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/hermes.framework", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - 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"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-ReactNativeTHEOplayer/Pods-ReactNativeTHEOplayer-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; - D9B6B751E2AEDF3F7AB29F2D /* [CP] Copy Pods Resources */ = { + F665E76E14390AA61A72BC31 /* [CP] Copy Pods Resources */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-ReactNativeTHEOplayer-ReactNativeTHEOplayerTests/Pods-ReactNativeTHEOplayer-ReactNativeTHEOplayerTests-resources.sh", + "${PODS_ROOT}/Target Support Files/Pods-ReactNativeTHEOplayer/Pods-ReactNativeTHEOplayer-resources.sh", "${PODS_CONFIGURATION_BUILD_DIR}/PromisesObjC/FBLPromises_Privacy.bundle", "${PODS_CONFIGURATION_BUILD_DIR}/React-Core-iOS/RCTI18nStrings.bundle", "${PODS_ROOT}/../../../ios/style.css", @@ -682,7 +682,7 @@ ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-ReactNativeTHEOplayer-ReactNativeTHEOplayerTests/Pods-ReactNativeTHEOplayer-ReactNativeTHEOplayerTests-resources.sh\"\n"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-ReactNativeTHEOplayer/Pods-ReactNativeTHEOplayer-resources.sh\"\n"; showEnvVarsInLog = 0; }; FD10A7F022414F080027D42C /* Start Packager */ = { @@ -778,7 +778,7 @@ /* Begin XCBuildConfiguration section */ 00E356F61AD99517003FC87E /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 36771B2C8C43AC6099096637 /* Pods-ReactNativeTHEOplayer-ReactNativeTHEOplayerTests.debug.xcconfig */; + baseConfigurationReference = 6251DD110506EAF87723E482 /* Pods-ReactNativeTHEOplayer-ReactNativeTHEOplayerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; GCC_PREPROCESSOR_DEFINITIONS = ( @@ -801,7 +801,7 @@ }; 00E356F71AD99517003FC87E /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 2C329346E04FD437DBF160C6 /* Pods-ReactNativeTHEOplayer-ReactNativeTHEOplayerTests.release.xcconfig */; + baseConfigurationReference = 49AD0676F8A722038DC6C90A /* Pods-ReactNativeTHEOplayer-ReactNativeTHEOplayerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; COPY_PHASE_STRIP = NO; @@ -821,11 +821,12 @@ }; 13B07F941A680F5B00A75B9A /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 015BA46D04C1496C29E63456 /* Pods-ReactNativeTHEOplayer.debug.xcconfig */; + baseConfigurationReference = 2CEBF59ED7615126693EF430 /* Pods-ReactNativeTHEOplayer.debug.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = 8YAB8ZY55Y; ENABLE_BITCODE = NO; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", @@ -852,7 +853,7 @@ }; 13B07F951A680F5B00A75B9A /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 224D5D4AEB9A0A36B75746AA /* Pods-ReactNativeTHEOplayer.release.xcconfig */; + baseConfigurationReference = E09A8219605514B320A08A7E /* Pods-ReactNativeTHEOplayer.release.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; @@ -876,7 +877,7 @@ }; 2D02E4971E0B4A5E006451C7 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = CCE9A90FED9D09047497AB6D /* Pods-ReactNativeTHEOplayer-tvOS.debug.xcconfig */; + baseConfigurationReference = F0B71F66151FBEBD78110A56 /* Pods-ReactNativeTHEOplayer-tvOS.debug.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = "App Icon & Top Shelf Image"; ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; @@ -909,7 +910,7 @@ }; 2D02E4981E0B4A5E006451C7 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 388308430DF4BE056B0CEF13 /* Pods-ReactNativeTHEOplayer-tvOS.release.xcconfig */; + baseConfigurationReference = 190AEA5559B8C0309FC48742 /* Pods-ReactNativeTHEOplayer-tvOS.release.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = "App Icon & Top Shelf Image"; ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; @@ -941,7 +942,7 @@ }; 2D02E4991E0B4A5E006451C7 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = E8891750AE2DFBD87A5BDB74 /* Pods-ReactNativeTHEOplayer-tvOS-ReactNativeTHEOplayer-tvOSTests.debug.xcconfig */; + baseConfigurationReference = 0460E03D342B1D1D12A43958 /* Pods-ReactNativeTHEOplayer-tvOS-ReactNativeTHEOplayer-tvOSTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CLANG_ANALYZER_NONNULL = YES; @@ -968,7 +969,7 @@ }; 2D02E49A1E0B4A5E006451C7 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 3BDF8C4CCF278F944E8C6CBF /* Pods-ReactNativeTHEOplayer-tvOS-ReactNativeTHEOplayer-tvOSTests.release.xcconfig */; + baseConfigurationReference = C49C561B8F50F97E78EF6671 /* Pods-ReactNativeTHEOplayer-tvOS-ReactNativeTHEOplayer-tvOSTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CLANG_ANALYZER_NONNULL = YES; diff --git a/example/package-lock.json b/example/package-lock.json index 3a7485a61..f80dbfc28 100644 --- a/example/package-lock.json +++ b/example/package-lock.json @@ -37,7 +37,7 @@ "html-webpack-plugin": "^4.5.2", "react-test-renderer": "18.2.0", "typescript": "5.0.4", - "webpack": "^5.91.0", + "webpack": "^5.94.0", "webpack-cli": "^5.1.4", "webpack-dev-server": "^5.0.4" }, @@ -4328,26 +4328,6 @@ "@types/node": "*" } }, - "node_modules/@types/eslint": { - "version": "8.56.7", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.7.tgz", - "integrity": "sha512-SjDvI/x3zsZnOkYZ3lCt9lOZWZLB2jIlNKz+LBgCtDurK0JZcwucxYHn1w2BJkD34dgX9Tjnak0txtq4WTggEA==", - "dev": true, - "dependencies": { - "@types/estree": "*", - "@types/json-schema": "*" - } - }, - "node_modules/@types/eslint-scope": { - "version": "3.7.7", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", - "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", - "dev": true, - "dependencies": { - "@types/eslint": "*", - "@types/estree": "*" - } - }, "node_modules/@types/estree": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", @@ -5179,10 +5159,10 @@ "node": ">=0.4.0" } }, - "node_modules/acorn-import-assertions": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz", - "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==", + "node_modules/acorn-import-attributes": { + "version": "1.9.5", + "resolved": "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz", + "integrity": "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==", "dev": true, "peerDependencies": { "acorn": "^8" @@ -7019,9 +6999,9 @@ } }, "node_modules/enhanced-resolve": { - "version": "5.16.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.16.0.tgz", - "integrity": "sha512-O+QWCviPNSSLAD9Ucn8Awv+poAkqn3T1XY5/N7kR7rQO9yfSGWkYZDwpJ+iKF7B8rxaQKWngSqACpgzeapSyoA==", + "version": "5.17.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz", + "integrity": "sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==", "dev": true, "dependencies": { "graceful-fs": "^4.2.4", @@ -11094,11 +11074,11 @@ } }, "node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", "dependencies": { - "braces": "^3.0.2", + "braces": "^3.0.3", "picomatch": "^2.3.1" }, "engines": { @@ -14503,21 +14483,20 @@ "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" }, "node_modules/webpack": { - "version": "5.91.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.91.0.tgz", - "integrity": "sha512-rzVwlLeBWHJbmgTC/8TvAcu5vpJNII+MelQpylD4jNERPwpBJOE2lEcko1zJX3QJeLjTTAnQxn/OJ8bjDzVQaw==", + "version": "5.94.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.94.0.tgz", + "integrity": "sha512-KcsGn50VT+06JH/iunZJedYGUJS5FGjow8wb9c0v5n1Om8O1g4L6LjtfxwlXIATopoQu+vOXXa7gYisWxCoPyg==", "dev": true, "dependencies": { - "@types/eslint-scope": "^3.7.3", "@types/estree": "^1.0.5", "@webassemblyjs/ast": "^1.12.1", "@webassemblyjs/wasm-edit": "^1.12.1", "@webassemblyjs/wasm-parser": "^1.12.1", "acorn": "^8.7.1", - "acorn-import-assertions": "^1.9.0", + "acorn-import-attributes": "^1.9.5", "browserslist": "^4.21.10", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.16.0", + "enhanced-resolve": "^5.17.1", "es-module-lexer": "^1.2.1", "eslint-scope": "5.1.1", "events": "^3.2.0", diff --git a/example/package.json b/example/package.json index e3d40d6a0..10f1e39e3 100644 --- a/example/package.json +++ b/example/package.json @@ -43,7 +43,7 @@ "html-webpack-plugin": "^4.5.2", "react-test-renderer": "18.2.0", "typescript": "5.0.4", - "webpack": "^5.91.0", + "webpack": "^5.94.0", "webpack-cli": "^5.1.4", "webpack-dev-server": "^5.0.4" }, diff --git a/ios/THEOplayerRCTSourceDescriptionBuilder.swift b/ios/THEOplayerRCTSourceDescriptionBuilder.swift index cafff73cb..2707d53ea 100644 --- a/ios/THEOplayerRCTSourceDescriptionBuilder.swift +++ b/ios/THEOplayerRCTSourceDescriptionBuilder.swift @@ -170,9 +170,11 @@ class THEOplayerRCTSourceDescriptionBuilder { if let src = typedSourceData[SD_PROP_SRC] as? String { // extract the type let type = typedSourceData[SD_PROP_TYPE] as? String ?? THEOplayerRCTSourceDescriptionBuilder.extractMimeType(src) + let headers = typedSourceData[SD_PROP_HEADERS] as? [String:String] return TypedSource(src: src, type: type, - drm: contentProtection) + drm: contentProtection, + headers: headers) } // Check if we can extract a DAI source diff --git a/ios/ui/THEOplayerRCTView+UIConfig.swift b/ios/ui/THEOplayerRCTView+UIConfig.swift index 130d7b500..b0dad1aee 100644 --- a/ios/ui/THEOplayerRCTView+UIConfig.swift +++ b/ios/ui/THEOplayerRCTView+UIConfig.swift @@ -8,7 +8,7 @@ struct UIConfig { } extension THEOplayerRCTView { - + func parseUIConfig(configDict: NSDictionary) { if let uiConfig = configDict["ui"] as? NSDictionary { if let uiLanguage = uiConfig["language"] as? String { @@ -16,8 +16,5 @@ extension THEOplayerRCTView { } } } - - func playerUIConfiguration() -> UIConfiguration? { - return UIConfiguration(language: self.uiConfig.language) - } + } diff --git a/package-lock.json b/package-lock.json index 7ae226b29..ca4e6ea76 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "react-native-theoplayer", - "version": "7.8.2", + "version": "7.9.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "react-native-theoplayer", - "version": "7.8.2", + "version": "7.9.0", "license": "SEE LICENSE AT https://www.theoplayer.com/terms", "dependencies": { "buffer": "^6.0.3" diff --git a/package.json b/package.json index f02612abf..1e5823912 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "react-native-theoplayer", - "version": "7.8.2", + "version": "7.9.0", "description": "A THEOplayer video component for react-native.", "main": "lib/commonjs/index", "module": "lib/module/index", diff --git a/react-native-theoplayer.podspec b/react-native-theoplayer.podspec index aad276386..8c09007fe 100644 --- a/react-native-theoplayer.podspec +++ b/react-native-theoplayer.podspec @@ -6,12 +6,12 @@ theofeatures = [] theoconfigfiles = ["theoplayer-config.json", "react-native-theoplayer.json"] theoconfigfiles.each do |configfile| configpath = File.join(__dir__ + "/../../", configfile) - if File.exist?(configpath) + if File.exist?(configpath) puts "THEOplayer config found: #{configfile}" theoconfig = JSON.parse(File.read(configpath)) theofeatures = theoconfig["ios"]["features"] end - break if theofeatures.length() > 0 + break if theofeatures.length() > 0 end Pod::Spec.new do |s| @@ -21,34 +21,34 @@ Pod::Spec.new do |s| s.homepage = package["homepage"] s.license = package["license"] s.authors = package["author"] - + s.platforms = { :ios => "13.4", :tvos => "13.4" } s.source = { :git => "https://www.theoplayer.com/.git", :tag => "#{s.version}" } - + s.source_files = 'ios/*.{h,m,swift}', 'ios/ads/*.swift', 'ios/casting/*.swift', 'ios/contentprotection/*.swift', 'ios/pip/*.swift', 'ios/backgroundAudio/*.swift', 'ios/cache/*.swift', 'ios/sideloadedMetadata/*.swift', 'ios/eventBroadcasting/*.swift' , 'ios/ui/*.swift', 'ios/presentationMode/*.swift' s.resources = ['ios/*.css'] - + # ReactNative Dependency s.dependency "React-Core" - + # THEOplayer core Dependency - s.dependency "THEOplayerSDK-core", "~> 7.8" - - if theofeatures.include?("GOOGLE_IMA") + s.dependency "THEOplayerSDK-core", "~> 7.12" + + if theofeatures.include?("GOOGLE_IMA") puts "Adding THEOplayer-Integration-GoogleIMA" - s.dependency "THEOplayer-Integration-GoogleIMA/Base", "~> 7.8" - s.dependency "THEOplayer-Integration-GoogleIMA/Dependencies", "~> 7.8" + s.dependency "THEOplayer-Integration-GoogleIMA/Base", "~> 7.12" + s.dependency "THEOplayer-Integration-GoogleIMA/Dependencies", "~> 7.12" end - + if theofeatures.include?("CHROMECAST") puts "Adding THEOplayer-Integration-GoogleCast" - s.ios.dependency "THEOplayer-Integration-GoogleCast/Base", "~> 7.8" + s.ios.dependency "THEOplayer-Integration-GoogleCast/Base", "~> 7.12" s.ios.dependency "google-cast-sdk-dynamic-xcframework", "~> 4.8" end - - if theofeatures.include?("SIDELOADED_TEXTTRACKS") + + if theofeatures.include?("SIDELOADED_TEXTTRACKS") puts "Adding THEOplayer-Connector-SideloadedSubtitle" - s.dependency "THEOplayer-Connector-SideloadedSubtitle", "~> 7.8" + s.dependency "THEOplayer-Connector-SideloadedSubtitle", "~> 7.12" end - + end diff --git a/src/api/barrel.ts b/src/api/barrel.ts index c5a64451a..d95983ccf 100644 --- a/src/api/barrel.ts +++ b/src/api/barrel.ts @@ -11,6 +11,7 @@ export * from './event/barrel'; export * from './media/barrel'; export * from './drm/barrel'; export * from './source/barrel'; +export * from './theolive/barrel'; export * from './timeranges/barrel'; export * from './resolution/barrel'; export * from './track/barrel'; diff --git a/src/api/source/SourceDescription.ts b/src/api/source/SourceDescription.ts index b84e75167..5708a63ac 100644 --- a/src/api/source/SourceDescription.ts +++ b/src/api/source/SourceDescription.ts @@ -11,8 +11,8 @@ import type { DRMConfiguration } from './drm/DRMConfiguration'; import type { HlsPlaybackConfiguration } from './hls/HlsPlaybackConfiguration'; import type { AdDescription } from './ads/Ads'; import type { MetadataDescription } from './metadata/MetadataDescription'; -import type { ServerSideAdInsertionConfiguration } from "./ads/ssai/ServerSideAdInsertionConfiguration"; -import type { AnalyticsDescription } from "./analytics/AnalyticsDescription"; +import type { ServerSideAdInsertionConfiguration } from './ads/ssai/ServerSideAdInsertionConfiguration'; +import type { AnalyticsDescription } from './analytics/AnalyticsDescription'; export type Source = TypedSource; @@ -39,6 +39,17 @@ export type Sources = Source | Source[]; */ export type CrossOriginSetting = '' | 'anonymous' | 'use-credentials'; +/** + * The integration identifier of a source specific to a pre-integration, represented by a value from the following list: + *
- `'theolive'`: The source contains the THEOlive initialization url. + * + * @category Source + * @public + */ +export enum SourceIntegrationId { + THEO_LIVE = 'theolive' +} + /** * Describes the configuration of a player's source. * @@ -235,7 +246,7 @@ export interface TextTrackDescription { * The localTime that matches the PTS value that is used to sync the track with the video. * * @internal - * @remarks + * @remarks *
- Available on iOS. *
- Format: "HH:mm:mm:SSS" *
- Default value is "00:00:00:000" @@ -249,6 +260,13 @@ export interface TextTrackDescription { * @public */ export interface BaseSource { + /** + * The integration ID of the source. + * + * @remarks + *
- This can be used to signal that a source is specific to an integration. + */ + integration?: SourceIntegrationId; /** * The cross-origin setting of the source. @@ -333,6 +351,15 @@ export interface TypedSource extends BaseSource { */ contentProtection?: DRMConfiguration; + /** + * The headers included in the request when retrieving the resource. + * + * @remarks + *
- Available on iOS and Android. + *
- Available since v7.9.0. + */ + headers?: { [key: string]: string }; + /** * The Server-side Ad Insertion parameters for the media resource. * diff --git a/src/api/source/ads/Ads.ts b/src/api/source/ads/Ads.ts index fdb9f3bff..8f4c92c64 100644 --- a/src/api/source/ads/Ads.ts +++ b/src/api/source/ads/Ads.ts @@ -92,6 +92,7 @@ export interface AdDescription { *
- `'google-ima'`: {@link https://developers.google.com/interactive-media-ads/docs/sdks/html5|Google IMA} pre-integrated ad playback. *
- `'spotx'`: {@link https://developer.spotxchange.com/|SpotX} pre-integrated ad playback. *
- `'freewheel'`: {@link https://vi.freewheel.tv/|FreeWheel} pre-integrated ad playback. + *
- `'theoads'`: [Experimental] - API under development, do not use without consulting THEO Technologies. * * @remarks *
- An empty string defaults to `'theo'`. @@ -103,4 +104,5 @@ export enum AdIntegrationKind { google_ima = 'google-ima', spotx = 'spotx', theo = 'theo', + theoads = 'theoads', } diff --git a/src/api/source/ads/TheoAdDescription.ts b/src/api/source/ads/TheoAdDescription.ts new file mode 100644 index 000000000..3bb5961bb --- /dev/null +++ b/src/api/source/ads/TheoAdDescription.ts @@ -0,0 +1,102 @@ +import { AdDescription, AdIntegrationKind } from './Ads'; + +/** + * Describes a THEOads ad break request. + * + * @remarks + *
- For THEOads, one configured ad break request enables server guided ad playback for the entire stream. + * + * @category Ads + */ +export interface TheoAdDescription extends AdDescription { + /** + * The integration of the ad break. + */ + integration: AdIntegrationKind.theoads; + + /** + * For SGAI, this should be configured with the signaling server base URI. + * + * If configured, the player will attempt to sideload the modified manifest from the signaling server separate from the source manifest. + * If not configured, the player will assume that the ad markers are part of the source manifest. + */ + sources?: string; + + /** + * Default network code to use for ad requests. + * + * @remarks + *
- This will be overridden by network codes parsed from THEOads ad markers. + *
- If no network code is configured, and it cannot be parsed from the THEOads ad marker, ads will not be loaded. + */ + networkCode?: string; + + /** + * Default custom asset key to use for ad requests. + * + * @remarks + *
- This will be overridden by custom asset keys parsed from THEOads ad markers. + *
- If no custom asset key is configured, and it cannot be parsed from the THEOads ad marker, ads will not be loaded. + */ + customAssetKey?: string; + + /** + * Default backdrop image URI to be used as a background for ads in double box layout. + * + * @remarks + *
- This will be overridden by backdrop image URIs parsed from THEOads ad markers or returned in the ad response. + *
- If no URI is configured, and no backdrop companion is parsed from the marker or returned in the ad response, a black screen will be shown as background. + */ + backdropDoubleBox?: string; + + /** + * Default backdrop image URI to be used as a background for ads in L-shape layout. + * + * @remarks + *
- This will be overridden by backdrop image URIs parsed from THEOads ad markers or returned in the ad response. + *
- If no URI is configured, and no backdrop companion is parsed from the marker or returned in the ad response, a black screen will be shown as background. + */ + backdropLShape?: string; + + /** + * Override the layout of all THEOads ad breaks, if set. + */ + overrideLayout?: TheoAdsLayoutOverride; + + /** + * The ad tag parameters added to stream request. + * + * @remarks + *
- Each entry contains the parameter name with associated value. + *
- Values added must be strings. + */ + adTagParameters?: Record; + + /** + * Whether to use the Id3 based operating mode. + * + * @defaultValue `false` + * + * @remarks + *
- Only applicable for specific use-cases. + *
- Contact THEO Technologies for more information. + */ + useId3?: boolean; +} + +/** + * Describes how and when the layout of a THEOads ad break should be overridden: + * - `'single'`: Override to play all ad breaks using the "single" layout mode. + * - `'l-shape'`: Override to play all ad breaks using the "l-shape" layout mode. + * - `'double'`: Override to play all ad breaks using the "double" layout mode. + * - `'single-if-mobile'`: When on a mobile device, override to play all ad breaks using the "single" layout mode. + * + * @category Ads + * @internal + */ +export enum TheoAdsLayoutOverride { + SINGLE = 'single', + LSHAPE = 'l-shape', + DOUBLE = 'double', + SINGLE_IF_MOBILE = 'single-if-mobile' +} diff --git a/src/api/source/ads/barrel.ts b/src/api/source/ads/barrel.ts index 72b734489..a9ef62366 100644 --- a/src/api/source/ads/barrel.ts +++ b/src/api/source/ads/barrel.ts @@ -1,4 +1,5 @@ export * from './Ads'; export * from './IMAAdDescription'; export * from './THEOplayerAdDescription'; +export * from './TheoAdDescription'; export * from './ssai/barrel'; diff --git a/src/api/theolive/TheoLiveSource.ts b/src/api/theolive/TheoLiveSource.ts new file mode 100644 index 000000000..89673ac3c --- /dev/null +++ b/src/api/theolive/TheoLiveSource.ts @@ -0,0 +1,11 @@ +import { SourceIntegrationId, TypedSource } from 'react-native-theoplayer'; + +/** + * Represents a source for the THEOlive integration. + * + * @category Source + * @public + */ +export interface TheoLiveSource extends TypedSource { + integration: SourceIntegrationId.THEO_LIVE; +} diff --git a/src/api/theolive/barrel.ts b/src/api/theolive/barrel.ts new file mode 100644 index 000000000..70b9dcf94 --- /dev/null +++ b/src/api/theolive/barrel.ts @@ -0,0 +1 @@ +export * from './TheoLiveSource';