From dfac7a6ed3ef1625fef7de88ea6416510ea5a4a7 Mon Sep 17 00:00:00 2001 From: Olivier Bouillet <62574056+freeboub@users.noreply.github.com> Date: Mon, 13 Nov 2023 21:36:16 +0100 Subject: [PATCH] Fix(ios): restore caching feature (#3341) * chore: fix build issue * fix: try to fix save typings * chore: fix podspec * fix: update integration guide for ios Caching * fix: update sample to test the save function --------- Co-authored-by: olivier --- docs/pages/installation.md | 20 ++- examples/basic/ios/Podfile | 4 +- examples/basic/ios/Podfile.lock | 158 ++++-------------- .../ios/videoplayer.xcodeproj/project.pbxproj | 122 ++++++++------ examples/basic/package.json | 6 +- examples/basic/src/VideoPlayer.tsx | 16 ++ examples/basic/yarn.lock | 27 +-- ios/VideoCaching/RCTVideoCache.m | 6 +- react-native-video.podspec | 19 +-- src/Video.tsx | 6 +- src/VideoNativeComponent.ts | 2 +- 11 files changed, 149 insertions(+), 237 deletions(-) diff --git a/docs/pages/installation.md b/docs/pages/installation.md index cc9194a4..4638b33e 100644 --- a/docs/pages/installation.md +++ b/docs/pages/installation.md @@ -37,7 +37,7 @@ Add `use_frameworks! :linkage => :static` just under `platform :ios` in your ios [See the example ios project for reference](examples/basic/ios/Podfile#L5) -### Using CocoaPods (required to enable caching) +### Using CocoaPods Setup your Podfile like it is described in the [react-native documentation](https://facebook.github.io/react-native/docs/integration-with-existing-apps#configuring-cocoapods-dependencies). @@ -50,16 +50,18 @@ Video only: + `pod 'react-native-video', :path => '../node_modules/react-native-video/react-native-video.podspec'` end ``` - -Video with caching ([more info](other/caching.md)): - -```diff - pod 'Folly', :podspec => '../node_modules/react-native/third-party-podspecs/Folly.podspec' -+ `pod 'react-native-video/VideoCaching', :path => '../node_modules/react-native-video/react-native-video.podspec'` - end -``` ### Enable custom feature in podfile file +### Video caching + +To enable Video caching usage, add following line in your podfile: +([more info here](other/caching.md)) + +```podfile +# enable Video caching ++ $RNVideoUseVideoCaching=true +``` + #### Google IMA Google IMA is the google SDK to support Client Side Ads Integration (CSAI), see [google documentation](https://developers.google.com/interactive-media-ads/docs/sdks/ios/client-side) for more information. diff --git a/examples/basic/ios/Podfile b/examples/basic/ios/Podfile index c5b62e5b..d8213efe 100644 --- a/examples/basic/ios/Podfile +++ b/examples/basic/ios/Podfile @@ -28,7 +28,9 @@ end target 'videoplayer' do config = use_native_modules! + use_frameworks! :linkage => :static # $RNVideoUseGoogleIMA = true + $RNVideoUseVideoCaching = true # Flags change depending on the env values. flags = get_default_flags() @@ -42,7 +44,7 @@ target 'videoplayer' do # # Note that if you have use_frameworks! enabled, Flipper will not work and # you should disable the next line. - :flipper_configuration => flipper_config, + # :flipper_configuration => flipper_config, # An absolute path to your application root. :app_path => "#{Pod::Config.instance.installation_root}/.." ) diff --git a/examples/basic/ios/Podfile.lock b/examples/basic/ios/Podfile.lock index 89b3029e..91bd66ee 100644 --- a/examples/basic/ios/Podfile.lock +++ b/examples/basic/ios/Podfile.lock @@ -1,7 +1,7 @@ PODS: - boost (1.76.0) - - CocoaAsyncSocket (7.6.5) - DoubleConversion (1.1.6) + - DVAssetLoaderDelegate (0.3.3) - FBLazyVector (0.72.5) - FBReactNativeSpec (0.72.5): - RCT-Folly (= 2021.07.22.00) @@ -10,71 +10,12 @@ PODS: - React-Core (= 0.72.5) - React-jsi (= 0.72.5) - ReactCommon/turbomodule/core (= 0.72.5) - - Flipper (0.182.0): - - Flipper-Folly (~> 2.6) - - Flipper-Boost-iOSX (1.76.0.1.11) - - Flipper-DoubleConversion (3.2.0.1) - - Flipper-Fmt (7.1.7) - - Flipper-Folly (2.6.10): - - Flipper-Boost-iOSX - - Flipper-DoubleConversion - - Flipper-Fmt (= 7.1.7) - - Flipper-Glog - - libevent (~> 2.1.12) - - OpenSSL-Universal (= 1.1.1100) - - Flipper-Glog (0.5.0.5) - - Flipper-PeerTalk (0.0.4) - - FlipperKit (0.182.0): - - FlipperKit/Core (= 0.182.0) - - FlipperKit/Core (0.182.0): - - Flipper (~> 0.182.0) - - FlipperKit/CppBridge - - FlipperKit/FBCxxFollyDynamicConvert - - FlipperKit/FBDefines - - FlipperKit/FKPortForwarding - - SocketRocket (~> 0.6.0) - - FlipperKit/CppBridge (0.182.0): - - Flipper (~> 0.182.0) - - FlipperKit/FBCxxFollyDynamicConvert (0.182.0): - - Flipper-Folly (~> 2.6) - - FlipperKit/FBDefines (0.182.0) - - FlipperKit/FKPortForwarding (0.182.0): - - CocoaAsyncSocket (~> 7.6) - - Flipper-PeerTalk (~> 0.0.4) - - FlipperKit/FlipperKitHighlightOverlay (0.182.0) - - FlipperKit/FlipperKitLayoutHelpers (0.182.0): - - FlipperKit/Core - - FlipperKit/FlipperKitHighlightOverlay - - FlipperKit/FlipperKitLayoutTextSearchable - - FlipperKit/FlipperKitLayoutIOSDescriptors (0.182.0): - - FlipperKit/Core - - FlipperKit/FlipperKitHighlightOverlay - - FlipperKit/FlipperKitLayoutHelpers - - YogaKit (~> 1.18) - - FlipperKit/FlipperKitLayoutPlugin (0.182.0): - - FlipperKit/Core - - FlipperKit/FlipperKitHighlightOverlay - - FlipperKit/FlipperKitLayoutHelpers - - FlipperKit/FlipperKitLayoutIOSDescriptors - - FlipperKit/FlipperKitLayoutTextSearchable - - YogaKit (~> 1.18) - - FlipperKit/FlipperKitLayoutTextSearchable (0.182.0) - - FlipperKit/FlipperKitNetworkPlugin (0.182.0): - - FlipperKit/Core - - FlipperKit/FlipperKitReactPlugin (0.182.0): - - FlipperKit/Core - - FlipperKit/FlipperKitUserDefaultsPlugin (0.182.0): - - FlipperKit/Core - - FlipperKit/SKIOSNetworkPlugin (0.182.0): - - FlipperKit/Core - - FlipperKit/FlipperKitNetworkPlugin - fmt (6.2.1) - glog (0.3.5) - hermes-engine (0.72.5): - hermes-engine/Pre-built (= 0.72.5) - hermes-engine/Pre-built (0.72.5) - libevent (2.1.12) - - OpenSSL-Universal (1.1.1100) - PromisesObjC (2.2.0) - PromisesSwift (2.2.0): - PromisesObjC (= 2.2.0) @@ -378,12 +319,14 @@ PODS: - React-jsinspector (0.72.5) - React-logger (0.72.5): - glog - - react-native-video (6.0.0-alpha.8): + - react-native-video (6.0.0-alpha.9): - React-Core - - react-native-video/Video (= 6.0.0-alpha.8) - - react-native-video/Video (6.0.0-alpha.8): + - react-native-video/Video (= 6.0.0-alpha.9) + - react-native-video/Video (6.0.0-alpha.9): + - DVAssetLoaderDelegate (~> 0.3.1) - PromisesSwift - React-Core + - SPTPersistentCache (~> 1.1.0) - React-NativeModulesApple (0.72.5): - hermes-engine - React-callinvoker @@ -497,39 +440,17 @@ PODS: - RNCPicker (1.16.8): - React-Core - SocketRocket (0.6.1) + - SPTPersistentCache (1.1.0) - Yoga (1.14.0) - - YogaKit (1.18.1): - - Yoga (~> 1.14) DEPENDENCIES: - boost (from `../node_modules/react-native/third-party-podspecs/boost.podspec`) - DoubleConversion (from `../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec`) - FBLazyVector (from `../node_modules/react-native/Libraries/FBLazyVector`) - FBReactNativeSpec (from `../node_modules/react-native/React/FBReactNativeSpec`) - - Flipper (= 0.182.0) - - Flipper-Boost-iOSX (= 1.76.0.1.11) - - Flipper-DoubleConversion (= 3.2.0.1) - - Flipper-Fmt (= 7.1.7) - - Flipper-Folly (= 2.6.10) - - Flipper-Glog (= 0.5.0.5) - - Flipper-PeerTalk (= 0.0.4) - - FlipperKit (= 0.182.0) - - FlipperKit/Core (= 0.182.0) - - FlipperKit/CppBridge (= 0.182.0) - - FlipperKit/FBCxxFollyDynamicConvert (= 0.182.0) - - FlipperKit/FBDefines (= 0.182.0) - - FlipperKit/FKPortForwarding (= 0.182.0) - - FlipperKit/FlipperKitHighlightOverlay (= 0.182.0) - - FlipperKit/FlipperKitLayoutPlugin (= 0.182.0) - - FlipperKit/FlipperKitLayoutTextSearchable (= 0.182.0) - - FlipperKit/FlipperKitNetworkPlugin (= 0.182.0) - - FlipperKit/FlipperKitReactPlugin (= 0.182.0) - - FlipperKit/FlipperKitUserDefaultsPlugin (= 0.182.0) - - FlipperKit/SKIOSNetworkPlugin (= 0.182.0) - glog (from `../node_modules/react-native/third-party-podspecs/glog.podspec`) - hermes-engine (from `../node_modules/react-native/sdks/hermes-engine/hermes-engine.podspec`) - libevent (~> 2.1.12) - - OpenSSL-Universal (= 1.1.1100) - RCT-Folly (from `../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec`) - RCTRequired (from `../node_modules/react-native/Libraries/RCTRequired`) - RCTTypeSafety (from `../node_modules/react-native/Libraries/TypeSafety`) @@ -537,7 +458,6 @@ DEPENDENCIES: - React-callinvoker (from `../node_modules/react-native/ReactCommon/callinvoker`) - React-Codegen (from `build/generated/ios`) - React-Core (from `../node_modules/react-native/`) - - React-Core/DevSupport (from `../node_modules/react-native/`) - React-Core/RCTWebSocket (from `../node_modules/react-native/`) - React-CoreModules (from `../node_modules/react-native/React/CoreModules`) - React-cxxreact (from `../node_modules/react-native/ReactCommon/cxxreact`) @@ -570,22 +490,13 @@ DEPENDENCIES: SPEC REPOS: trunk: - - CocoaAsyncSocket - - Flipper - - Flipper-Boost-iOSX - - Flipper-DoubleConversion - - Flipper-Fmt - - Flipper-Folly - - Flipper-Glog - - Flipper-PeerTalk - - FlipperKit + - DVAssetLoaderDelegate - fmt - libevent - - OpenSSL-Universal - PromisesObjC - PromisesSwift - SocketRocket - - YogaKit + - SPTPersistentCache EXTERNAL SOURCES: boost: @@ -674,23 +585,14 @@ EXTERNAL SOURCES: SPEC CHECKSUMS: boost: 57d2868c099736d80fcd648bf211b4431e51a558 - CocoaAsyncSocket: 065fd1e645c7abab64f7a6a2007a48038fdc6a99 DoubleConversion: 5189b271737e1565bdce30deb4a08d647e3f5f54 + DVAssetLoaderDelegate: 0caec20e4e08b8560b691131539e9180024d4bce FBLazyVector: 71803c074f6325f10b5ec891c443b6bbabef0ca7 FBReactNativeSpec: 448e08a759d29a96e15725ae532445bf4343567c - Flipper: 6edb735e6c3e332975d1b17956bcc584eccf5818 - Flipper-Boost-iOSX: fd1e2b8cbef7e662a122412d7ac5f5bea715403c - Flipper-DoubleConversion: 2dc99b02f658daf147069aad9dbd29d8feb06d30 - Flipper-Fmt: 60cbdd92fc254826e61d669a5d87ef7015396a9b - Flipper-Folly: 584845625005ff068a6ebf41f857f468decd26b3 - Flipper-Glog: 70c50ce58ddaf67dc35180db05f191692570f446 - Flipper-PeerTalk: 116d8f857dc6ef55c7a5a75ea3ceaafe878aadc9 - FlipperKit: 2efad7007d6745a3f95e4034d547be637f89d3f6 fmt: ff9d55029c625d3757ed641535fd4a75fedc7ce9 glog: 04b94705f318337d7ead9e6d17c019bd9b1f6b1b hermes-engine: f6cf92a471053245614d9d8097736f6337d5b86c libevent: 4049cae6c81cdb3654a443be001fb9bdceff7913 - OpenSSL-Universal: ebc357f1e6bc71fa463ccb2fe676756aff50e88c PromisesObjC: 09985d6d70fbe7878040aa746d78236e6946d2ef PromisesSwift: cf9eb58666a43bbe007302226e510b16c1e10959 RCT-Folly: 424b8c9a7a0b9ab2886ffe9c3b041ef628fd4fb1 @@ -698,39 +600,39 @@ SPEC CHECKSUMS: RCTTypeSafety: 4636e4a36c7c2df332bda6d59b19b41c443d4287 React: e0cc5197a804031a6c53fb38483c3485fcb9d6f3 React-callinvoker: 1a635856fe0c3d8b13fccd4ed7e76283b99b0868 - React-Codegen: 78d61f981cccc68a771a598f71621cb7db14b04c - React-Core: 252f8e9ca5a4e91af9b9be58670846d662b1c49f - React-CoreModules: f8b9e91fac7bd5d18729ce961a4978c70b5031cc + React-Codegen: 8169df63a7d5731337aad8f3c911a349a55932d3 + React-Core: cb6fb2637b5828a0944d4afc1c8678ffff570dcc + React-CoreModules: c39f9ef5cf812b2b266c63364a8969b29d30ba2a React-cxxreact: 70284b32dcd367439d7dae84d9f72660544181b5 - React-debug: ee33d7ba43766d9b10b32561527b57ccfbcb6bd1 + React-debug: 93d183299eb4bd7b0bf8cb6e376f608e2a95b64f React-hermes: 91f97ea2669dc5847e1f26c243aaad913319c570 React-jsi: bd68b7779746014f01ea72d1b738809e132d7f1e React-jsiexecutor: ff70a72027dea5cc7d71cfcc6fad7f599f63987a React-jsinspector: aef73cbd43b70675f572214d10fa438c89bf11ba React-logger: 2e4aee3e11b3ec4fa6cfd8004610bbb3b8d6cca4 - react-native-video: 86950ad481cec184d7c9420ec3bca0c27904bbcd - React-NativeModulesApple: 797bc6078d566eef3fb3f74127e6e1d2e945a15f + react-native-video: dccff18cfd50cb55ef1ae38ef356bb0f1b0ee5f1 + React-NativeModulesApple: 54adc761c7a6fa5f183ca62ad0cb94f4f1cdce4a React-perflogger: cd8886513f68e1c135a1e79d20575c6489641597 React-RCTActionSheet: 726d2615ca62a77ce3e2c13d87f65379cdc73498 - React-RCTAnimation: 8f2716b881c37c64858e4ecee0f58bfa57ff9afd - React-RCTAppDelegate: d4a213f29e81682f6b9c7d22f62a2ccab6d125ae - React-RCTBlob: dfaa933231c3497915bbcc9d98fcff7b6b60582c - React-RCTImage: 747e3d7b656a67470f9c234baedb8d41bbc4e745 - React-RCTLinking: 148332b5b0396b280b05534f7d168e560a3bbd5f - React-RCTNetwork: 1d818121a8e678f064de663a6db7aaefc099e53c - React-RCTSettings: 4b95d26ebc88bfd3b6535b2d7904914ff88dbfc2 + React-RCTAnimation: 0dcffbaab5acd05334d1d3b157f9275291e3a15b + React-RCTAppDelegate: 48df00f9da9e3019fa0759d1ca900e9f586ef1b1 + React-RCTBlob: 5ccfb7a8353fad6edaf9a2456e184ceca8c77150 + React-RCTImage: a80cc7170c7cd07b7b109353c605930b24d14bcf + React-RCTLinking: fb1add50b83dc4f3d39526d4ff5127f171cdad86 + React-RCTNetwork: 6acdb13f8df6cff487f87ac799a3839ce1d45dac + React-RCTSettings: 0b8b7c2ebb78c540f7b0c0bbe46ab5481023f8a8 React-RCTText: ce4499e4f2d8f85dc4b93ff0559313a016c4f3e2 - React-RCTVibration: 45372e61b35e96d16893540958d156675afbeb63 - React-rncore: a79d1cb3d6c01b358a8aa0b31ccc04ab5f0dbebc + React-RCTVibration: abb9c73984f4f0052cf50efe0ae6d6f877a74843 + React-rncore: 3775c85216adc845837e5420c823a689aeaae630 React-runtimeexecutor: 7e31e2bc6d0ecc83d4ba05eadc98401007abc10c - React-runtimescheduler: cc32add98c45c5df18436a6a52a7e1f6edec102c - React-utils: 7a9918a1ffdd39aba67835d42386f592ea3f8e76 - ReactCommon: 91ece8350ebb3dd2be9cef662abd78b6948233c0 + React-runtimescheduler: f248b96bdf61c5e078d3fa689adce6894c900659 + React-utils: 40cdd9acee23230df5b78bf78a64ce8a2084c2d0 + ReactCommon: 4ec7cc40d091eed0a510755619940b6a03cb507b RNCPicker: 0991c56da7815c0cf946d6f63cf920b25296e5f6 SocketRocket: f32cd54efbe0f095c4d7594881e52619cfe80b17 + SPTPersistentCache: df36ea46762d7cf026502bbb86a8b79d0080dff4 Yoga: 86fed2e4d425ee4c6eab3813ba1791101ee153c6 - YogaKit: f782866e155069a2cca2517aafea43200b01fd5a -PODFILE CHECKSUM: 6899e375fcfa0d3a42aa6cb55266008b8f7419cb +PODFILE CHECKSUM: b4ad0158c6631f45dd67f49e7179d58716f9009b COCOAPODS: 1.12.1 diff --git a/examples/basic/ios/videoplayer.xcodeproj/project.pbxproj b/examples/basic/ios/videoplayer.xcodeproj/project.pbxproj index d33eb0db..d73b8c49 100644 --- a/examples/basic/ios/videoplayer.xcodeproj/project.pbxproj +++ b/examples/basic/ios/videoplayer.xcodeproj/project.pbxproj @@ -8,12 +8,12 @@ /* Begin PBXBuildFile section */ 00E356F31AD99517003FC87E /* videoplayerTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E356F21AD99517003FC87E /* videoplayerTests.m */; }; - 0C80B921A6F3F58F76C31292 /* libPods-videoplayer.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5DCACB8F33CDC322A6C60F78 /* libPods-videoplayer.a */; }; 13B07FBC1A68108700A75B9A /* AppDelegate.mm in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.mm */; }; 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; }; 13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; }; - 7699B88040F8A987B510C191 /* libPods-videoplayer-videoplayerTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 19F6CBCC0A4E27FBF8BF4A61 /* libPods-videoplayer-videoplayerTests.a */; }; 81AB9BB82411601600AC10FF /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */; }; + C15A4F7B64E9CD24D5B10736 /* Pods_videoplayer_videoplayerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 670C02ACE9A69C6F10242143 /* Pods_videoplayer_videoplayerTests.framework */; }; + C8C234DE3A403BEC64ED48E8 /* Pods_videoplayer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4531F6446986B3172CDD4B12 /* Pods_videoplayer.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -36,14 +36,14 @@ 13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = videoplayer/Images.xcassets; sourceTree = ""; }; 13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = videoplayer/Info.plist; sourceTree = ""; }; 13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = videoplayer/main.m; sourceTree = ""; }; - 19F6CBCC0A4E27FBF8BF4A61 /* libPods-videoplayer-videoplayerTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-videoplayer-videoplayerTests.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - 3B4392A12AC88292D35C810B /* Pods-videoplayer.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-videoplayer.debug.xcconfig"; path = "Target Support Files/Pods-videoplayer/Pods-videoplayer.debug.xcconfig"; sourceTree = ""; }; - 5709B34CF0A7D63546082F79 /* Pods-videoplayer.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-videoplayer.release.xcconfig"; path = "Target Support Files/Pods-videoplayer/Pods-videoplayer.release.xcconfig"; sourceTree = ""; }; - 5B7EB9410499542E8C5724F5 /* Pods-videoplayer-videoplayerTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-videoplayer-videoplayerTests.debug.xcconfig"; path = "Target Support Files/Pods-videoplayer-videoplayerTests/Pods-videoplayer-videoplayerTests.debug.xcconfig"; sourceTree = ""; }; - 5DCACB8F33CDC322A6C60F78 /* libPods-videoplayer.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-videoplayer.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + 4531F6446986B3172CDD4B12 /* Pods_videoplayer.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_videoplayer.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 629F50F90229D57E81E2E955 /* Pods-videoplayer-videoplayerTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-videoplayer-videoplayerTests.release.xcconfig"; path = "Target Support Files/Pods-videoplayer-videoplayerTests/Pods-videoplayer-videoplayerTests.release.xcconfig"; sourceTree = ""; }; + 670C02ACE9A69C6F10242143 /* Pods_videoplayer_videoplayerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_videoplayer_videoplayerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 791F8A1DC27114B0A0E20C32 /* Pods-videoplayer.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-videoplayer.debug.xcconfig"; path = "Target Support Files/Pods-videoplayer/Pods-videoplayer.debug.xcconfig"; sourceTree = ""; }; 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = LaunchScreen.storyboard; path = videoplayer/LaunchScreen.storyboard; sourceTree = ""; }; - 89C6BE57DB24E9ADA2F236DE /* Pods-videoplayer-videoplayerTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-videoplayer-videoplayerTests.release.xcconfig"; path = "Target Support Files/Pods-videoplayer-videoplayerTests/Pods-videoplayer-videoplayerTests.release.xcconfig"; sourceTree = ""; }; + A50377CE4C634F8448FD98E9 /* Pods-videoplayer-videoplayerTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-videoplayer-videoplayerTests.debug.xcconfig"; path = "Target Support Files/Pods-videoplayer-videoplayerTests/Pods-videoplayer-videoplayerTests.debug.xcconfig"; sourceTree = ""; }; ED297162215061F000B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; }; + F375F6630DAB98824A2C1319 /* Pods-videoplayer.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-videoplayer.release.xcconfig"; path = "Target Support Files/Pods-videoplayer/Pods-videoplayer.release.xcconfig"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -51,7 +51,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 7699B88040F8A987B510C191 /* libPods-videoplayer-videoplayerTests.a in Frameworks */, + C15A4F7B64E9CD24D5B10736 /* Pods_videoplayer_videoplayerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -59,7 +59,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 0C80B921A6F3F58F76C31292 /* libPods-videoplayer.a in Frameworks */, + C8C234DE3A403BEC64ED48E8 /* Pods_videoplayer.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -100,8 +100,8 @@ isa = PBXGroup; children = ( ED297162215061F000B7C4FE /* JavaScriptCore.framework */, - 5DCACB8F33CDC322A6C60F78 /* libPods-videoplayer.a */, - 19F6CBCC0A4E27FBF8BF4A61 /* libPods-videoplayer-videoplayerTests.a */, + 4531F6446986B3172CDD4B12 /* Pods_videoplayer.framework */, + 670C02ACE9A69C6F10242143 /* Pods_videoplayer_videoplayerTests.framework */, ); name = Frameworks; sourceTree = ""; @@ -140,10 +140,10 @@ BBD78D7AC51CEA395F1C20DB /* Pods */ = { isa = PBXGroup; children = ( - 3B4392A12AC88292D35C810B /* Pods-videoplayer.debug.xcconfig */, - 5709B34CF0A7D63546082F79 /* Pods-videoplayer.release.xcconfig */, - 5B7EB9410499542E8C5724F5 /* Pods-videoplayer-videoplayerTests.debug.xcconfig */, - 89C6BE57DB24E9ADA2F236DE /* Pods-videoplayer-videoplayerTests.release.xcconfig */, + 791F8A1DC27114B0A0E20C32 /* Pods-videoplayer.debug.xcconfig */, + F375F6630DAB98824A2C1319 /* Pods-videoplayer.release.xcconfig */, + A50377CE4C634F8448FD98E9 /* Pods-videoplayer-videoplayerTests.debug.xcconfig */, + 629F50F90229D57E81E2E955 /* Pods-videoplayer-videoplayerTests.release.xcconfig */, ); path = Pods; sourceTree = ""; @@ -155,12 +155,12 @@ isa = PBXNativeTarget; buildConfigurationList = 00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget "videoplayerTests" */; buildPhases = ( - A55EABD7B0C7F3A422A6CC61 /* [CP] Check Pods Manifest.lock */, + 40EEB335EC737D150F0E284A /* [CP] Check Pods Manifest.lock */, 00E356EA1AD99517003FC87E /* Sources */, 00E356EB1AD99517003FC87E /* Frameworks */, 00E356EC1AD99517003FC87E /* Resources */, - C59DA0FBD6956966B86A3779 /* [CP] Embed Pods Frameworks */, - F6A41C54EA430FDDC6A6ED99 /* [CP] Copy Pods Resources */, + DECFB8EA7A8B6EBF1BFF6108 /* [CP] Embed Pods Frameworks */, + 5CCC99BAE0E10D5B9274A27A /* [CP] Copy Pods Resources */, ); buildRules = ( ); @@ -176,14 +176,14 @@ isa = PBXNativeTarget; buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "videoplayer" */; buildPhases = ( - C38B50BA6285516D6DCD4F65 /* [CP] Check Pods Manifest.lock */, + 70B0A2A74C33A2D11C1BDC65 /* [CP] Check Pods Manifest.lock */, FD10A7F022414F080027D42C /* Start Packager */, 13B07F871A680F5B00A75B9A /* Sources */, 13B07F8C1A680F5B00A75B9A /* Frameworks */, 13B07F8E1A680F5B00A75B9A /* Resources */, 00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */, - 00EEFC60759A1932668264C0 /* [CP] Embed Pods Frameworks */, - E235C05ADACE081382539298 /* [CP] Copy Pods Resources */, + 1DC6170199CB8D531E9B12F9 /* [CP] Embed Pods Frameworks */, + BE7AC7E22FCA3E0ACEB52BA6 /* [CP] Copy Pods Resources */, ); buildRules = ( ); @@ -266,7 +266,7 @@ shellPath = /bin/sh; 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"; }; - 00EEFC60759A1932668264C0 /* [CP] Embed Pods Frameworks */ = { + 1DC6170199CB8D531E9B12F9 /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -283,7 +283,7 @@ shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-videoplayer/Pods-videoplayer-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; - A55EABD7B0C7F3A422A6CC61 /* [CP] Check Pods Manifest.lock */ = { + 40EEB335EC737D150F0E284A /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -305,7 +305,24 @@ 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; }; - C38B50BA6285516D6DCD4F65 /* [CP] Check Pods Manifest.lock */ = { + 5CCC99BAE0E10D5B9274A27A /* [CP] Copy Pods Resources */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-videoplayer-videoplayerTests/Pods-videoplayer-videoplayerTests-resources-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Copy Pods Resources"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-videoplayer-videoplayerTests/Pods-videoplayer-videoplayerTests-resources-${CONFIGURATION}-output-files.xcfilelist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-videoplayer-videoplayerTests/Pods-videoplayer-videoplayerTests-resources.sh\"\n"; + showEnvVarsInLog = 0; + }; + 70B0A2A74C33A2D11C1BDC65 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -327,24 +344,7 @@ 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; }; - C59DA0FBD6956966B86A3779 /* [CP] Embed Pods Frameworks */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-videoplayer-videoplayerTests/Pods-videoplayer-videoplayerTests-frameworks-${CONFIGURATION}-input-files.xcfilelist", - ); - name = "[CP] Embed Pods Frameworks"; - outputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-videoplayer-videoplayerTests/Pods-videoplayer-videoplayerTests-frameworks-${CONFIGURATION}-output-files.xcfilelist", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-videoplayer-videoplayerTests/Pods-videoplayer-videoplayerTests-frameworks.sh\"\n"; - showEnvVarsInLog = 0; - }; - E235C05ADACE081382539298 /* [CP] Copy Pods Resources */ = { + BE7AC7E22FCA3E0ACEB52BA6 /* [CP] Copy Pods Resources */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -361,21 +361,21 @@ shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-videoplayer/Pods-videoplayer-resources.sh\"\n"; showEnvVarsInLog = 0; }; - F6A41C54EA430FDDC6A6ED99 /* [CP] Copy Pods Resources */ = { + DECFB8EA7A8B6EBF1BFF6108 /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-videoplayer-videoplayerTests/Pods-videoplayer-videoplayerTests-resources-${CONFIGURATION}-input-files.xcfilelist", + "${PODS_ROOT}/Target Support Files/Pods-videoplayer-videoplayerTests/Pods-videoplayer-videoplayerTests-frameworks-${CONFIGURATION}-input-files.xcfilelist", ); - name = "[CP] Copy Pods Resources"; + name = "[CP] Embed Pods Frameworks"; outputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-videoplayer-videoplayerTests/Pods-videoplayer-videoplayerTests-resources-${CONFIGURATION}-output-files.xcfilelist", + "${PODS_ROOT}/Target Support Files/Pods-videoplayer-videoplayerTests/Pods-videoplayer-videoplayerTests-frameworks-${CONFIGURATION}-output-files.xcfilelist", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-videoplayer-videoplayerTests/Pods-videoplayer-videoplayerTests-resources.sh\"\n"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-videoplayer-videoplayerTests/Pods-videoplayer-videoplayerTests-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; FD10A7F022414F080027D42C /* Start Packager */ = { @@ -430,7 +430,7 @@ /* Begin XCBuildConfiguration section */ 00E356F61AD99517003FC87E /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 5B7EB9410499542E8C5724F5 /* Pods-videoplayer-videoplayerTests.debug.xcconfig */; + baseConfigurationReference = A50377CE4C634F8448FD98E9 /* Pods-videoplayer-videoplayerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; GCC_PREPROCESSOR_DEFINITIONS = ( @@ -457,7 +457,7 @@ }; 00E356F71AD99517003FC87E /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 89C6BE57DB24E9ADA2F236DE /* Pods-videoplayer-videoplayerTests.release.xcconfig */; + baseConfigurationReference = 629F50F90229D57E81E2E955 /* Pods-videoplayer-videoplayerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; COPY_PHASE_STRIP = NO; @@ -481,7 +481,7 @@ }; 13B07F941A680F5B00A75B9A /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 3B4392A12AC88292D35C810B /* Pods-videoplayer.debug.xcconfig */; + baseConfigurationReference = 791F8A1DC27114B0A0E20C32 /* Pods-videoplayer.debug.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; @@ -508,7 +508,7 @@ }; 13B07F951A680F5B00A75B9A /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 5709B34CF0A7D63546082F79 /* Pods-videoplayer.release.xcconfig */; + baseConfigurationReference = F375F6630DAB98824A2C1319 /* Pods-videoplayer.release.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; @@ -581,6 +581,14 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + "${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon-Samples/ReactCommon_Samples.framework/Headers", + "${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon/ReactCommon.framework/Headers/react/nativemodule/core", + "${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon-Samples/ReactCommon_Samples.framework/Headers/platform/ios", + "${PODS_CONFIGURATION_BUILD_DIR}/React-NativeModulesApple/React_NativeModulesApple.framework/Headers", + "${PODS_CONFIGURATION_BUILD_DIR}/React-graphics/React_graphics.framework/Headers/react/renderer/graphics/platform/ios", + ); IPHONEOS_DEPLOYMENT_TARGET = 12.4; LD_RUNPATH_SEARCH_PATHS = ( /usr/lib/swift, @@ -603,6 +611,7 @@ OTHER_LDFLAGS = ( "$(inherited)", " ", + "-Wl -ld_classic ", ); REACT_NATIVE_PATH = "${PODS_ROOT}/../../node_modules/react-native"; SDKROOT = iphoneos; @@ -655,6 +664,14 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + "${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon-Samples/ReactCommon_Samples.framework/Headers", + "${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon/ReactCommon.framework/Headers/react/nativemodule/core", + "${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon-Samples/ReactCommon_Samples.framework/Headers/platform/ios", + "${PODS_CONFIGURATION_BUILD_DIR}/React-NativeModulesApple/React_NativeModulesApple.framework/Headers", + "${PODS_CONFIGURATION_BUILD_DIR}/React-graphics/React_graphics.framework/Headers/react/renderer/graphics/platform/ios", + ); IPHONEOS_DEPLOYMENT_TARGET = 12.4; LD_RUNPATH_SEARCH_PATHS = ( /usr/lib/swift, @@ -676,6 +693,7 @@ OTHER_LDFLAGS = ( "$(inherited)", " ", + "-Wl -ld_classic ", ); REACT_NATIVE_PATH = "${PODS_ROOT}/../../node_modules/react-native"; SDKROOT = iphoneos; diff --git a/examples/basic/package.json b/examples/basic/package.json index 11a0dacc..b1070b88 100644 --- a/examples/basic/package.json +++ b/examples/basic/package.json @@ -14,7 +14,7 @@ "@react-native-picker/picker": "^1.9.11", "react": "18.2.0", "react-native": "0.72.5", - "react-native-video": "../..", + "react-native-video": "../../", "react-native-windows": "0.63.41" }, "devDependencies": { @@ -25,14 +25,14 @@ "@react-native/metro-config": "^0.72.11", "@tsconfig/react-native": "^3.0.0", "@types/react": "^18.0.24", - "@types/react-test-renderer": "^18.0.0", "@types/react-native-video": "^5.0.15", + "@types/react-test-renderer": "^18.0.0", "babel-jest": "^29.2.1", "babel-plugin-module-resolver": "^4.1.0", "eslint": "^8.19.0", - "prettier": "^2.4.1", "jest": "^29.2.1", "metro-react-native-babel-preset": "0.76.8", + "prettier": "^2.4.1", "react-test-renderer": "18.2.0", "typescript": "4.8.4" }, diff --git a/examples/basic/src/VideoPlayer.tsx b/examples/basic/src/VideoPlayer.tsx index 84719359..d159d606 100644 --- a/examples/basic/src/VideoPlayer.tsx +++ b/examples/basic/src/VideoPlayer.tsx @@ -84,6 +84,10 @@ class VideoPlayer extends Component { description: 'Another live sample', uri: 'https://live.forstreet.cl/live/livestream.m3u8', }, + { + description: 'another bunny (can be saved)', + uri: 'https://rawgit.com/mediaelement/mediaelement-files/master/big_buck_bunny.mp4' + } ]; srcIosList = [ @@ -590,6 +594,18 @@ class VideoPlayer extends Component { onPress={this.onResizeModeSelected} selected={this.state.resizeMode} /> + { + this.video?.save({}).then((response) => { + console.log('Downloaded URI', response); + }).catch((error) => { + console.log('error during save ', error) + }); + } + } + text='save' + /> {this.renderSeekBar()} diff --git a/examples/basic/yarn.lock b/examples/basic/yarn.lock index 31d5aea7..91ebe274 100644 --- a/examples/basic/yarn.lock +++ b/examples/basic/yarn.lock @@ -2314,11 +2314,6 @@ metro-react-native-babel-transformer "0.76.8" metro-runtime "0.76.8" -"@react-native/normalize-color@*": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@react-native/normalize-color/-/normalize-color-2.1.0.tgz#939b87a9849e81687d3640c5efa2a486ac266f91" - integrity sha512-Z1jQI2NpdFJCVgpY+8Dq/Bt3d+YUi1928Q+/CZm/oh66fzM0RUl54vvuXlPJKybH4pdCZey1eDTPaLHkMPNgWA== - "@react-native/normalize-colors@*": version "0.73.0" resolved "https://registry.yarnpkg.com/@react-native/normalize-colors/-/normalize-colors-0.73.0.tgz#23e15cf2a2b73ac7e5e6df8d5b86b173cfb35a3f" @@ -3650,15 +3645,6 @@ deprecated-react-native-prop-types@4.1.0: invariant "*" prop-types "*" -deprecated-react-native-prop-types@^2.2.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/deprecated-react-native-prop-types/-/deprecated-react-native-prop-types-2.3.0.tgz#c10c6ee75ff2b6de94bb127f142b814e6e08d9ab" - integrity sha512-pWD0voFtNYxrVqvBMYf5gq3NA2GCpfodS1yNynTPc93AYA/KEMGeWDqqeUB6R2Z9ZofVhks2aeJXiuQqKNpesA== - dependencies: - "@react-native/normalize-color" "*" - invariant "*" - prop-types "*" - destroy@1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" @@ -5624,11 +5610,6 @@ jsonfile@^4.0.0: array-includes "^3.1.5" object.assign "^4.1.3" -keymirror@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/keymirror/-/keymirror-0.1.1.tgz#918889ea13f8d0a42e7c557250eee713adc95c35" - integrity sha512-vIkZAFWoDijgQT/Nvl2AHCMmnegN2ehgTPYuyy2hWQkQSntI0S7ESYqdLkoSe1HyEBFHHkCgSIvVdSEiWwKvCg== - kind-of@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-1.1.0.tgz#140a3d2d41a36d2efcfa9377b62c24f8495a5c44" @@ -6762,12 +6743,8 @@ react-is@^17.0.1: resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== -react-native-video@../..: - version "6.0.0-alpha.8" - dependencies: - deprecated-react-native-prop-types "^2.2.0" - keymirror "^0.1.1" - prop-types "^15.7.2" +react-native-video@../../: + version "6.0.0-alpha.9" react-native-windows@0.63.41: version "0.63.41" diff --git a/ios/VideoCaching/RCTVideoCache.m b/ios/VideoCaching/RCTVideoCache.m index 05ad65d4..985b54c8 100644 --- a/ios/VideoCaching/RCTVideoCache.m +++ b/ios/VideoCaching/RCTVideoCache.m @@ -30,7 +30,7 @@ options.useDirectorySeparation = NO; #ifdef DEBUG options.debugOutput = ^(NSString *string) { - RCTLog(@"Video Cache: %@", string); + NSLog(@"VideoCache: debug %@", string); }; #endif [self createTemporaryPath]; @@ -48,7 +48,7 @@ error:&error]; #ifdef DEBUG if (!success || error) { - RCTLog(@"Error while! %@", error); + NSLog(@"VideoCache: Error while! %@", error); } #endif } @@ -64,7 +64,7 @@ [self.videoCache storeData:data forKey:key locked:NO withCallback:^(SPTPersistentCacheResponse * _Nonnull response) { if (response.error) { #ifdef DEBUG - RCTLog(@"An error occured while saving the video into the cache: %@", [response.error localizedDescription]); + NSLog(@"VideoCache: An error occured while saving the video into the cache: %@", [response.error localizedDescription]); #endif handler(NO); return; diff --git a/react-native-video.podspec b/react-native-video.podspec index 00525b2a..a68cf733 100644 --- a/react-native-video.podspec +++ b/react-native-video.podspec @@ -16,7 +16,7 @@ Pod::Spec.new do |s| s.tvos.deployment_target = "10.0" s.subspec "Video" do |ss| - ss.source_files = "ios/Video/**/*.{h,m,swift}" + ss.source_files = "ios/Video/**/*.{h,m,swift}" ss.dependency "PromisesSwift" if defined?($RNVideoUseGoogleIMA) @@ -28,22 +28,17 @@ Pod::Spec.new do |s| 'OTHER_SWIFT_FLAGS' => '$(inherited) -D USE_GOOGLE_IMA' } end - end - - s.subspec "VideoCaching" do |ss| - ss.dependency "react-native-video/Video" - ss.dependency "SPTPersistentCache", "~> 1.1.0" - ss.dependency "DVAssetLoaderDelegate", "~> 0.3.1" - - ss.source_files = "ios/VideoCaching/**/*.{h,m,swift}" + if defined?($RNVideoUseVideoCaching) + Pod::UI.puts "RNVideo: enable Video caching" + ss.dependency "SPTPersistentCache", "~> 1.1.0" + ss.dependency "DVAssetLoaderDelegate", "~> 0.3.1" + ss.source_files = "ios/Video/**/*.{h,m,swift}" "ios/VideoCaching/**/*.{h,m,swift}" + end end s.dependency "React-Core" - s.default_subspec = "Video" - s.static_framework = true - s.xcconfig = { 'OTHER_LDFLAGS': '-ObjC', } diff --git a/src/Video.tsx b/src/Video.tsx index 8edb4ca8..a0193a87 100644 --- a/src/Video.tsx +++ b/src/Video.tsx @@ -50,7 +50,7 @@ export interface VideoRef { restoreUserInterfaceForPictureInPictureStopCompleted: ( restore: boolean, ) => void; - save: () => Promise; + save: (options: object) => Promise; } const Video = forwardRef( @@ -241,8 +241,8 @@ const Video = forwardRef( setIsFullscreen(false); }, [setIsFullscreen]); - const save = useCallback(() => { - return VideoManager.save(getReactTag(nativeRef)); + const save = useCallback((options: object) => { + return VideoManager.save(options, getReactTag(nativeRef)); }, []); const pause = useCallback(() => { diff --git a/src/VideoNativeComponent.ts b/src/VideoNativeComponent.ts index 68c90268..8e6b2792 100644 --- a/src/VideoNativeComponent.ts +++ b/src/VideoNativeComponent.ts @@ -364,7 +364,7 @@ export type VideoSaveData = { }; export interface VideoManagerType { - save: (reactTag: number) => Promise; + save: (option: object, reactTag: number) => Promise; setPlayerPauseState: (paused: boolean, reactTag: number) => Promise; setLicenseResult: ( result: string,