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 denunciar y verificar las interrupciones que encuentran. Entre los ejemplos de interrupciones, se incluyen accidentes automovilísticos, congestión de tráfico, presencia de policías 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 interrupciones 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 se pueden configurar 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. Cuando habilitas la capa de tráfico, las interrupciones fuera de la ruta también aparecen en el mapa. 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 automáticas cuando un usuario se acerca a una interrupción.

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

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

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

Si presionas un mensaje de interrupción, se abrirá una tarjeta de información con más detalles. Esto se aplica a las leyendas en la ruta y fuera de la ruta, aunque las leyendas fuera de la ruta solo aparecen si la capa de tráfico está habilitada. En la tarjeta, se muestra el tipo de interrupción, la hora en que se informó por última vez y, a veces, una opción para votar si la interrupción aún está presente. El tipo de tarjeta de información y sus opciones de configuración varían según si el usuario está en navegación activa.

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

Antes de iniciar la navegación activa, los usuarios pueden presionar una llamada en ruta o fuera de ruta en el mapa o en el resumen de la ruta para abrir una tarjeta de información. Las leyendas fuera de la ruta requieren que se habilite la capa de tráfico. La tarjeta de información proporciona más detalles sobre la interrupción.

Tarjeta de información general

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 llamadas durante la navegación activa

Durante la navegación activa, los usuarios pueden presionar un mensaje de interrupción en la ruta o fuera de ella para abrir una tarjeta de información. La tarjeta muestra el tipo de interrupción y la hora del último informe, y también incluye botones para que los usuarios voten si la interrupción aún está presente.

La votación está disponible para las interrupciones en la ruta y fuera de la ruta en un radio de 5 km del usuario, sin incluir los cierres de rutas. Google procesa estos votos para determinar si debe seguir mostrando la interrupción. Los votos también pueden aparecer en el mapa para otros usuarios de los SDKs de Google Maps y Navigation.

Tarjeta de información de navegación activa

Puedes controlar la visualización y la capacidad de respuesta a 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 aún está 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 la acción 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 los SDKs de Google Maps y Navigation.

Si se informa el cierre de una ruta, es posible que se presente una ruta alternativa para evitar el tramo bloqueado y se le solicite al usuario que confirme o rechace el cambio de ruta. Esta función está sujeta a disponibilidad.

Botón de informes 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 personalizados

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 denuncia personalizado, verifica que la app esté en navegación activa y que el usuario se encuentre en un país en el que la denuncia esté habilitada llamando a isIncidentReportingAvailable. Si no se cumple ninguna 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 la 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 la 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 agregando 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 tan pronto como 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)