Únete a ⁠ #Android11: The Beta Launch Show el 3 de junio.

Actualizaciones de ubicación en Android 11

Android 11 presenta cambios en la forma en que las aplicaciones pueden solicitar permisos de ubicación en segundo plano y cómo pueden otorgarlos los usuarios. Los cambios específicos dependen de la versión del SDK de destino de la aplicación, pero afectan a todas las apps que se ejecutan en Android 11.

Acceso a la ubicación en segundo plano

Figura 1: El diálogo de la app para los permisos de ubicación ya no incluye la opción de "Permitir todo el tiempo"

Android 11 destaca el control del usuario sobre la información de ubicación agregando permisos únicos y quitando la capacidad de los usuarios de otorgar el permiso ACCESS_BACKGROUND_LOCATION desde un mensaje en la app, como se muestra en la figura 1.

Este cambio afecta a todas las apps que se ejecutan en Android 11. La forma en la que se ve afectada tu app depende de la versión del SDK de destino:

  • Si tu app está orientada a Android 11, puedes crear una IU personalizada para explicar a los usuarios por qué la app necesita el permiso ACCESS_BACKGROUND_LOCATION.
  • Si la app está orientada a una versión anterior, debes usar la IU proporcionada por el sistema, que indica que la app quiere acceder a la información de ubicación en segundo plano, incluso cuando no se está usando.

Cómo crear una IU personalizada

Si tu app está orientada a Android 11, puedes mostrar una IU personalizada que te permita explicar con mayor claridad a los usuarios por qué la app necesita el permiso ACCESS_BACKGROUND_LOCATION.

Sigue los lineamientos de esta sección para crear una IU que los usuarios puedan comprender más fácilmente.

Explicación del requisito de ubicación en segundo plano de la app

Para solicitar el permiso ACCESS_BACKGROUND_LOCATION en la app, primero debes obtener un permiso de ubicación en primer plano, ya sea ACCESS_COARSE_LOCATION o ACCESS_FINE_LOCATION. Si intentas solicitar ACCESS_BACKGROUND_LOCATION y cualquier otro permiso al mismo tiempo, el sistema arrojará una excepción.

Cuando la app tenga uno de estos permisos, muéstrale al usuario una IU en la que ofrezcas funciones que necesiten el permiso ACCESS_BACKGROUND_LOCATION. Esta IU debe incluir un texto que explique por qué la función de tu app requiere el permiso ACCESS_BACKGROUND_LOCATION, y deberá presentarle estas opciones al usuario:

  • Otorgar el permiso. Si el usuario selecciona esta opción, solicita permiso de ACCESS_BACKGROUND_LOCATION. El sistema dirige al usuario a la configuración del sistema para que complete el proceso de otorgamiento de este permiso.

    Para ayudar a los usuarios a encontrar la opción en la configuración que les permita otorgar el permiso ACCESS_BACKGROUND_LOCATION, puedes incluir la etiqueta visible de la opción de configuración en la IU de la app. El método getBackgroundPermissionOptionLabel() proporciona una etiqueta localizada según la preferencia de idioma del dispositivo del usuario.

  • No otorgar el permiso. Los usuarios deberían poder seguir usando la app si no otorgan el permiso. Si el usuario selecciona esta opción, la app puede continuar funcionando correctamente, tal vez alejando a los usuarios de la función que requiere acceso a la ubicación en segundo plano.

Incluso después de que la app reciba el permiso ACCESS_BACKGROUND_LOCATION, ten en cuenta que los usuarios pueden cambiar el acceso de ubicación de la aplicación para Permitir solo mientras se usa la app o Preguntar siempre en la configuración del sistema. También podrían denegar por completo el acceso a la ubicación.

Cómo dirigir a los usuarios a la configuración del sistema si es necesario

La opción se encuentra en la sección
Figura 2: La pantalla de configuración incluye una opción llamada Permitir todo el tiempo, que otorga acceso a la ubicación en segundo plano.

Si el usuario acepta otorgar el permiso ACCESS_BACKGROUND_LOCATION a tu app, esta debe dirigirlo a la pantalla de configuración que se muestra en la figura 2. Esta pantalla incluye la opción Permitir todo el tiempo, que otorga a la app el permiso ACCESS_BACKGROUND_LOCATION.

Redireccionamientos limitados a la configuración del sistema

Después de que la app dirige a los usuarios a la página de permisos en la configuración del sistema, ellos pueden elegir un nivel de acceso a la ubicación distinto a Permitir todo el tiempo, como Denegar. Android 11 permite que la app envíe a los usuarios a la configuración del sistema hasta dos veces desde una IU. Por lo tanto, es fundamental que expliques claramente a los usuarios el motivo por el cual la función de la app requiere acceso a la ubicación en segundo plano.

Cuando la app alcance este límite, podrás invocar un intent que dirija a los usuarios a la página de información de tu app en la configuración del sistema. Desde allí, los usuarios pueden navegar hasta la página de permisos de la app. Para cargar la página de información de la app, usa la acción de intent Settings.ACTION_APPLICATION_DETAILS_SETTINGS.

Precaución: No se recomienda utilizar ACTION_APPLICATION_DETAILS_SETTINGS, ya que no explica a los usuarios que la app solicita el permiso.

Uso de la IU proporcionada por el sistema

Si la app está orientada a Android 10 (API nivel 29) o versiones anteriores, deberás mostrar un diálogo proporcionado por el sistema, como se muestra en la figura 3, cuando solicites el permiso ACCESS_BACKGROUND_LOCATION:

En ambas versiones del diálogo, el vínculo para
Figura 3: Mensajes de permiso de ubicación que incluyen un vínculo a la configuración del sistema, antes de que se otorguen permisos de ubicación (izquierda) y después que el usuario otorgue un permiso en primer plano (derecha).

Este diálogo incluye lo siguiente:

  • Instrucciones sobre cómo ir a la página de permisos de ubicación de la app en la configuración del sistema a fin de seleccionar Permitir todo el tiempo
  • Botones que otorgan acceso a la ubicación en primer plano o un botón que deniega una actualización del acceso a la ubicación en segundo plano