Optimiza el consumo de energía de tu app

En este documento, se describen las prácticas recomendadas para optimizar el consumo de energía en una app de navegación para dispositivos móviles que compilas con el SDK de Navigation. Al mismo tiempo, describe las compensaciones que se deben tener en cuenta cuando se emplean estas prácticas. En particular, en este documento, se abarca lo siguiente:

  • Fuentes de alto consumo de energía, clasificadas de mayor a menor
  • Estrategias para optimizar el consumo de energía, en orden de importancia, a partir de la velocidad de fotogramas.
  • Estrategias de usuarios finales para enseñar a los usuarios de tu app cómo administrar su uso del dispositivo mientras navegan.

¿Por qué debes optimizar tu app de navegación?

Según su situación, los usuarios de tu app pueden ejecutar guías de navegación durante períodos prolongados. Por ejemplo, los repartidores y los repartidores pueden trabajar largas horas y completar asignaciones en territorios desconocidos. En estos casos, dependen en gran medida de las indicaciones paso a paso que se ofrecen en la app. Esto genera algunos problemas habituales:

  • Agotamiento de la batería y disponibilidad de cargadores. El uso intensivo de la navegación puede hacer que las baterías del dispositivo se agoten más rápido de lo esperado. Si bien muchos usuarios pueden abordar esto cargando su dispositivo en el vehículo, los conductores de vehículos de dos ruedas no pueden hacerlo.
  • Limitación del dispositivo debido al calor Incluso los usuarios que cargan continuamente su dispositivo pueden experimentar problemas. El alto consumo de energía durante períodos prolongados puede hacer que el dispositivo se caliente, lo que resulta en un límite térmico y la posterior pérdida de rendimiento.

Las apps de navegación paso a paso dependen de funciones que consumen mucha energía, como la pantalla, el GPS y la comunicación por radio con torres de telefonía celular, por lo que se recomienda optimizar el consumo de energía de tu app para dispositivos móviles. Además, debes considerar las necesidades de consumo de energía de tu público objetivo para que puedas realizar las compensaciones adecuadas entre el rendimiento y la optimización del consumo de energía.

¿Qué consume más energía?

En esta sección, se dividen las actividades en la app asociadas con un alto consumo de energía en dos categorías:

  • Renderización de pantalla
  • Actualizaciones de ubicación

Renderización de pantalla

Por lo general, la renderización de pantalla genera el mayor consumo de energía en las apps de navegación para dispositivos móviles. Cada vez que el dispositivo dibuja un mapa y otros elementos de la IU en la pantalla, se basa en el procesamiento de la GPU y la CPU. Del mismo modo, cuando el usuario deja esa pantalla encendida durante mucho tiempo, también consume más energía.

En cierta medida, puedes esperar un alto consumo de energía de los conductores o pasajeros que confían en un mapa visible para navegar, en especial si usan la app de forma continua durante muchas horas. En este caso, la app también realiza una tasa de renderización más alta en la pantalla, ya que el mapa se actualiza en tiempo real. En algunos casos, la pantalla se puede volver a dibujar casi continuamente, en especial cuando el usuario conduce de una ubicación a otra sin parar.

Actualizaciones de ubicación

Además de la renderización de la pantalla, otras dos actividades de navegación consumen energía del dispositivo:

  • Torre de telefonía celular y uso de GPS
  • Actualizaciones y uso compartido de la ubicación, por ejemplo, para proporcionar una hora de llegada estimada o informar las posiciones de un vehículo en una flota.

El GPS y la comunicación de radio móvil dependen de operaciones de inicio que consumen mucha energía: el GPS debe encontrar satélites, y las radios móviles deben negociar con las torres y establecer una conexión. Por estos motivos, en esencia, se ejecutan de forma continua durante la navegación, aunque las radios móviles permanecen activas durante 20 a 30 segundos en un intento de minimizar los costos de inicio. El sistema operativo controla estos parámetros de configuración que no puedes establecer con facilidad en tu app.

