Helper library for iOS developers that want to embed YouTube videos in their iOS apps with the iframe player API. 📹
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
and YoutubePlayerExtras.swift
. If you are opening the workspace in Xcode, these will be available under Pods -> Development Pods -> YoutubePlayerView
. In the Finder, these are available in the project's root directory in the Classes
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:
UIView
to your scene.YoutubePlayerView
.IBOutlet
of this view to yout view controller and name it playerView
.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, [email protected]
YoutubePlayerView is available under the MIT license. See the LICENSE file for more info.