

# Erste Schritte mit dem IVS iOs Player SDK
<a name="ios-getting-started"></a>

Dieses Dokument führt Sie durch die Schritte zum Einstieg in das Amazon IVS iOS Player SDK.

Wir empfehlen Ihnen, das SDK über Swift Package Manager zu integrieren. (Alternativ können Sie die Framework manuell zu Ihrem Projekt hinzufügen.)

## Empfohlen: Integrieren Sie das Player-SDK (Swift Package Manager)
<a name="ios-integrate-sdk-swift"></a>

1. Laden Sie die Datei Package.swift von [https://player.live-video.net/1.50.0/Package.swift](https://player.live-video.net/1.50.0/Package.swift) herunter.

1. Erstellen Sie in Ihrem Projekt ein neues Verzeichnis mit dem Namen AmazonIVSBroadcast und fügen Sie es der Versionskontrolle hinzu.

1. Platzieren Sie die heruntergeladene Datei Package.swift im neuen Verzeichnis.

1. Gehen Sie in Xcode zu **Datei > Paketabhängigkeiten hinzufügen** und wählen Sie **Lokal hinzufügen …**

1. Navigieren Sie zu dem von Ihnen erstellten AmazonIVSBroadcast-Verzeichnis, wählen Sie es aus und wählen Sie **Paket hinzufügen** aus.

1. Wenn Sie aufgefordert werden, **Paketprodukte für AmazonIVSPlayer** auszuwählen, wählen Sie **AmazonIVSPlayer** als Ihr **Paketprodukt** aus, indem Sie Ihr Anwendungsziel im Abschnitt **Zum Ziel hinzufügen** festlegen.

1. Wählen Sie **Paket hinzufügen** aus.

## Manuelles Installieren der Framework
<a name="ios-install-framework-manually"></a>

1. Laden Sie die neueste Version von [https://player.live-video.net/1.50.0/AmazonIVSPlayer.xcframework.zip](https://player.live-video.net/1.50.0/AmazonIVSPlayer.xcframework.zip) herunter.

1. Extrahieren Sie den Inhalt des Archivs. `AmazonIVSPlayer.xcframework` enthält das SDK für Gerät und Simulator.

1. Betten Sie `AmazonIVSPlayer.xcframework` ein, indem Sie es in den Abschnitt **Rahmenbedingungen, Bibliotheken und eingebettete Inhalte** auf der Registerkarte **Allgemein** für Ihr Anwendungsziel ziehen:  
![\[Der Abschnitt Rahmenbedingungen, Bibliotheken und eingebettete Inhalte auf der Registerkarte Allgemein für Ihr Anwendungsziel.\]](http://docs.aws.amazon.com/de_de/ivs/latest/LowLatencyUserGuide/images/iOS_Player_SDK_Guide_xcframework.png)

## Player erstellen
<a name="ios-create-player"></a>

Das Player-Objekt ist `IVSPlayer`. Es kann initialisiert werden, wie unten gezeigt:

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

```
import AmazonIVSPlayer

let player = IVSPlayer()
```

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

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

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

------

## Einrichten der Stellvertretung
<a name="ios-setup-delegate"></a>

Stellvertreter-Rückrufe bieten Informationen zum Wiedergabestatus, zu Ereignissen und Fehlern. Alle Callbacks werden in der Hauptwarteschlange aufgerufen.

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

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

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

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

------

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

Der Player zeigt das Video in einer benutzerdefinierten Ebene an, `IVSPlayerLayer`. Das SDK bietet auch `IVSPlayerView`, eine `UIView`-Unterklasse, die von dieser Ebene unterstützt wird. Verwenden Sie, was für die Benutzeroberfläche Ihrer Anwendung bequemer ist.

In beiden Fällen können Sie das Video von einer Player-Instance mithilfe der `player`-Eigenschaft anzeigen.

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

------

## Laden eines Streams
<a name="ios-load-stream"></a>

Der Player lädt den Stream asynchron. Sein Zustand zeigt an, wann es zum Spielen bereit ist.

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

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

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

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

------

## Wiedergeben eines Streams
<a name="ios-play-stream"></a>

Wenn der Player bereit ist, verwenden Sie `play`, um die Wiedergabe zu starten. Verwenden Sie die Stellvertreter-Benutzeroberfläche oder die Schlüssel-Wert-Beobachtung auf der `state`-Eigenschaft, um die Statusänderung zu beobachten. Hier finden Sie ein Beispiel für den Stellvertreter-Ansatz:

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

------

## Pause bei App-Hintergrundbildung
<a name="ios-pause-on-app-backgrounding"></a>

Der Player unterstützt keine Wiedergabe, während sich die App im Hintergrund befindet, muss aber nicht vollständig abgebrochen werden. Pausieren ist ausreichend; siehe Beispiele unten.

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

------

## Sicherheit für den Thread
<a name="ios-thread-safety"></a>

Die Player-API ist nicht Thread-sicher. Sie sollten eine Player-Instance aus dem Anwendungs-Hauptthread erstellen und verwenden.

## SDK-Größe
<a name="ios-sdk-size"></a>

Die Amazon IVS Player SDKs sind so leicht wie möglich. Aktuelle Informationen zur SDK-Größe finden Sie in den [Versionshinweisen](release-notes.md).

**Wichtig:** Bei der Bewertung der Auswirkungen auf die Größe ist die Größe des von Xcode erzeugten IPA nicht repräsentativ für die Größe Ihrer App, die auf das Gerät eines Benutzers heruntergeladen wurde. Der App Store führt Optimierungen durch, um die Größe Ihrer App zu reduzieren.

## Zusammenführung
<a name="ios-putting-together"></a>

Das folgende einfache View-Controller-Snippet lädt und spielt eine URL in einer Playeransicht ab. Beachten Sie, dass die Eigenschaft `playerView` von einem XIB/Storyboard initialisiert wird und ihre Klasse im Interface Builder [über den Abschnitt "Benutzerdefinierte Klasse" des Identitätsinspektors](https://developer.apple.com/tutorials/SwiftUI) auf `IVSPlayerView` gesetzt wird.

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

------