diff --git a/node_modules/react-native-youtube/RCTYouTubeStandalone.m b/node_modules/react-native-youtube/RCTYouTubeStandalone.m index fabd291..45b322b 100644 --- a/node_modules/react-native-youtube/RCTYouTubeStandalone.m +++ b/node_modules/react-native-youtube/RCTYouTubeStandalone.m @@ -5,6 +5,15 @@ #endif @import AVKit; +@interface AVPlayerViewControllerRotation : AVPlayerViewController +@end + +@implementation AVPlayerViewControllerRotation +- (UIInterfaceOrientationMask)supportedInterfaceOrientations { + return UIInterfaceOrientationMaskAllButUpsideDown; +} +@end + @implementation RCTYouTubeStandalone { RCTPromiseResolveBlock resolver; RCTPromiseRejectBlock rejecter; @@ -14,6 +23,7 @@ RCT_EXPORT_MODULE(); RCT_REMAP_METHOD(playVideo, playVideoWithResolver:(NSString*)videoId + startTime:(NSNumber* _Nonnull)startTime resolver:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject) { @@ -22,10 +32,10 @@ RCT_REMAP_METHOD(playVideo, #else dispatch_async(dispatch_get_main_queue(), ^{ UIViewController *root = [[[[UIApplication sharedApplication] delegate] window] rootViewController]; - AVPlayerViewController *playerViewController = [AVPlayerViewController new]; + AVPlayerViewControllerRotation *playerViewController = [AVPlayerViewControllerRotation new]; [root presentViewController:playerViewController animated:YES completion:nil]; - __weak AVPlayerViewController *weakPlayerViewController = playerViewController; + __weak AVPlayerViewControllerRotation *weakPlayerViewController = playerViewController; [[XCDYouTubeClient defaultClient] getVideoWithIdentifier:videoId completionHandler:^(XCDYouTubeVideo * _Nullable video, NSError * _Nullable error) { @@ -38,10 +48,18 @@ RCT_REMAP_METHOD(playVideo, streamURLs[@(XCDYouTubeVideoQualitySmall240) ]; - weakPlayerViewController.player = [AVPlayer playerWithURL:streamURL]; - [weakPlayerViewController.player play]; - - resolve(@"YouTubeStandaloneIOS player launched successfully"); + @try { + CMTime initialPlaybackTime = CMTimeMakeWithSeconds([startTime doubleValue], 1); + weakPlayerViewController.player = [AVPlayer playerWithURL:streamURL]; + [weakPlayerViewController.player seekToTime:initialPlaybackTime completionHandler: ^(BOOL finished) { + [weakPlayerViewController.player play]; + resolve(@"YouTubeStandaloneIOS player launched successfully"); + }]; + } + @catch (NSException *ex) { + reject(@"error", ex.reason, nil); + [root dismissViewControllerAnimated:YES completion:nil]; + } } else { reject(@"error", error.localizedDescription, nil); [root dismissViewControllerAnimated:YES completion:nil]; diff --git a/node_modules/react-native-youtube/YouTubeStandalone.ios.js b/node_modules/react-native-youtube/YouTubeStandalone.ios.js index 0ee59c6..4a8294b 100644 --- a/node_modules/react-native-youtube/YouTubeStandalone.ios.js +++ b/node_modules/react-native-youtube/YouTubeStandalone.ios.js @@ -4,4 +4,4 @@ const { YouTubeStandalone } = NativeModules; export const YouTubeStandaloneIOS = !YouTubeStandalone ? null - : { playVideo: (videoId) => YouTubeStandalone.playVideo(videoId) }; + : { playVideo: (videoId, startTime) => YouTubeStandalone.playVideo(videoId, startTime) }; diff --git a/node_modules/react-native-youtube/main.d.ts b/node_modules/react-native-youtube/main.d.ts index d771db7..410709d 100644 --- a/node_modules/react-native-youtube/main.d.ts +++ b/node_modules/react-native-youtube/main.d.ts @@ -35,7 +35,7 @@ declare class YouTube extends React.Component { } export declare const YouTubeStandaloneIOS: { - playVideo(videoId: string): Promise; + playVideo(videoId: string, startTime: number): Promise; }; export declare const YouTubeStandaloneAndroid: {