Para las actualizaciones de ubicación, el uso de energía varía en función de factores impredecibles. Por ejemplo, la distancia entre el dispositivo y la estación de base de telefonía celular determina el uso de energía, ya que el dispositivo usará la señal mínima necesaria para continuar con la navegación y evitar cambiar de torres. Por lo tanto, un dispositivo que navegue en un área con mala conectividad consumirá más energía que uno que esté cerca de una estación base. Además, algunas apps pueden compartir actualizaciones de ubicación con un servicio de administración de flota central y, por lo tanto, necesitarán comunicarse con un servidor para lograrlo.

Optimiza el uso de energía de tu app

El desafío para optimizar el uso de energía en las apps de navegación es que estas dependen en gran medida de los recursos que consumen mucha energía, lo que limita las opciones para mitigar el impacto sin realizar desventajas, como restringir el uso de la pantalla. En esta sección, se proporciona una lista de los enfoques que puedes adoptar para optimizar tu app, en orden de impacto, de mayor a menor.

Cómo cambiar la velocidad de fotogramas

La pantalla actualiza lo que muestra a una frecuencia conocida como velocidad de fotogramas. La velocidad de fotogramas se suele medir en fotogramas por segundo (FPS). Como el procesamiento de la pantalla utiliza mucha CPU o GPU, puedes reducir la velocidad de fotogramas para ahorrar consumo de energía.

La compensación cuando se reduce la velocidad de fotogramas es que la renderización de la pantalla puede parecer menos fluida, en especial si el mapa se actualiza con frecuencia. Esto puede resultar más evidente cuando se acerca el mapa para mostrar un alto nivel de detalle, cuando el usuario viaja a alta velocidad o cuando cambia bastante la velocidad o la dirección.

En dispositivos iOS, el SDK de Maps para iOS expone la propiedad preferredFrameRate para controlar la velocidad de fotogramas. En la siguiente tabla, se muestran los valores de enumerador GMSFrameRate que puedes ajustar:

kGMSFrameRatePowerSave

Usa la velocidad de fotogramas mínima para conservar el uso de batería.

kGMSFrameRateConservative

Usar una velocidad de fotogramas mediana para lograr una renderización más fluida y conservar los ciclos de procesamiento

kGMSFrameRateMaximum

Usa la velocidad máxima de fotogramas de un dispositivo.

Para dispositivos de gama baja, es de 30 FPS. Para dispositivos de alta gama, es de 60 FPS.

Como referencia, consulta GMSFrameRate en la documentación del SDK de Google Navigation para iOS.

Si bien no puedes controlar cómo establece el usuario final el brillo de la pantalla de su dispositivo ni durante cuánto tiempo permanece encendida, puedes ofrecer una opción de guía de navegación sin un mapa. Esto permitiría al usuario final elegir esa opción para conservar energía. Por ejemplo, si los conductores trabajan regularmente en el mismo vecindario, es posible que no necesiten orientación basada en mapas con tanta frecuencia. Para habilitar la navegación sin un mapa, configura un destino y, luego, inicia la guía en el SDK de Navigation, pero no muestra un mapa.

Agrega una línea de código para ocultar GMSMapView:

mapView.isHidden = true

El SDK de Navigation seguirá actualizando las ubicaciones ajustadas de la ruta, la hora de llegada estimada y la distancia restante del viaje, y tu app podrá suscribirse a todos los eventos que genere el SDK a medida que el conductor avance. Esto no es apropiado para todos los casos de uso y, por supuesto, no es un buen consejo en los casos en los que el conductor necesita ver el mapa y seguir las indicaciones visuales. En las siguientes capturas de pantalla, se muestra una comparación en paralelo de cómo activar o desactivar las vistas de mapa durante la navegación activa.

App de demostración que se ejecuta con la vista de mapa visible
Figura 1: App de demostración para iOS del SDK de Navigation que muestra la demostración de Data Back
App de demostración que se ejecuta sin una vista de mapa visible.
Figura 2: App de demostración en ejecución sin una vista de mapa visible. Ten en cuenta que el tiempo y la distancia restantes, así como la ubicación ajustada a la ruta, se siguen actualizando.

