

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Memulai IVS iOS Player SDK
<a name="ios-getting-started"></a>

Dokumen ini membawa Anda melalui langkah-langkah yang terlibat dalam memulai dengan SDK pemutar iOS Amazon IVS.

Kami menyarankan Anda mengintegrasikan SDK pemain melalui Swift Package Manager. (Sebagai alternatif, Anda dapat menambahkan kerangka kerja secara manual ke proyek Anda.)

## Direkomendasikan: Integrasikan SDK Pemain (Swift Package Manager)
<a name="ios-integrate-sdk-swift"></a>

1. Unduh file Package.swift dari [https://player.live-video.net/1.51.0/Package.swift](https://player.live-video.net/1.51.0/Package.swift).

1. Dalam proyek Anda, buat direktori baru bernama Amazon IVSPlayer dan tambahkan ke kontrol versi.

1. Letakkan file Package.swift yang diunduh di direktori baru.

1. **Di Xcode, buka **File > Add Package Dependencies dan pilih Add** Local...**

1. Arahkan ke dan pilih IVSPlayer direktori Amazon yang Anda buat, lalu pilih **Add Package**.

1. Saat diminta untuk **Memilih Produk Paket untuk AmazonIVSPlayer, pilih **Amazon IVSPlayer**** sebagai **Produk Package** Anda dengan menetapkan target aplikasi Anda di bagian **Tambahkan ke Target**.

1. Pilih **Add Package**.

## Pendekatan Alternatif: Instal Kerangka Secara Manual
<a name="ios-install-framework-manually"></a>

1. Unduh versi terbaru dari [https://player.live-video.net/1.51.0/Amazon IVSPlayer .xcframework.zip.](https://player.live-video.net/1.51.0/AmazonIVSPlayer.xcframework.zip)

1. Ekstrak konten arsip. `AmazonIVSPlayer.xcframework` berisi SDK untuk perangkat dan simulator.

1. Sematkan `AmazonIVSPlayer.xcframework` dengan menyeretnya ke bagian **Frameworks, Libraries, dan Embedded Content** pada tab **General** untuk target aplikasi Anda:  
![\[Bagian Kerangka Kerja, Pustaka, dan Konten Tersemat pada tab Umum untuk target aplikasi Anda.\]](http://docs.aws.amazon.com/id_id/ivs/latest/LowLatencyUserGuide/images/iOS_Player_SDK_Guide_xcframework.png)

## Buat Pemain
<a name="ios-create-player"></a>

Objek pemain adalah`IVSPlayer`. Hal ini dapat diinisialisasi seperti yang ditunjukkan di bawah ini:

------
#### [ Swift ]

```
import AmazonIVSPlayer

let player = IVSPlayer()
```

------
#### [ Objective-C ]

```
#import <AmazonIVSPlayer/AmazonIVSPlayer.h>

IVSPlayer *player = [[IVSPlayer alloc] init];
```

------

## Mengatur Delegasi
<a name="ios-setup-delegate"></a>

Delegasi callback memberikan informasi tentang status pemutaran, peristiwa, dan kesalahan. Semua callback dipanggil pada antrian utama.

------
#### [ Swift ]

```
// Self must conform to IVSPlayer.Delegate
player.delegate = self
```

------
#### [ Objective-C ]

```
// Self must conform to IVSPlayer.Delegate
player.delegate = self
```

------

## Tampilan Video
<a name="ios-display-video"></a>

Pemutar menampilkan video dalam lapisan khusus,`IVSPlayerLayer`. SDK juga menyediakan`IVSPlayerView`, `UIView` subclass yang didukung oleh lapisan ini. Gunakan mana saja yang lebih nyaman untuk UI aplikasi Anda.

Dalam kedua kasus, tampilkan video dari instance pemutar dengan menggunakan `player` properti.

------
#### [ 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;
```

------

## Memuat Stream
<a name="ios-load-stream"></a>

Pemain memuat aliran secara asinkron. Keadaannya menunjukkan kapan siap untuk bermain.

------
#### [ Swift ]

```
player.load(url)
```

------
#### [ Objective-C ]

```
[player load:url];
```

------

## Mainkan Streaming
<a name="ios-play-stream"></a>

Saat pemain sudah siap, gunakan `play` untuk memulai pemutaran. Gunakan antarmuka delegasi atau pengamatan nilai kunci pada `state` properti untuk mengamati perubahan status. Berikut adalah contoh pendekatan berbasis delegasi:

------
#### [ 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];
    }
}
```

------

## Jeda Pada Latar Belakang Aplikasi
<a name="ios-pause-on-app-backgrounding"></a>

Pemain tidak mendukung pemutaran saat aplikasi berada di latar belakang, tetapi tidak perlu dirobohkan sepenuhnya. Menjeda sudah cukup; lihat contoh di bawah ini.

------
#### [ 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];
}
```

------

## Keamanan Benang
<a name="ios-thread-safety"></a>

API pemain tidak aman untuk utas. Anda harus membuat dan menggunakan instance pemain dari thread utama aplikasi.

## Ukuran SDK
<a name="ios-sdk-size"></a>

Pemutar Amazon IVS SDKs dirancang agar seringan mungkin. Untuk informasi terkini tentang ukuran SDK, lihat [Catatan Rilis](release-notes.md).

**Penting:** Saat mengevaluasi dampak ukuran, ukuran IPA yang dihasilkan oleh Xcode tidak mewakili ukuran aplikasi yang diunduh ke perangkat pengguna. App Store melakukan pengoptimalan untuk mengurangi ukuran aplikasi Anda.

## Menyatukan Semuanya
<a name="ios-putting-together"></a>

Cuplikan lihat-pengontrol sederhana berikut memuat dan memainkan URL dalam tampilan pemain. Perhatikan bahwa `playerView` properti diinisialisasi dari Xib/Storyboard, dan kelasnya diatur ke `IVSPlayerView` Interface Builder [menggunakan bagian Custom Class dari](https://developer.apple.com/tutorials/SwiftUI) Identity Inspector.

------
#### [ 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
```

------