Selecciona la plataforma: Android iOS

Cómo configurar interrupciones en tiempo real

Las interrupciones en tiempo real son un conjunto de funciones que alertan a los usuarios sobre las interrupciones en su ruta y les permiten informar y verificar las interrupciones que encuentran. Algunos ejemplos de interrupciones son accidentes automovilísticos, congestión de tráfico, presencia de la policía y radares de velocidad, construcciones, cierres de carriles y ciertas condiciones climáticas. En esta página, se explican las funciones de interrupciones en tiempo real y sus opciones de configuración, incluidas las consideraciones para las apps que usan IU de navegación personalizadas.

Funciones de interrupción en tiempo real

El SDK de Navigation incluye las siguientes funciones de interrupciones en tiempo real como parte de la experiencia de navegación principal:

Estas funciones son configurables y están habilitadas de forma predeterminada. En las siguientes secciones, se proporciona más información sobre las funciones y las opciones de configuración disponibles.

Avisos interactivos de interrupciones a lo largo de las rutas

Cuando una app muestra una ruta, ya sea en un resumen de la ruta o durante la navegación activa, las interrupciones actuales aparecen como llamadas a lo largo de la ruta. Los textos destacados incluyen un ícono que indica el tipo de interrupción.

Avisos en las rutas

Puedes controlar la visualización de los mensajes de interrupción a lo largo de las rutas con setTrafficPromptsEnabled, que también controla la visualización de alertas automatizadas cuando un usuario se acerca a una interrupción.

// Using the SupportNavigationFragment
mNavFragment.setTrafficPromptsEnabled(true);

// Using the NavigationView
navigationView.setTrafficPromptsEnabled(true);

Mostrar detalles de la interrupción cuando un usuario presiona una llamada

Los usuarios pueden presionar una llamada para mostrar una tarjeta de información con más detalles sobre la interrupción, como el tipo, la hora en que se reportó por última vez y, en algunos casos, una opción para votar si la interrupción aún está presente. Existen dos tipos diferentes de tarjetas de información que pueden aparecer, según si el usuario está en navegación activa, y las opciones de configuración varían para cada tipo.

Tarjetas de información de llamadas en las vistas generales de la ruta, antes de iniciar la navegación activa

Cuando un usuario presiona una llamada en un resumen de la ruta antes de iniciar la navegación activa, aparece una tarjeta de información con más detalles sobre la interrupción.

Tarjeta de información de resumen

Puedes controlar la capacidad de los usuarios para presionar los avisos de interrupciones en los resúmenes de rutas y mostrar más información con setTrafficIncidentCardsEnabled.

// Using the SupportNavigationFragment
mNavFragment.setTrafficIncidentCardsEnabled(true);

// Using the NavigationView
navigationView.setTrafficIncidentCardsEnabled(true);

Tarjetas de información de texto destacado durante la navegación activa

Cuando aparece un texto destacado de interrupción a lo largo de una ruta durante la navegación activa, los usuarios pueden presionarlo para mostrar una tarjeta de información con más detalles sobre la interrupción, incluido el tipo y la hora en que se informó por última vez, así como botones para votar si la interrupción sigue presente. Google procesa los votos que envían los usuarios y es posible que se muestren en el mapa para otros usuarios de Google Maps y del SDK de Navigation, además de usarse para determinar si se debe seguir mostrando la interrupción.

Tarjeta de información de navegación activa

Puedes controlar la visualización y la capacidad de presionar los avisos de interrupciones durante la navegación activa con setTrafficPromptsEnabled, que también controla la visualización de avisos a lo largo de las rutas y la visualización de alertas automatizadas cuando un usuario se acerca a una interrupción.

// Using the SupportNavigationFragment
mNavFragment.setTrafficPromptsEnabled(true);

// Using the NavigationView
navigationView.setTrafficPromptsEnabled(true);

Alertas de interrupciones automatizadas con votación durante la navegación activa

Durante la navegación activa, cuando un usuario se acerca a una interrupción en una ruta, aparece un mensaje con información sobre la interrupción y botones para votar si la interrupción sigue presente. Google procesa los votos que envían los usuarios y es posible que se muestren en el mapa para otros usuarios de Google Maps y del SDK de Navigation, además de que se usan para determinar si se debe seguir mostrando la interrupción.

Tarjeta de información de navegación activa

