1.0.12 • Published 4 years ago

react-native-youtube-sdk v1.0.12

Weekly downloads
207
License
Apache 2.0
Repository
github
Last release
4 years ago

react-native-youtube-sdk

npm version

Example Gif

Note

  • Your android app needs to be using the androidx libraries instead of the old support libraries.

Video is unavailable problem

  • Origin is already set up in the library but you will notice that some videos are not playing. This is because the video is shared as not embeddable by provider.
  • You can use YouTube Data API to solve this problem
  • Do not open an issue related to this

Getting started

$ npm install react-native-youtube-sdk --save

Mostly automatic installation

$ react-native link react-native-youtube-sdk

iOS With CocoaPods

  1. Create a blank Swift file with bridge in your project (you can name it whatever you want) (to build swift code easily)
  2. $ cd /ios
  3. $ pod install
  4. Have fun

Manual installation

iOS

  1. In XCode, in the project navigator, right click LibrariesAdd Files to [your project's name]
  2. Go to node_modulesreact-native-youtube-sdk and add YouTubeSdk.xcodeproj
  3. In XCode, in the project navigator, select your project. Add libYouTubeSdk.a to your project's Build PhasesLink Binary With Libraries
  4. Run your project (Cmd+R)

Android

  1. Open up android/app/src/main/java/[...]/MainApplication.java
  • Add import com.srfaytkn.reactnative.YouTubeSdkPackage; to the imports at the top of the file
  • Add new YouTubeSdkPackage() to the list returned by the getPackages() method
  1. Append the following lines to android/settings.gradle:
    include ':react-native-youtube-sdk'
    project(':react-native-youtube-sdk').projectDir = new File(rootProject.projectDir, 	'../node_modules/react-native-youtube-sdk/android')
  2. Insert the following lines inside the dependencies block in android/app/build.gradle:
    implementation project(':react-native-youtube-sdk')

Usage

Example Component

<YouTubePlayer
  ref={ref => (this.youTubePlayer = ref)}
  videoId="t_aIEOqB8VM"
  autoPlay={true}
  fullscreen={true}
  showFullScreenButton={true}
  showSeekBar={true}
  showPlayPauseButton={true}
  startTime={5}
  style={{ width: "100%", height: 200 }}
  onError={e => console.log(e)}
  onChangeState={e => console.log(e)}
  onChangeFullscreen={e => console.log(e)}
/>

Example Usage

import React from "react";
import { ScrollView, StyleSheet, View, TouchableOpacity, Text, ToastAndroid } from "react-native";
import YouTubePlayer from "react-native-youtube-sdk";

export default class App extends React.Component {
  render() {
    return (
      <View style={styles.container}>
        <ScrollView>
          <YouTubePlayer
            ref={ref => (this.youTubePlayer = ref)}
            videoId="t_aIEOqB8VM"
            autoPlay={true}
            fullscreen={false}
            showFullScreenButton={true}
            showSeekBar={true}
            showPlayPauseButton={true}
            startTime={5}
            style={{ width: "100%", height: 200 }}
            onReady={e => console.log("onReady", e.type)}
            onError={e => console.log("onError", e.error)}
            onChangeState={e => console.log("onChangeState", e.state)}
            onChangeFullscreen={e => console.log("onChangeFullscreen", e.isFullscreen)}
          />
          <View>
            <TouchableOpacity style={styles.button} onPress={() => this.youTubePlayer.loadVideo("QdgRNIAdLi4", 0)}>
              <Text style={{ color: "#ffffff" }}>loadVideo</Text>
            </TouchableOpacity>
            <TouchableOpacity style={styles.button} onPress={() => this.youTubePlayer.seekTo(10)}>
              <Text style={{ color: "#ffffff" }}>SeekTo(10)</Text>
            </TouchableOpacity>
            <TouchableOpacity style={styles.button} onPress={() => this.youTubePlayer.play()}>
              <Text style={{ color: "#ffffff" }}>Play</Text>
            </TouchableOpacity>
            <TouchableOpacity style={styles.button} onPress={() => this.youTubePlayer.pause()}>
              <Text style={{ color: "#ffffff" }}>Pause</Text>
            </TouchableOpacity>
            <TouchableOpacity
              style={styles.button}
              onPress={async () => {
                const currentTime = await this.youTubePlayer.getCurrentTime();
                ToastAndroid.show(String(currentTime), ToastAndroid.SHORT);
              }}
            >
              <Text style={{ color: "#ffffff" }}>getCurrentTime</Text>
            </TouchableOpacity>
            <TouchableOpacity
              style={styles.button}
              onPress={async () => {
                const duration = await this.youTubePlayer.getVideoDuration();
                ToastAndroid.show(String(duration), ToastAndroid.SHORT);
              }}
            >
              <Text style={{ color: "#ffffff" }}>getVideoDuration</Text>
            </TouchableOpacity>
          </View>
        </ScrollView>
      </View>
    );
  }
}

const styles = StyleSheet.create({
  container: {
    flex: 1,
  },
  button: {
    backgroundColor: "red",
    margin: 12,
    padding: 12,
    borderRadius: 4,
  },
});

API

Props

PropRequiredTypeDefault valueDescription
videoIdfalsestringYouTube video id
autoPlayfalseboolfalsePlays when video loaded
fullscreenfalseboolfalseThe video is play in fullscreen
showFullScreenButtonfalseboolfalseShow or hide fullscreen button
showSeekBarfalsebooltrueShow or hide seekbar
showPlayPauseButtonfalsebooltrueShow or hide play/pause button
startTimefalsenumber0start time of video for first play
onReadyfalsefunctriggered when the player ready
onErrorfalsefunctriggered when error occurs
onChangeStatefalsefunctriggered when the state changes (UNKNOWN/UNSTARTED/ENDED/PLAYING/PAUSED/BUFFERING/VIDEO_CUED)
onChangeFullscreenfalsefunctriggered when the player enters or exits the fullscreen mode

Methods

NameParamsReturnDescriptipon
seekTosecondsvoidSeeks to a specified time in the video
playvoidplay the video
pausevoidpause the video
loadVideovideoId, startTimevoidload a video to the player
getCurrentTimepromiseReturns promise that results with the current time of the played video
getVideoDurationpromiseReturns promise that results with the duration of the played video

Thanks

1.0.12

4 years ago

1.0.11

4 years ago

1.0.10

4 years ago

1.0.9

4 years ago

1.0.8

4 years ago

1.0.7

4 years ago

1.0.6

4 years ago

1.0.5

4 years ago

1.0.4

5 years ago

1.0.3

5 years ago

1.0.2

5 years ago

1.0.1

5 years ago

1.0.0

5 years ago

0.0.6

5 years ago

0.0.5

5 years ago

0.0.4

5 years ago

0.0.3

5 years ago

0.0.2

5 years ago

0.0.1

5 years ago