본문 바로가기

개발/iOS

[iOS] YoutubePlayer 사용하기

반응형

 

 

GitHub - youtube/youtube-ios-player-helper: Lightweight helper library that allows iOS developers to add inline playback of YouT

Lightweight helper library that allows iOS developers to add inline playback of YouTube videos through a WebView - GitHub - youtube/youtube-ios-player-helper: Lightweight helper library that allows...

github.com

 

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