Aitor Sánchez - Blog - Oct. 31, 2023, 5:16 p.m.
¿Necesitas reproducir un video en tu aplicación y no puedes, o no quieres, utilizar el reproductor nativo del sistema? O, quizás, ya sabes cómo se hace, pero te falta algo para hacer funcionar ExoPlayer en Ionic ¿verdad?
Mi nombre es Aitor Sánchez, soy desarrollador de apps desde 2014, y en este artículo aprenderás, de una manera sencilla y rápida, como reproducir videos con el componente Exoplayer de Ionic en tu app sin tener que pasar por el reproductor del sistema.
Pero antes de continuar, esta es la Flutter Mafia. Es mi newsletter donde tu vas a aprender a hacer apps y a ganar dinero con ellas junto con otros genietes que ya están dentro. Y si te suscribes te regalo mi ebook "Duplica los ingreso de tus apps en 5 minutos" No es broma, quizás te interese.
Si has caído aquí y aún no saber que es este componente (si lo sabes pasa de punto), déjame resumírtelo en una pocas líneas. Se trata de una biblioteca concebida como alternativa al reproductor de video nativo de Android.
Cómo intuirás, únicamente está disponible para Android y es mantenida por el propio Google, vamos que es un componente sacado de su repositorio de Github.
Bien, espero que te haya quedado más o menos claro.
Cómo cada componente externo al core de Ionic, debemos de instalarlo en nuestra aplicación. Para ello vamos a utilizar las siguientes dos líneas de consolas:
$ ionic cordova plugin add cordova-plugin-exoplayer
$ npm install --save @ionic-native/android-exoplayer@4
La primera de ellas instalará el plugin que permitirá la comunicación de nuestra app con la parte nativa del sistema.
La segunda instalará el código TS necesario para que hará de puente entre el código TS de nuestra app y el plugin.
Aunque si has leído el primer punto lo sabrás ya, la única plataforma soportada por el módulo Exoplayer Ionic es:
Era de esperar al ser un componente únicamente pensado para ella y desarrollado por el mismo Google.
Para hacer funcionar todo, debemos incluir la referencia de este en los providers de nuestra aplicación. Para ello vamos a dirigirnos al archivo app.module.ts y lo agregaremos dentro de nuestros providers.
...
providers: [
...,
AndroidExoPlayer,
...
]
...
Recordemos que si únicamente lo vamos a utilizar en una página de la app, y no en el total de estas, es recomendable agregar dicha línea en el module.ts del componente al que haga referencia la página en la que vayamos a utilizarlo, válgame la redundancia.
Vamos a pasar a ver lo que, estoy seguro, más te interesa. Un ejemplo de uso de Exoplayer Ionic para después comentar el código debajo de dicho ejemplo, veamos:
import { AndroidExoPlayer } from '@ionic-native/android-exoplayer';
constructor(private androidExoPlayer: AndroidExoPlayer) { }
...
this.androidExoPlayer.show({url: 'http://www.youtube.com/api/manifest/dash/id/bf5bb2419360daf1/source/youtube'});
Bien, en la primera línea realizaremos un import de la clase "AndroiExoPlayer" que nos llega desde el paquete "@ionic-native/android-exoplayer".
Posteriormente inyectaremos una instancia a nuestra clase mediante el constructor de la app.
Y, para terminar con el ejemplo, llamaremos al método show (el encargado de mostrar el player), pasándole un objeto, que ahora veremos cómo se construye y cuáles son sus parámetros, con un atributo llamado "url" al que vamos a asociar la url del video que queremos mostrar en el player.
Si hiciésemos uso de esto ahora mismo, un reproductor adicional a nuestra app se abriría para reproducir el video que contiene dicha url, pruébalo si quieres y después regresas y continuas con el tutorial.
Ahora pasaremos al profundizar un poquito en dicho paquete. Déjame recordarte que las funciones y campos que vamos a ver ahora corresponden únicamente al componente Exoplayer Ionic, aquí no encontrarás las de alguno de sus padres.
Esta es la función que hemos visto en el ejemplo que muestra el reproductor.
Retorna un observable al que tenemos que suscribirnos. Cada vez que sea llamado llevará en su interior una instancia de "AndroidExoPlayerState" que también veremos a continuación
Nos permite setear, o cambiar, la fuente del video sin necesidad de cerrar y abrir de nuevo el player.
Retorna una promesa que tenemos que controlar si queremos conocer cuando todo ha terminado de configurarse.
Cómo su nombre indica, nos permite cambiar entre el estado "play" y el estado "pause" de nuestro reproductor.
Devolverá una promesa que tenemos que controlar para saber cuándo ha terminado de completarse la acción.
Nos permite setear en la posición que nosotros queramos la reproducción del video.
Retorna una promesa que tenemos que controlar, se resolverá cuando la acción se haya completado.
Permite salta X tiempo adelante, o atrás, desde la zona en la que se encuentre actualmente la línea de reproducción.
Devuelve una promesa que tenemos que controlar si quereos conocer cuando se ha completado la acción.
Nos retorna el estado actual del reproductor.
Retorna una promesa que tenemos que controlar y con ella llegará una instancia de "AndroidExoPlayerState" que contendrá la dicha información.
Fuerza a que se muestren los controles del reproductor.
Retorna una promesa que hay que controlar que se resolverá cuando los controles hayan sido mostrados.
A diferencia de la función anterior, fuerza a esconder los controladores del reproductor.
Retorna una promesa que tenemos que controlar y que se resolverá cuando la acción haya finalizado.
Nos permite cambiar la configuración del controlador del reproductor.
Retorna una promesa que tenemos que controlar si queremos conocer cuando se ha completado la acción.
Fuerza que el reproductor se cierre, debe ser usado antes de usar la función "destroy" para limpiar el objeto.
Ahora pasamos a ver los campos de clase:
La verdad, esta interfaz es un poco "rara". No se sabe muy bien para que se implementó dado que únicamente lleva el mensaje dentro y podría haberse tratado cómo una cadena. No tiene campos internos y se manejará cómo un disparador.
Mira, en el momento que tu mejoras el logo de una app que tengas publicada en Google Play, las descargas y los ingresos que esta aplicación genera aumentan. Esto es así. Mejor logo es igual a más dinero.
Basándonos en esto, hemos creado esta herramienta que te permite evaluar, optimizar y mejorar los logos de tus apps para que reciban más descargas. No te quiero espoilear, dentro hay un video explicativo. Entra en el enlace.
Y ya hemos terminado geniete. Espero haberte ayudado con tus dudas. Nos vemos en el siguiente artículo y hasta entonces ¡que vaya bien!