Android se enfoca en ayudar a los usuarios a aprovechar las innovaciones más recientes y, al mismo tiempo, priorizar su seguridad y privacidad.
Algunas de las prácticas recomendadas que se describen en esta página también aparecen en la hoja de referencia.
Presta atención a los permisos
Sé transparente y proporciónales a tus usuarios control sobre la experiencia con la app para obtener su confianza.
Solicita los permisos mínimos que necesita la función. Cada vez que introduzcas cambios importantes en tu app, revisa los permisos solicitados para confirmar que las funciones aún los necesiten.
- Ten en cuenta que las versiones más recientes de Android suelen introducir formas de acceder a los datos que no requieren permisos, sin comprometer la privacidad. Para obtener más información, consulta Cómo evaluar si tu app debe declarar permisos.
- Si tu app se distribuye en Google Play, Android vitals te indica el porcentaje de usuarios que rechazan los permisos de tu app. Usa esos datos para volver a evaluar el diseño de las funciones para las que se suelen rechazar los permisos.
Sigue el flujo recomendado para explicar por qué una función de tu app necesita un permiso. Solicita el permiso cuando sea necesario, en lugar de hacerlo al iniciar la app, de modo que los usuarios sepan por qué se necesita el permiso.
Ten en cuenta que los usuarios o el sistema pueden denegar el permiso varias veces. Para respetar esta elección del usuario, Android ignora las solicitudes de permisos de la misma app.
Realiza una degradación elegante cuando los usuarios denieguen o revoquen un permiso. Por ejemplo, puedes inhabilitar la función de entrada de voz de la app si el usuario no otorga permiso de acceso al micrófono.
Cuando actualices tu app, quita el acceso a cualquier permiso de tiempo de ejecución que esta ya no necesite.
Si usas un SDK o una biblioteca que accede a datos protegidos por permisos peligrosos, los usuarios tenderán a atribuirle esto a la app. Asegúrate de comprender los permisos que requieren tus SDK y por qué son necesarios.
- Si pruebas tu app en Android 11 (nivel de API 30), usa la auditoría de acceso a los datos para descubrir lugares en tu código y en el código de la biblioteca de terceros donde están los datos privados.
Minimiza el uso de la ubicación
Si la app puede dar respuesta a sus casos prácticos sin necesidad de datos de ubicación, no solicites permisos de ubicación. Si la app solicita permiso para acceder a la ubicación, ayuda a los usuarios a tomar una decisión informada.
- Si tu app debe recopilar información de ubicación, explícales a los usuarios el modo en que la usa para brindarles beneficios específicos.
- Si la app necesita sincronizar el dispositivo del usuario con un dispositivo cercano mediante Bluetooth o Wi-Fi, usa el administrador de dispositivo complementario, que no requiere permisos de ubicación.
- Revisa el nivel de detalle de ubicación que la app necesita. El acceso a la ubicación aproximada es suficiente para dar respuesta a la mayoría de los casos prácticos relacionados con la ubicación.
- Accede a los datos de ubicación mientras la app es visible para el usuario. De esta manera, los usuarios pueden comprender mejor por qué la app solicita información sobre su ubicación.
- Si tu app requiere una ubicación en segundo plano, como cuando se implementa el geovallado, asegúrate de que sea fundamental para su función principal y de que se ejecute de manera evidente para los usuarios. Obtén más información sobre las consideraciones para el uso de la ubicación en segundo plano.
- En Android 10 (nivel de API 29) y versiones posteriores, los usuarios pueden limitar el acceso a la ubicación de la app mientras esta está en uso. Diseña la app para que restrinja su funcionamiento sin ocasionar inconvenientes cuando no tenga acceso a la ubicación todo el tiempo.
- Si la app necesita retener el acceso a la ubicación para una tarea continua iniciada por el usuario después de que este sale de la IU de la app, inicia un servicio en primer plano antes de que la app entre en segundo plano. Puedes hacerlo en una de las devoluciones de llamada de ciclo de vida de Android, como
onPause()
. - No inicies servicios en primer plano desde el segundo plano. En cambio, considera iniciar la app desde una notificación y, luego, ejecutar el código de ubicación cuando la IU de la app se vuelva visible.
Maneja los datos de forma segura
Nota: Puedes obtener más información sobre los datos sensibles en la página Datos del usuario del Centro de políticas para desarrolladores de Google Play.
Debes ser transparente y garantizar seguridad en la manipulación de datos sensibles.
- Comunícales a los usuarios cuándo y por qué tu app recopila, usa o comparte datos sensibles.
- Si es posible, usa el modelo de almacenamiento específico. Descubre cómo migrar al almacenamiento específico según los casos de uso de tu app.
- Usa siempre conexiones de red seguras. Para los datos en reposo de tu app, usa la encriptación de credenciales integrada de Android. En el caso de los datos en tránsito, usa TLS, el sucesor de SSL, para todas las transmisiones de datos, sin importar la sensibilidad.
- Coloca los archivos que contengan datos sensibles en el directorio privado de la app dentro del almacenamiento interno.
- En Android 10 (nivel de API 29), almacena archivos que solo sean relevantes para tu app en el directorio específico de la app en el almacenamiento externo. Obtén más información sobre el almacenamiento específico.
- Si necesitas pasar datos sensibles a otra app, usa un intent explícito. Otorga acceso de datos por única vez para restringir aún más el acceso de la otra app.
- Incluso cuando la app esté en primer plano, muestra una indicación en tiempo real de que estás haciendo una captura desde el micrófono o la cámara. Ten en cuenta que Android 9 (nivel de API 28) y las versiones posteriores no permiten el acceso al micrófono ni a la cámara cuando la app está en segundo plano.
- No incluyas datos sensibles en los mensajes de logcat ni en los archivos de registro de tu app. Obtén más información para manejar los datos del usuario.
Jetpack ofrece varias bibliotecas para proteger los datos de la app. Obtén más información en las guías sobre cómo usar la biblioteca de seguridad de Jetpack y la biblioteca de preferencias de Jetpack.
Usa identificadores que se puedan restablecer
Respeta la privacidad del usuario y usa identificadores que se puedan restablecer. Para obtener más información, consulta Prácticas recomendadas para identificadores únicos.
- No accedas al IMEI ni al número de serie del dispositivo, ya que estos identificadores son persistentes. Si intentas acceder a estos identificadores en una app orientada a Android 10 (nivel de API 29) o versiones posteriores, se genera una
SecurityException
. - Solo usa un ID de publicidad en casos de uso de anuncios o generación de perfiles. Para las apps de Google Play, esto es un requisito. Respeta siempre las preferencias del usuario acerca del seguimiento de anuncios para la personalización.
- Para la gran mayoría de los casos de uso que no son anuncios, usa un ID único general (GUID) almacenado de forma privada que sea específico de la app.
- Usa Settings Secure Android ID (SSAID) para compartir el estado entre las apps que posees sin que el usuario tenga que acceder a una cuenta. Obtén más información para realizar un seguimiento de las preferencias de un usuario que salió de su cuenta entre apps.