Introducción - Amazon Interactive Video Service

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Introducción

Le recomendamos que integre el SDK del reproductor mediante CocoaPods. (Alternativamente, puede agregar el marco a su proyecto de forma manual).

Recomendado: integrar el SDK del reproductor (CocoaPods)

Los lanzamientos se publican CocoaPods con el nombreAmazonIVSPlayer. Agregue esta dependencia a su Podfile:

pod 'AmazonIVSPlayer'

Ejecute pod install y el SDK estará disponible en su .xcworkspace.

Método alternativo: instalar el marco de forma manual

  1. Descargue la última versión desde https://player.live-video.net/1.24.0/AmazonIVSPlayer.xcframework.zip.

  2. Extraiga el contenido del archivo. AmazonIVSPlayer.xcframework contiene el SDK para el dispositivo y el simulador.

  3. Integre el AmazonIVSPlayer.xcframework arrastrándolo a la sección Marcos, librerías y contenido integrado de la pestaña General para el destino de la aplicación:

    La sección Marcos, librerías y contenido integrado de la pestaña General para el destino de la aplicación.

Creación del reproductor

El objeto del reproductor es IVSPlayer. Se puede inicializar como se muestra a continuación:

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

Configuración del delegado

Las devoluciones de llamada de delegado proporcionan información sobre el estado de reproducción, los eventos y los errores. Todas las devoluciones de llamada se invocan en la cola principal.

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

Visualización del video

El reproductor muestra el video en una capa personalizada, IVSPlayerLayer. El SDK también proporciona IVSPlayerView, una subclase de UIView respaldada por esta capa. Use lo que sea más conveniente para la interfaz de usuario de su aplicación.

En ambos casos, muestre el video de una instancia de reproductor mediante la propiedad 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;

Carga de una transmisión

El reproductor carga la transmisión de forma asíncrona. Su estado indica cuándo está listo para reproducir.

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

Reproducción de una transmisión

Cuando el reproductor esté listo, use play para iniciar la reproducción. Utilice la interfaz de delegado o la observación de clave-valor en la propiedad state para observar el cambio de estado. A continuación, se muestra un ejemplo del enfoque basado en delegados:

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]; } }

Pausa en la aplicación en segundo plano

El reproductor no admite la reproducción mientras la aplicación está en segundo plano, pero no es necesario detenerla por completo. Pausar es suficiente, consulte los ejemplos a continuación.

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]; }

Seguridad de los subprocesos

La API del reproductor no es segura para los subprocesos. Debe crear y usar una instancia de reproductor desde el subproceso principal de la aplicación.

Resumen global

El siguiente fragmento sencillo del controlador de vistas carga y reproduce una URL en una vista del reproductor. Tenga en cuenta que la propiedad playerView se inicializa desde un XIB/Storyboard y su clase se establece en IVSPlayerView en el Generador de interfaces con la sección de Custom Class (Clase personalizada) del Inspector de identidad.

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