refactor(ios): unpause after exiting fullscreen (#4472)

* refactor(ios): unpause after exiting fullscreen

* chore: lint code
This commit is contained in:
Kamil Moskała
2025-03-26 12:20:32 +01:00
committed by GitHub
parent 229a5764ea
commit f188a7fd48
3 changed files with 46 additions and 38 deletions
+31 -31
View File
@@ -852,12 +852,12 @@ PODS:
- React-Mapbuffer (0.73.2):
- glog
- React-debug
- react-native-video (6.10.2):
- react-native-video (6.11.0):
- glog
- RCT-Folly (= 2022.05.16.00)
- React-Core
- react-native-video/Video (= 6.10.2)
- react-native-video/Video (6.10.2):
- react-native-video/Video (= 6.11.0)
- react-native-video/Video (6.11.0):
- glog
- RCT-Folly (= 2022.05.16.00)
- React-Core
@@ -1024,13 +1024,13 @@ PODS:
- React-jsi (= 0.73.2)
- React-logger (= 0.73.2)
- React-perflogger (= 0.73.2)
- ReactNativeHost (0.5.3):
- ReactNativeHost (0.5.0):
- glog
- RCT-Folly (= 2022.05.16.00)
- React-Core
- React-cxxreact
- ReactCommon/turbomodule/core
- ReactTestApp-DevSupport (3.10.18):
- ReactTestApp-DevSupport (3.10.17):
- React-Core
- React-jsi
- ReactTestApp-Resources (1.0.0-dev)
@@ -1213,50 +1213,50 @@ SPEC CHECKSUMS:
FBReactNativeSpec: 86de768f89901ef6ed3207cd686362189d64ac88
fmt: ff9d55029c625d3757ed641535fd4a75fedc7ce9
glog: c5d68082e772fa1c511173d6b30a9de2c05a69a2
RCT-Folly: cd21f1661364f975ae76b3308167ad66b09f53f5
RCT-Folly: 7169b2b1c44399c76a47b5deaaba715eeeb476c0
RCTRequired: 9b1e7e262745fb671e33c51c1078d093bd30e322
RCTTypeSafety: a759e3b086eccf3e2cbf2493d22f28e082f958e6
React: 805f5dd55bbdb92c36b4914c64aaae4c97d358dc
React-callinvoker: 6a697867607c990c2c2c085296ee32cfb5e47c01
React-Codegen: ea685412377744d2e2108adb131fce2f040ddd14
React-Core: d9a7e296b2e7b57f27d81b62a7d293d06527268a
React-CoreModules: 399f72f0892befe0fde5d415703c0b9b356762e7
React-cxxreact: beb7cb8adddd4b25d4262f55927dcd1d3577e99d
React-Codegen: 39377d8c90c3fc0792753c9af53b788abfe5850b
React-Core: 943d6097aaf381b1e7c7e105eecd5a27b51c4e17
React-CoreModules: 710e7c557a1a8180bd1645f5b4bf79f4bd3f5417
React-cxxreact: 0f0b3933c36dfe4ed10638a33398533f90ab78d3
React-debug: f1637bce73342b2f6eee4982508fdfb088667a87
React-Fabric: cb2eba1fd764229f9a5737fa7b339695d4949848
React-FabricImage: b86bf7e1c6560bf82ade361dac6f3281e68453ee
React-graphics: 87ba141b72379824c7835224c1a87993683151a8
React-ImageManager: 1bc92d558d4d5de07c6c1a7244d33ad2a872728e
React-Fabric: ba7d74992ed878fdbf91f8b49eb725b310786980
React-FabricImage: e7457fb89db50cb1b51d0546b5ff002b91026efe
React-graphics: dd5af9d8b1b45171fd6933e19fed522f373bcb10
React-ImageManager: c5b7db131eff71443d7f3a8d686fd841d18befd3
React-jsc: 94234736a90ea29f017f2ee76e5f358a6ba076a9
React-jserrorhandler: 0b1476485be6d79f09a8f0548c355b1cc14e8f21
React-jsi: dbfd3bab7712367d4c2aced271d794dde76f0d68
React-jsiexecutor: 368e562638c31174479c00434d37fd67b761c15b
React-jserrorhandler: 97a6a12e2344c3c4fdd7ba1edefb005215c732f8
React-jsi: 0cd661b6ea862c104706311f8265050ee3ecf5e4
React-jsiexecutor: 94f6026bc4054b413f0ac5e210691c2916d99d1b
React-jsinspector: 03644c063fc3621c9a4e8bf263a8150909129618
React-logger: 66b168e2b2bee57bd8ce9e69f739d805732a5570
React-Mapbuffer: 9ee041e1d7be96da6d76a251f92e72b711c651d6
react-native-video: 6e6a4c453879c646d8a2e5c16ff0903af33daadd
react-native-video: a37a6ee1a15aa383c7abc2879c0b7524e6ff1f6b
React-nativeconfig: d753fbbc8cecc8ae413d615599ac378bbf6999bb
React-NativeModulesApple: 0c22e17930a2de06bbd4d49a149351a5151283dc
React-NativeModulesApple: 22c25a1baa4b0d0d4845dad2578fc017b0805589
React-perflogger: 29efe63b7ef5fbaaa50ef6eaa92482f98a24b97e
React-RCTActionSheet: 69134c62aefd362027b20da01cd5d14ffd39db3f
React-RCTAnimation: ed774e28e707ce47b1e2dc6aa7f8f3267b815061
React-RCTAppDelegate: b3312577f20a1c3aaf58ff6d561f3119c74b95b4
React-RCTBlob: 8c173ce722daff128efb38f29a390984800f9302
React-RCTFabric: a0a76ccfa863b02382cb74e04450e9f69cd1cf49
React-RCTImage: 1f75f5d0539b381f70981386b1459fbb2c21eb9b
React-RCTLinking: febd566d57a9cb05a02f39771ccc8c20f8432e89
React-RCTNetwork: d427de729372fd50d7cb601db64d0fcd9ea9a514
React-RCTSettings: 73594c6c8c334c7d958cf98ac72335f3e4df9bf5
React-RCTText: f1079c24f45cec6ddb6363c12ad87f9a940b2ddb
React-RCTVibration: 62420b57a47482d1b88dde64ba88d333f2625aab
React-rendererdebug: a474ec4cdfed75211dce6c3828de8391cc5c4280
React-RCTAnimation: 3b5a57087c7a5e727855b803d643ac1d445488f5
React-RCTAppDelegate: 842870b97f47de7255908ba1ca8786aef877b0b8
React-RCTBlob: 1fa011b5860c9a70802fab986ad334b458387b7a
React-RCTFabric: c8f86a85501d70c8a77d71f22273e325ffb63fa0
React-RCTImage: 27b27f4663df9e776d0549ed2f3536213e793f1b
React-RCTLinking: 962880ce9d0e2ea83fd182953538fc4ed757d4da
React-RCTNetwork: 73a756b44d4ad584bae13a5f1484e3ce12accac8
React-RCTSettings: 6d7f8d807f05de3d01cfb182d14e5f400716faac
React-RCTText: 73006e95ca359595c2510c1c0114027c85a6ddd3
React-RCTVibration: 599f427f9cbdd9c4bf38959ca020e8fef0717211
React-rendererdebug: f2946e0a1c3b906e71555a7c4a39aa6a6c0e639b
React-rncore: 74030de0ffef7b1a3fb77941168624534cc9ae7f
React-runtimeexecutor: 2d1f64f58193f00a3ad71d3f89c2bfbfe11cf5a5
React-runtimescheduler: 6517c0cdfae3ea29b599759e069ae97746163248
React-utils: f5bc61e7ea3325c0732ae2d755f4441940163b85
ReactCommon: a42e89b49d88c3890dfb6fd98a33ac80d555be19
ReactNativeHost: 1e71e0d4c176f03f4b9073a35197d576ec40cce3
ReactTestApp-DevSupport: 1e39530b4a8602e7138a5b9dfafe41d3a78382ff
ReactTestApp-DevSupport: 63ee335373656e70e33d7ac50cd599f31285c962
ReactTestApp-Resources: 857244f3a23f2b3157b364fa06cf3e8866deff9c
RNCPicker: d2ac37457765e0066fe17c93f536eae024b6e53a
SocketRocket: f32cd54efbe0f095c4d7594881e52619cfe80b17
+1 -7
View File
@@ -221,11 +221,6 @@ const BasicExample = () => {
console.log('onVideoBandwidthUpdate', data);
};
const onFullScreenExit = () => {
// iOS pauses video on exit from full screen
Platform.OS === 'ios' && setPaused(true);
};
const _renderLoader = showPoster ? () => <VideoLoader /> : undefined;
const _subtitleStyle = {subtitlesFollowVideo: true};
@@ -240,7 +235,7 @@ const BasicExample = () => {
};
useEffect(() => {
videoRef.current?.setSource({...currentSrc, bufferConfig: _bufferConfig });
videoRef.current?.setSource({...currentSrc, bufferConfig: _bufferConfig});
}, [currentSrc]);
return (
@@ -261,7 +256,6 @@ const BasicExample = () => {
muted={muted}
controls={controls}
resizeMode={resizeMode}
onFullscreenPlayerWillDismiss={onFullScreenExit}
onLoad={onLoad}
onAudioTracks={onAudioTracks}
onTextTracks={onTextTracks}
@@ -322,6 +322,20 @@ class RCTPlayerObserver: NSObject, AVPlayerItemMetadataOutputPushDelegate, AVPla
_restoreUserInterfaceForPIPStopCompletionHandler = completionHandler
}
func playerViewController(
_: AVPlayerViewController,
willEndFullScreenPresentationWithAnimationCoordinator coordinator: UIViewControllerTransitionCoordinator
) {
// iOS automatically pauses videos after exiting fullscreen,
// but it's better if we resume playback
let wasPlaying = player?.timeControlStatus == .playing
coordinator.animate(alongsideTransition: nil) { [weak self] context in
guard let self, !context.isCancelled, wasPlaying else { return }
self.player?.play()
}
}
func setRestoreUserInterfaceForPIPStopCompletionHandler(_ restore: Bool) {
guard let _restoreUserInterfaceForPIPStopCompletionHandler else { return }