YouTubePlayer 0.7.2

YouTubePlayer 0.7.2

测试已测试
Lang语言 SwiftSwift
许可证 MIT
发布最后发布2020 年 7 月
SPM支持 SPM

Giles Van Gruisen 维护。



YouTubePlayer

在你的 iOS 应用程序中嵌入和控制 YouTube 视频!太酷了,让我们一起看看它是怎么工作的。

0.7.0 更新: WKWebView 破坏性更改

安装

Carthage

将以下内容添加到 Cartfile 中

github "gilesvangruisen/Swift-YouTube-Player"

然后运行 carthage update

别忘了

  • YouTubePlayer.framework 添加到 链接库 构建阶段
  • YouTubePlayer.framework 作为输入文件添加到 carthage copy-frameworks 运行脚本阶段(如果您为 iOS 构建则需要此操作)

有关使用 Carthage 作为依赖项管理器的更多信息,请参阅 Carthage

Cocoapods

请确保您选择了使用框架 use_frameworks!。然后请将以下内容添加到您的Podfile中

pod 'YouTubePlayer'

…然后运行 pod install

示例

// Import Swift module
import YouTubePlayer

根据您的意愿构建和布局视图,无论是使用IB和输出还是以编程方式。

@IBOutlet var videoPlayer: YouTubePlayerView!
// init YouTubePlayerView w/ playerFrame rect (assume playerFrame declared)
var videoPlayer = YouTubePlayerView(frame: playerFrame)

为播放器提供要加载的视频,无论它是从ID还是URL加载。

// Load video from YouTube ID
videoPlayer.loadVideoID("nfWlot6h_JM")
// Load video from YouTube URL
let myVideoURL = NSURL(string: "https://www.youtube.com/watch?v=wQg3bXrVLtg")
videoPlayer.loadVideoURL(myVideoURL!)

控制YouTubePlayerView

每个 YouTubePlayerView 都有用于控制播放器的函数(播放、暂停、搜索、更改视频等)。它们是

  • func loadVideoURL(videoURL: NSURL)
  • func loadVideoID(videoID: String)
  • func loadPlaylistID(playlistID: String)
  • func play()
  • func pause()
  • func stop()
  • func clear()
  • func seekTo(seconds: Float, seekAhead: Bool)
  • func previousVideo()
  • func nextVideo()
  • func getCurrentTime(completion: ((Double?) -> Void)?)
  • func getDuration(completion: ((Double?) -> Void)?)

请注意,调用第二个方法之外的任何方法,如果在播放器准备好之前被调用,将导致JavaScript运行时错误。播放器不会立即准备好,直到调用loadVideoURL(videoURL: NSURL)loadVideoID(videoID: String)之后不久。您可以随时通过检查其ready: Bool属性来检查播放器的准备状态。这些函数是异步运行的,因此一个调用load函数之后的立即调用play函数可能并不安全。我计划很快更新库以添加当播放器准备好时的完成处理程序。

同时,您还可以使用YouTubePlayerDelegate中的方法playerReady(videoPlayer: YouTubePlayerView)来确保在播放器准备就绪时立即执行代码。

响应用件

YouTube的iFrame播放器根据播放器的生命周期发出某些事件。YouTubePlayerDelegate规定了在播放器生命周期期间会调用的这些方法。它们是

  • func playerReady(videoPlayer: YouTubePlayerView)
  • func playerStateChanged(videoPlayer: YouTubePlayerView, playerState: YouTubePlayerState)
  • func playerQualityChanged(videoPlayer: YouTubePlayerView, playbackQuality: YouTubePlaybackQuality)

注:所有这些委托方法都是可选的,这意味着您可以在委托类中实现所有、某个或没有任何一个。

重大变更

0.7.0UIWebView(已弃用)过渡到 WKWebView 需要改变返回值的播放器调用为异步。如果您升级到 0.7.0,则需要将任何对 getCurrentTime()getDuration() 的调用替换为其异步等价物,具体见上文 所述