시작하기 - Amazon Interactive Video Service

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

시작하기

CocoaPods를 통해 플레이어 SDK를 통합하는 것이 좋습니다(또는 프레임워크를 프로젝트에 수동으로 추가할 수 있습니다).

권장 사항: 플레이어 SDK 통합(CocoaPods)

CocoaPods를 통해 AmazonIVSPlayer라는 이름으로 릴리스가 게시됩니다. 이 종속성을 Podfile에 추가합니다.

pod 'AmazonIVSPlayer'

pod install을 실행합니다. 실행 후 .xcworkspace에서 SDK를 사용할 수 있습니다.

대체 방법: 수동으로 프레임워크 설치

  1. https://player.live-video.net/1.29.0/AmazonIVSPlayer.xcframework.zip에서 최신 버전을 다운로드하세요.

  2. 아카이브 콘텐츠의 압축을 풉니다. AmazonIVSPlayer.xcframework에는 디바이스와 시뮬레이터 모두에 대한 SDK가 포함되어 있습니다.

  3. AmazonIVSPlayer.xcframework를 애플리케이션 대상의 일반 탭의 프레임워크, 라이브러리 및 포함된 콘텐츠 섹션으로 드래그하여 임베딩합니다.

    애플리케이션 대상에 대한 일반(General) 탭의 프레임워크, 라이브러리 및 포함된 콘텐츠(Frameworks, Libraries, and Embedded Content) 섹션.

플레이어 생성

플레이어 객체는 IVSPlayer입니다. 아래 그림과 같이 초기화할 수 있습니다.

Swift
import AmazonIVSPlayer let player = IVSPlayer()
Objective-C
#import <AmazonIVSPlayer/AmazonIVSPlayer.h> IVSPlayer *player = [[IVSPlayer alloc] init];

대리자 설정

대리자 콜백은 재생 상태, 이벤트 및 오류에 대한 정보를 제공합니다. 모든 콜백은 기본 대기열에서 호출됩니다.

Swift
// Self must conform to IVSPlayer.Delegate player.delegate = self
Objective-C
// Self must conform to IVSPlayer.Delegate player.delegate = self

비디오 표시

플레이어는 사용자 지정 계층(IVSPlayerLayer)에서 비디오를 표시합니다. SDK는 이 계층에서 지원하는 하위 클래스 UIView(IVSPlayerView)도 제공합니다. 애플리케이션 UI에 더 편리한 항목을 사용하세요.

두 경우 모두 player 속성을 사용하여 플레이어 인스턴스의 비디오를 표시합니다.

Swift
// When using IVSPlayerView: playerView.player = player // When using IVSPlayerLayer: playerLayer.player = player
Objective-C
// When using IVSPlayerView: playerView.player = player; // When using IVSPlayerLayer: playerLayer.player = player;

스트림 로드

플레이어는 스트림을 비동기식으로 로드합니다. 플레이어 상태는 재생할 준비가 되었을 때를 나타냅니다.

Swift
player.load(url)
Objective-C
[player load:url];

스트림 재생

플레이어가 준비되면 play를 사용하여 재생을 시작합니다. 대리자 인터페이스 또는 state 속성에서 키-값 관찰을 사용하여 상태 변경을 관찰합니다. 다음은 대리자 기반 접근 방식의 예입니다.

Swift
func player(_ player: IVSPlayer, didChangeState state: IVSPlayer.State) { if state == .ready { player.play() } }
Objective-C
- (void)player:(IVSPlayer *)player didChangeState:(IVSPlayerState)state { if (state == IVSPlayerStateReady) { [player play]; } }

앱 백그라운드에서 일시 중지

앱이 백그라운드에 있는 동안 플레이어는 재생을 지원하지 않지만 완전히 비활성화할 필요는 없습니다. 일시 중지만으로 충분합니다. 아래 예제를 참조하세요.

Swift
override func viewDidLoad() { super.viewDidLoad() NotificationCenter.default.addObserver(self, selector: #selector(applicationDidEnterBackground(_:)), name: UIApplication.didEnterBackgroundNotification, object: nil) } @objc func applicationDidEnterBackground(_ notification: NSNotification) { playerView?.player?.pause() }
Objective-C
- (void)viewDidLoad { [super viewDidLoad]; NSNotificationCenter *defaultCenter = NSNotificationCenter.defaultCenter; [defaultCenter addObserver:self selector:@selector(applicationDidEnterBackground:) name:UIApplicationDidEnterBackgroundNotification object:nil]; } - (void)applicationDidEnterBackground:(NSNotification *)notification { [playerView.player pause]; }

스레드 안전

플레이어 API는 스레드 안전 기능이 아닙니다. 애플리케이션 기본 스레드에서 플레이어 인스턴스를 생성하고 사용해야 합니다.

모두 통합

다음의 간단한 view-controller 스니펫은 플레이어 뷰에서 URL을 로드하고 재생합니다. playerView 속성은 XIB/Storyboard에서 초기화되며, 해당 속성의 클래스는 Identity Inspector의 Custom Class 섹션을 사용하여 Interface Builder에서 IVSPlayerView로 설정된다는 점에 유의하세요.

Swift
import AmazonIVSPlayer class MyViewController: UIViewController { ... // Connected in Interface Builder @IBOutlet var playerView: IVSPlayerView! override func viewDidLoad() { super.viewDidLoad() NotificationCenter.default.addObserver(self, selector: #selector(applicationDidEnterBackground(_:)), name: UIApplication.didEnterBackgroundNotification, object: nil) } @objc func applicationDidEnterBackground(_ notification: NSNotification) { playerView?.player?.pause() } ... // Assumes this view controller is already loaded. // For example, this could be called by a button tap. func playVideo(url videoURL: URL) { let player = IVSPlayer() player.delegate = self playerView.player = player player.load(videoURL) } } extension MyViewController: IVSPlayer.Delegate { func player(_ player: IVSPlayer, didChangeState state: IVSPlayer.State) { if state == .ready { player.play() } } }
Objective-C
// MyViewController.h @class IVSPlayerView; @interface MyViewController: UIViewController ... // Connected in Interface Builder @property (nonatomic) IBOutlet IVSPlayerView *playerView; ... @end // MyViewController.m #import <AmazonIVSPlayer/AmazonIVSPlayer.h> @implementation MyViewController <IVSPlayerDelegate> ... - (void)viewDidLoad { [super viewDidLoad]; NSNotificationCenter *defaultCenter = NSNotificationCenter.defaultCenter; [defaultCenter addObserver:self selector:@selector(applicationDidEnterBackground:) name:UIApplicationDidEnterBackgroundNotification object:nil]; } - (void)applicationDidEnterBackground:(NSNotification *)notification { [playerView.player pause]; } // Assumes this view controller is already loaded. // For example, this could be called by a button tap. - (void)playVideoWithURL:(NSURL *)videoURL { IVSPlayer *player = [[IVSPlayer alloc] init]; player.delegate = self; playerView.player = player; [player load:videoURL]; } - (void)player:(IVSPlayer *)player didChangeState:(IVSPlayerState)state { if (state == IVSPlayerStateReady) { [player play]; } } ... @end