Apache Cordova: cómo gestionar la privacidad
17/11/2017

Apache Cordova: cómo gestionar la privacidad

Desarrollo de apps

La privacidad es un aspecto muy importante en nuestro día a día. Siempre que hay algún tipo de violación a ella es noticia y todos los medios se hacen eco. Uno de los ejemplos más recientes es la capacidad de un ingeniero de Google de hacer funcionar remotamente la cámara en un sistema iOS incluso aunque el usuario no haya encendido ese componente. Cabe decir que para ello, la aplicación en cuestión debe estar corriendo en ese instante, pero Apple deberá hacer los deberes y actualizar sus términos de privacidad de cara al desarrollador para que esto no ocurra. La privacidad es algo que preocupa a muchos usuarios, pero sin embargo poco conocen de ella y son capaces de otorgar sus permisos casi sin mirar qué están haciendo, por lo que nosotros como programadores tenemos una gran responsabilidad en no abusar de ello. Pero, ¿cómo solicitamos estos permisos, y más concretamente, en Apache Cordova? Sigue leyendo y te explico qué es Android Manifest.

Android Manifest en Apache Cordova

El manifiesto de Android es un fichero XML en el cual se reúnen muchas características de la aplicación que estamos desarrollando, entre ellas los permisos de usuario. A medida que pasan los años y los sistemas operativos móviles actualizan sus versiones, se vuelven a su vez más estrictos con la tolerancia ante ciertas acciones que quiera hacer el software de terceros, incluso al ser descargados de la tienda de apps. Por ejemplo, desde Android 6, la cámara requiere de un permiso especial para ser lanzada, ya que de lo contrario podría iniciarse sin conocimiento del usuario. Este permiso debe ser otorgado por él, mediante un mensaje modal informando de que la aplicación actual desea acceder al recurso. Si el usuario se niega, dicha app no podrá usarla hasta que él vaya a las preferencias y lo reanude manualmente. En este caso no tenemos otra alternativa que hacerlo así, pero hay otro caso en que el recurso puede funcionar pero que necesitamos de los permisos para poder usarlo con mayor precisión: se trata del GPS. En el caso de la geolocalización, la podemos usar hasta cierta precisión sin necesidad de los permisos, pero si queremos determinar con mayor seguridad la localización del usuario o de algún sitio en el mapa necesitamos que nos den permiso previamente. Esto, a menos que lo pongamos nosotros manualmente, nunca se va a pedir, de modo que debemos trabajar con el Manifest.

Android Manifest, como comentaba, es un fichero XML por lo que su estructura es de etiquetas, algo parecido a una página HTML. Los elementos se agrupan por bloques con un nombre concreto y allí dentro es donde ponemos las especificaciones que queramos definir para así hacer las propiedades. El formato XML se usa en muchos ámbitos, desde la visualización de datos obtenidos de un servidor, guardar en local información, etc. Es ligero porqué son cadenas de texto. Entonces, en el caso de Cordova, al añadir un plugin nuevo, en el momento de hacer cordova build, nuestro manifiesto se actualiza automáticamente. Bueno, más bien se elimina y se genera de nuevo con la información correcta. Pero claro, estamos hablando de acceder manualmente y poner unas propiedades personalizadas para el GPS. Entonces lo que debemos hacer es, después de añadir todos los plugins que necesitemos:

  1. Generar de nuevo el proyecto con cordova build
  2. Comprobar que el fichero Android Manifest se ha generado correctamente con la información nueva
  3. Acceder a él y editar lo que necesitemos

¿Qué podemos editar? Desde las restricciones del modo de visualización (portrait o landscape mode), si queremos la app en pantalla completa, tapando así la barra de notificaciones, o el acceso del GPS. Por ejemplo, si queremos habilitar el uso de internet de la app, usaríamos la siguiente connotación:

<platform name="android">

    <config-file target="AndroidManifest.xml" parent="/manifest">

        <uses-permission android:name="android.permission.INTERNET"/>

    </config-file>

</platform>

Si observamos atentamente este bloque, vemos que primero definimos la etiqueta “platform” la cual usamos la propiedad “name” para definir que se trata de android. Esta sintaxis es muy parecida a HTML y su funcionamiento sigue las mismas reglas: símbolo “mayor que” para abrir la definición de la etiqueta, y para cerrar el bloque usamos “mayor que + barra”. Dentro del bloque podemos, entonces, definir muchas otras propiedades, que en el caso del manifest deberemos consultar en la API de Google dedicada a Android. La razón es porqué, aunque use XML, las especificaciones son concretas para este sistema operativo y deben ser escritas como demanda el SDK. De lo contrario, aunque no haya problemas de sintaxis, al compilar no serán reconocidas y nuestras solicitudes de permisos para gestionar la privacidad no serán comunicadas al usuario, haciendo imposible, como consecuencia, el poder acceder a ciertos recursos del dispositivo.

Así es como Cordova gestiona la privacidad. El modo es el mismo que el usado de forma nativa en el SDK de android, de modo que lo aprendido aquí nos sirve para Android Studio o cualquier otro Framework de trabajo de apps.

El caso de Apple es distinto, ya que la privacidad se gestiona desde el “otro lado” del sistema y tenemos un control menor como desarrolladores, haciendo esto más hermético. Pero bien, se trata de Apple. ¿a alguien le sorprende?

Curso relacionado: Curso Superior de Desarrollo de Aplicaciones para Móviles

Comparte en:

El auge de la tecnología beacon en las apps
25/03/2020
Jordi Mula

El auge de la tecnología beacon en las apps

El posicionamiento, la ubicación y la geolocalización son elementos cada vez más integrados en el desarrollo de aplicaciones. La geolocalización en exterior es un ...

¿Qué debe aportar el cliente para desarrollar una app?
27/02/2020
Jordi Mula

¿Qué debe aportar el cliente para desarrollar una app?

En muchas ocasiones el cliente por desconocimiento no sabe qué datos o elementos debe proporcionarnos para poder generar ese plan de asesoramiento inicial, vamos a ve...

Que es una game jam y que se puede esperar de una sesión
13/02/2020
Jordi Mula

Que es una game jam y que se puede esperar de una sesión

El mes pasado fue la Global Game Jam, y con motivo de este evento internacional que se da lugar en diferentes países y en diferentes sedes, vamos a hablar un poco sob...