Aitor Sánchez - Blog - Oct. 27, 2023, 6:22 p.m.
¿Buscando implementar una solicitud de permisos en tu app hecha en Ionic? O, quizás, ya sabes cómo funcionan los Ionic Permissions pero te falta que conocer algún detalles que te falta para hacerlo funcionar ¿verdad?
Mi nombre es Aitor Sánchez, soy desarrollador de apps desde 2014, y en este artículo aprenderás de manera sencilla y al grano como puedes realizar una solicitud de permisos al usuario y controlar si el permiso ha sido concedido.
Pero antes de continuar, esta es la Flutter Mafia. Es mi newsletter donde aprenderás desarrollo de apps móviles, aso y monetización 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.
Comenzamos, let´s go!
El primer paso, cómo en todos las bibliotecas que no están en el core de Ionic, es instalarla en nuestra app. Para ello vamos a utilizar las dos siguientes líneas de consola:
$ ionic cordova plugin add cordova-plugin-android-permissions
$ npm install --save @ionic-native/android-permissions
La primera instalará el plugin de Cordova que permitirá la comunicación del código TS con la parte nativa del sistema.
La segunda instalará las librerías necesarias para comunicar nuestro código TS con el de plugin de Cordova.
Cómo imaginarás, y al ver el nombre del plugin lo podrás intuir, este componente solo está disponible para una plataforma que es la siguiente:
Más adelante explicare el componente Permissions Ionic para iOS.
Para hacer funcionar correctamente esta funcionalidad, tendremos que agregarlos a los providers de nuestra clase principal. Para ello, y en el archivo app.module.ts, tenemos que agregar lo siguiente:
import { AndroidPermissions } from '@ionic-native/android-permissions/ngx';
...
providers: [
...,
AndroidPermissions,
...
]
...
Y listo, ya está disponible para su uso, continuamos.
Bien, la parte que más nos interesa. Cómo en todos los tutoriales, vamos a ver un ejemplo de código y después comentamos dicho código.
import { AndroidPermissions } from '@ionic-native/android-permissions/ngx';
constructor(private androidPermissions: AndroidPermissions) { }
...
this.androidPermissions.checkPermission(this.androidPermissions.PERMISSION.CAMERA).then(
result => console.log('Has permission?',result.hasPermission),
err => this.androidPermissions.requestPermission(this.androidPermissions.PERMISSION.CAMERA)
);
this.androidPermissions.requestPermissions(
[this.androidPermissions.PERMISSION.CAMERA, this.androidPermissions.PERMISSION.ACCESS_FINE_LOCATION]
);
En primer lugar, importaremos la clase "AndroidPermissions" para poder hacer uso de ella.
Posteriormente, inyectaremos una instancia de dicha clase a través del constructor. En TS no hace falta igualar una variable local a la instancia inyectada, lo hace el mismo sistema por debajo.
Ahora haciendo uso de la instancia inyectada, vamos a llamar al método "checkPermissions" y le pasaremos el permiso que queremos comprobar. Devolverá una promesa que tenemos que controlar que dentro llevará el resultado y si ha habido algún error.
Nota: Todos los permisos disponibles los podrás encontrar cómo constantes en la clase "AndroidPermissions".
"CheckPermissions" únicamente comprobará si el permiso está aceptado o no por parte del usuario, para realizar una solicitud de permiso nos vamos a la siguiente función, que es "requestPermissions".
RequestPermissions recibirá un array de strings con los permisos que queremos solicitar al usuario. Y aunque en el ejemplo no se vea, nos retornará una promesa que tenemos que controlar y que llevará los detalles de si los permisos han sido aceptados, o no, y si ha habido algún problema.
Fácil ¿verdad? Y, además, super cómo de hacer. En comparación con la api nativa... ¡Sigamos!
Ahora vamos a pasar a explicar uno a uno los campos y funciones disponible de la clase. Te adelanto que no son muchos, pero si quieres profundizar en dicha librería te harán falta.
Cómo hemos visto en el ejemplo, será la clase que contenga todas las constantes de los permisos que tiene disponible el módulo para solicitar/comprobar. En este enlace tienes los nomsbre de todas las constantes de los permisos de Android, el componente usará los mismos nombre.
Esta función, cómo hemos visto en el ejemplo, nos permite comprobar si el permiso que le pasemos cómo parámetro están concedidos o no por parte del usuario.
Retorna una promesa que tendremos que controlar y con ella llegarán los datos de la comprobación.
Nos permite realizar una solicitud al usuario para que acepte el permiso que le pasamos cómo parámetro a la función.
Retornará una promesa que tenemos que controlar, con ella llegarán los datos para saber si el permiso ha sido aceptado, o no, y si ha sucedido algún error.
Cómo hemos visto en el ejemplo, y similar a la función anterior, pero esta nos permite solicitar varios permisos a la vez.
Retornará una promesa que tenemos que controlar y con ella llegarán todos los detalles sobre si los permisos han sido concedidos.
Aunque actualmente funciona, esta función será eliminada en un futuro próximo.
Lo que hace, es comprobar que el dispositivo tenga un permiso específico. Por ejemplo, si estamos programando para un Android TV, este no creo que tenga cámara, o micrófono, ¿verdad? Pues esta función nos permitirá conocer esto. Así sabremos porque las solicitudes de permisos siempre son negativas o llevan error.
Retornará una promesa que con ella llegará la información de la comprobación.
Mira, ahora puedes conseguir más descargas y, por extensión, más dinero optimizando los logos de tus aplicaciones a través de nuestra herramienta. Esta herramienta. Una inteligencia artificial entrenada con los logos de todas las apps de Google Play que te va a permitir evaluar, optimizar y mejorar tu logo con consejos y en pocos clicks.
Y ahora si que me despido. Nos vemos en el siguiente artículo. Hasta entonces ¡que vaya bien!