기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
시작하기
CocoaPods를 통해 플레이어 SDK를 통합하는 것이 좋습니다(또는 프레임워크를 프로젝트에 수동으로 추가할 수 있습니다).
권장 사항: 플레이어 SDK 통합(CocoaPods)
CocoaPods를 통해 AmazonIVSPlayer
라는 이름으로 릴리스가 게시됩니다. 이 종속성을 Podfile에 추가합니다.
pod 'AmazonIVSPlayer'
pod install
을 실행합니다. 실행 후 .xcworkspace
에서 SDK를 사용할 수 있습니다.
대체 방법: 수동으로 프레임워크 설치
플레이어 생성
플레이어 객체는 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