Usa un diseño de mapa oscuro

Considera modificar el diseño del mapa para que use un tema oscuro a fin de reducir la cantidad de energía necesaria para renderizar el mapa en la pantalla.

El SDK de Navigation renderiza sus mapas con el SDK de Google Maps para iOS, que contiene opciones para definir el diseño de cualquier vista de mapa que no sea de navegación en tu app. La vista de navegación también admite forzar el modo oscuro. Es posible que no afecte de la misma manera a todos los dispositivos debido a las diferencias en el tipo de pantalla, pero permite un posible ahorro de energía en algunos casos. En un estudio reciente, se descubrió que la cantidad de energía que ahorra el modo oscuro en algunas pantallas depende del brillo inicial de la pantalla. Por ejemplo, el modo oscuro ahorra más energía en pantallas configuradas con brillo completo que en aquellas cuyo brillo ya se ajustó entre un 30% y un 50% del máximo. Es importante tener esto en cuenta cuando uses el modo oscuro en tus apps, ya que el ahorro de energía dependerá de cómo el usuario final establezca el brillo de la pantalla.

Si deseas obtener más información para modificar la IU de Navigation, consulta Cómo modificar la IU de navegación.

Captura de pantalla del SDK de Navigation que se ejecuta en un iPhone 15 Pro con un diseño de mapa oscuro.
Figura 3: SDK de Navigation configurado con un diseño de mapa oscuro
Configura tu GMSMapView con un mapID que represente un diseño de mapa basado en Cloud definido en tu proyecto.

El diseño de mapas basado en Cloud requiere un ID de mapa que represente una configuración de mapa del servidor que se creó en tu proyecto de Google Console. Si deseas obtener más información para crear un ID de mapa, consulta la documentación para desarrolladores sobre los IDs de mapa. Para obtener más detalles sobre el diseño y la implementación de un diseño de mapa basado en Cloud, consulta la documentación para desarrolladores sobre cómo crear y administrar diseños de mapas basados en Cloud.

Cambia la frecuencia de actualización de la ubicación del GPS

Cuando consideres el consumo de energía de las actualizaciones de ubicación enviadas desde el dispositivo, enfócate más en la frecuencia de las actualizaciones de ubicación que en la cantidad de datos que se envían en la transmisión.

No puedes controlar esto directamente en el SDK de Navigation. La misma recomendación se aplica para el uso de fuentes de ubicación que no sean GPS (datos móviles y Wi-Fi).

Informa a tus usuarios

Es posible que los usuarios de tu app quieran saber cómo optimizar su consumo de energía. Para ayudarlos a reducir el consumo de energía en sus apps, recomienda a los usuarios que hagan lo siguiente:

  • Bloquear el teléfono
  • Cómo poner la app de navegación en segundo plano
  • Si es posible, usa la navegación sin un mapa
  • Reduce el brillo de la pantalla, ya sea con el modo oscuro para pantallas OLED y AMOLED, o mediante la habilitación del brillo automático.
  • Mantén el dispositivo fresco
  • Conéctate a la red Wi-Fi del vehículo si está disponible

Mide el consumo de energía

Puedes usar herramientas de nivel profesional para medir el consumo de energía, pero su obtención suele ser difícil o costosa. Las apps y las herramientas de generación de perfiles de IDE, como el Generador de perfiles de energía en Android Studio y el panel Uso de batería de XCode Orchestrator, miden el consumo de energía, pero puede ser difícil quitar el efecto de los procesos en segundo plano o establecer un modelo de referencia de rendimiento contra el cual realizar mediciones. En algunos casos, las restricciones de dispositivos pueden impedir que se acceda a los datos necesarios.

Puedes usar un hardware de supervisión de energía con propósito especial y modificar la configuración de la conexión de la batería, y existen productos y servicios comerciales que te ayudarán. Ten en cuenta que modificar los dispositivos de esta manera puede anular la garantía del dispositivo.