반응형
iOS 에 쉽고 빠르게 동영상 플레이어를 얹는 법
Youtube 플레이어 (YoutubePlayer_in_WKWebView) 를 Pod를 사용한다 🙂
Pod 에 추가하고 설치
pod "youtube-ios-player-helper", "~> x.y.z"
ViewController
import UIKit
import SnapKit
import RxSwift
import RxCocoa
class VideoViewController : UIViewController, WKYTPlayerViewDelegate {
...
/// 값이 0 인경우 전체화면, 1인경우 뷰 안에서만 재생
let playVarsDic: [String : Any] = [
"origin" : "https://www.youtube.com",
"playsinline": 1,
"showinfo" : 0,
"autohide" : 0,
"modestbranding" : 1
]
let url = "https://www.youtube.com/watch?v=GmR5YqDEet4"
if let _url = url.youTubeId {
videoView.load(withVideoId: _url, playerVars: playVarsDic)
}
...
func playerView(_ playerView: WKYTPlayerView, didChangeTo state: WKYTPlayerState) {
switch state {
case .unstarted:
print("Unstarted")
case .ended:
print("video ended")
case .playing:
print("Started playback")
case .paused:
print("Paused playback")
case .buffering:
print("buffering...")
case .queued:
print("video queued")
case .unknown:
print("unknown state")
}
}
...
}
위의 상태에 따라 필요한 핸들링을 넣어주자
Extension
import UIKit
extension String {
var youTubeId: String? {
let typePattern = "(?:(?:\\.be\\/|embed\\/|v\\/|\\?v=|\\&v=|\\/videos\\/)|(?:[\\w+]+#\\w\\/\\w(?:\\/[\\w]+)?\\/\\w\\/))([\\w-_]+)"
let regex = try? NSRegularExpression(pattern: typePattern, options: .caseInsensitive)
return regex
.flatMap { $0.firstMatch(in: self, range: NSMakeRange(0, self.count)) }
.flatMap { Range($0.range(at: 1), in: self) }
.map { String(self[$0]) }
}
}
결과
반응형
'개발 > iOS' 카테고리의 다른 글
[iOS] GoogleMap 마커, 경로 사용하기 (0) | 2023.03.14 |
---|---|
[iOS] 기기 별 지원 정보 (OS, Face ID, Touch ID) (0) | 2021.10.18 |
[iOS] iOS의 4가지 층 (0) | 2021.03.24 |