The YoutubePlayerView
is an open source library that helps you embed a YouTube iframe player into an iOS application. The library creates a WKWebView
and a bridge between your application’s Swift code and the YouTube player’s JavaScript code, thereby allowing the iOS application to control the YouTube player.
To run the example project, clone the repo, and run pod install
from the Example directory first.
YoutubePlayerView is available through CocoaPods. To install it, simply add the following line to your Podfile:
pod 'YoutubePlayerView'
At the command line prompt, type pod install
to update your workspace with the dependencies.
Tip: Remember that when using CocoaPods, you must open the .xcworkspace
file in Xcode, not the .xcodeproj
file.
The library is also easy to install manually. Either download the source via GitHub’s download link or clone the repository. Once you have a local copy of the code, follow these steps:
-
Open the sample project in Xcode or Finder.
-
Select
YoutubePlayerView.swift
andYoutubePlayerExtras.swift
. If you are opening the workspace in Xcode, these will be available underPods -> Development Pods -> YoutubePlayerView
. In the Finder, these are available in the project's root directory in theClasses
directories. -
Drag these files and folders into your project. Make sure the
Copy items into destination group’s folder
option is checked.
To start playing youtube videos follow these steps:
- In interface builder drag a
UIView
to your scene. - Select the Identity Inspector and change the class of the view to
YoutubePlayerView
. - In interface builder create an
IBOutlet
of this view to yout view controller and name itplayerView
. - Now in your view controller's
viewDidLoad
method add following code:
playerView.loadWithVideoId("GC5V67k0TAA")
Build and Run, after video loads tap on it to play the video.
You can also use loadWithVideoId(_ : with:)
method to pass addition parameter to the view. For more information about the parameters visit Player Parameter
To play with additional parameter you can replace you code with this:
let playerVars: [String: Any] = [
"controls": 1,
"modestbranding": 1,
"playsinline": 1,
"rel": 0,
"showinfo": 0,
"autoplay": 1
]
playerView.loadWithVideoId("GC5V67k0TAA", with: playerVars)
There are also methods to control the playback:
func play()
func pause()
func stop()
func seek(to: allowSeekAhead:)
The library provides a protocol YoutubePlayerViewDelegate
to handle callbacks.
Your class can conform to this protocol and set the delegate
of the playerView
to the class.
extension ViewController: YoutubePlayerViewDelegate {
func playerViewDidBecomeReady(_ playerView: YoutubePlayerView) {
print("Ready")
playerView.play()
}
func playerView(_ playerView: YoutubePlayerView, didChangedToState state: YoutubePlayerState) {
print("Changed to state: \(state)")
}
func playerView(_ playerView: YoutubePlayerView, didChangeToQuality quality: YoutubePlaybackQuality) {
print("Changed to quality: \(quality)")
}
func playerView(_ playerView: YoutubePlayerView, receivedError error: Error) {
print("Error: \(error)")
}
func playerView(_ playerView: YoutubePlayerView, didPlayTime time: Float) {
print("Play time: \(time)")
}
}
Now set the delegate of player view:
playerView.delegate = self
Mukesh Yadav, mails4ymukesh@gmail.com
YoutubePlayerView is available under the MIT license. See the LICENSE file for more info.