Puedes configurar la visualización de mensajes de alerta durante la navegación activa con setTrafficPromptsEnabled, que también controla la visualización de llamadas a lo largo de las rutas.

// Using the SupportNavigationFragment
mNavFragment.setTrafficPromptsEnabled(true);

// Using the NavigationView
navigationView.setTrafficPromptsEnabled(true);

Informes de interrupciones durante la navegación activa

Durante el modo de navegación activa, aparece un botón en la IU de navegación que permite a los usuarios informar sobre nuevas interrupciones en su ruta. Cuando un usuario presiona el botón, aparece un menú con los tipos de interrupciones disponibles para informar. Google procesa los informes que envían los usuarios y es posible que se muestren en el mapa para otros usuarios de Google Maps y del SDK de Navigation.

Botón para denunciar Menú de informes

Cómo mostrar u ocultar el botón de informes estándar

Puedes configurar la visibilidad del botón de informes estándar durante la navegación activa con setReportIncidentButtonEnabled.

// Enables the incident reporting button to show in situations where incident
// reporting is possible.

// Using the SupportNavigationFragment
mNavFragment.setReportIncidentButtonEnabled(true);

// Using the NavigationView
navigationView.setReportIncidentButtonEnabled(true);

Agrega un botón de informes personalizado

En lugar del botón estándar para informar interrupciones, puedes agregar un botón personalizado a la IU de navegación. Cuando el usuario hace clic en el botón personalizado, puedes activar la visualización del menú de informes llamando al método showReportIncidentsPanel. Antes de agregar un botón de informes personalizado, verifica que la app esté en navegación activa y que el usuario se encuentre en un país en el que los informes estén habilitados llamando a isIncidentReportingAvailable. Si no se cumple alguna de estas condiciones, no aparecerá el menú de informes.

  Button customReportIncidentButton = findViewById(R.id.custom_reporting_button);
  
  // Check if reporting is available before displaying your button
  customReportIncidentButton.setVisibility(
      navigationView.isReportingAvailable ? View.VISIBLE : View.GONE);
  
  // Trigger the reporting flow if the button is clicked
  customReportIncidentButton.setOnClickListener(v ->
      navigationView.showReportIncidentsPanel());
  

Trabaja con IU de navegación personalizadas

Si tu implementación del SDK de Navigation incluye elementos de IU personalizados, debes tener en cuenta los elementos de interrupción en tiempo real para evitar conflictos.

Posicionamiento del botón de denuncia

De forma predeterminada, el botón para informar interrupciones se ubica en el extremo inferior o en la esquina final del mapa, a la derecha para los idiomas que se leen de izquierda a derecha y a la izquierda para los idiomas que se leen de derecha a izquierda. Si necesitas mover el botón de informes para dejar espacio para elementos de IU personalizados, agrega un control personalizado BOTTOM_END_BELOW o FOOTER, que desplazará la posición del botón hacia arriba en la pantalla. Colocar tus propias IU personalizadas dentro de los controles personalizados también garantiza que cualquier mensaje que muestre el SDK de Navigation se superponga correctamente sobre tus elementos de IU personalizados mientras se muestran. Si no puedes usar controles personalizados, usa la API de Prompt Visibility para administrar posibles conflictos de la IU.

API de Prompt Visibility (experimental)

La API de Prompt Visibility te ayuda a evitar conflictos entre los elementos de la IU generados por el SDK de Navigation y tus propios elementos de la IU personalizados. Para ello, agrega un objeto de escucha para recibir una devolución de llamada antes de que aparezca un elemento de la IU del SDK de Navigation y en cuanto se quite el elemento. Puedes recibir devoluciones de llamada para los elementos de interrupción en tiempo real, incluidas las tarjetas de información, los mensajes y el menú de informes de interrupciones, así como para otras notificaciones que genera el SDK de Navigation.
// Sample listener
val listener: PromptVisibilityChangedListener = { isVisible ->
	if (isVisible) {
		customFab.visibility = false
		customFooter.visibility = false
		moveSomeOtherThingsAround()
	} else {
		customFab.visibility = true
		customFooter.visibility = true
		moveSomeThingsBackToWhereTheyWereBefore()
	}
}

// Inside onCreate()
navigationView.addPromptVisibilityChangedListener(listener)

// Inside onDestroy()
navigationView.removePromptVisibilityChangedListener(listener)