Seleziona piattaforma: Android iOS

Configurare i disservizi in tempo reale

I disservizi in tempo reale sono un insieme di funzionalità che avvisano gli utenti dei disservizi lungo il loro percorso e consentono loro di segnalare e verificare i disservizi che incontrano. Esempi di interruzioni includono incidenti stradali, congestione del traffico, presenza di polizia e autovelox, lavori in corso, chiusure di corsie e determinate condizioni meteorologiche. Questa pagina descrive le funzionalità di interruzione in tempo reale e le relative opzioni di configurazione, inclusi i fattori da considerare per le app che utilizzano UI di navigazione personalizzate.

Funzionalità di interruzione in tempo reale

L'SDK Navigation include le seguenti funzionalità di interruzione in tempo reale nell'ambito dell'esperienza di navigazione principale:

Queste funzionalità sono configurabili e attive per impostazione predefinita. Le sezioni seguenti forniscono ulteriori informazioni sulle funzionalità e sulle opzioni di configurazione disponibili.

Avvisi interattivi di interruzioni lungo i percorsi

Quando un'app mostra un percorso, in una panoramica del percorso o durante la navigazione attiva, eventuali interruzioni correnti vengono visualizzate come fumetti lungo il percorso. I callout includono un'icona che indica il tipo di interruzione.

Callout lungo i percorsi

Puoi controllare la visualizzazione dei callout relativi ai disservizi lungo i percorsi utilizzando setTrafficPromptsEnabled, che controlla anche la visualizzazione degli avvisi automatici quando un utente si avvicina a un disservizio.

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

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

Mostrare i dettagli dell'interruzione quando un utente tocca una bolla

Gli utenti possono toccare un callout per visualizzare una scheda informativa con maggiori dettagli sul disservizio, tra cui il tipo di disservizio, l'ora dell'ultima segnalazione e, in alcuni casi, un'opzione per votare se il disservizio è ancora presente. A seconda che l'utente stia navigando attivamente o meno, possono essere visualizzati due diversi tipi di schede informative e le opzioni di configurazione variano per ogni tipo.

Schede informative dei callout nelle panoramiche del percorso, prima di avviare la navigazione attiva

Quando un utente tocca un callout nella panoramica di un percorso, prima di avviare la navigazione attiva, viene visualizzata una scheda informativa con ulteriori informazioni sul disservizio.

Scheda informativa Panoramica

Puoi controllare la possibilità degli utenti di toccare i callout di interruzione negli itinerari per visualizzare ulteriori informazioni utilizzando setTrafficIncidentCardsEnabled .

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

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

Schede informative dei callout durante la navigazione attiva

Quando viene visualizzata una notifica di interruzione lungo un percorso durante la navigazione attiva, gli utenti possono toccarla per visualizzare una scheda informativa con maggiori dettagli sull'interruzione, tra cui il tipo di interruzione e l'ora dell'ultima segnalazione, nonché pulsanti per votare se l'interruzione è ancora presente. I voti inviati dagli utenti vengono elaborati da Google e potrebbero essere visualizzati sulla mappa per altri utenti di Google Maps e dell'SDK Navigation, nonché utilizzati per determinare se continuare a mostrare l'interruzione.

Scheda informativa sulla navigazione attiva

Puoi controllare la visualizzazione e la possibilità di toccare i callout relativi ai disservizi durante la navigazione attiva utilizzando setTrafficPromptsEnabled , che controlla anche la visualizzazione dei callout lungo i percorsi e la visualizzazione degli avvisi automatici quando un utente si avvicina a un disservizio.

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

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

Avvisi automatici di interruzioni con votazione durante la navigazione attiva

Durante la navigazione attiva, quando un utente si avvicina a un problema lungo un percorso, viene visualizzato un prompt con informazioni sul problema e pulsanti per votare se il problema è ancora presente. I voti inviati dagli utenti vengono elaborati da Google e potrebbero essere visualizzati sulla mappa per altri utenti di Google Maps e dell'SDK Navigation, nonché utilizzati per determinare se continuare a mostrare l'interruzione.

Scheda informativa sulla navigazione attiva

Puoi configurare la visualizzazione dei prompt di avviso durante la navigazione attiva utilizzando setTrafficPromptsEnabled , che controlla anche la visualizzazione dei callout lungo i percorsi.

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

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

Segnalazione di interruzioni durante la navigazione attiva

Durante la modalità di navigazione attiva, nell'interfaccia utente di navigazione viene visualizzato un pulsante che consente agli utenti di segnalare nuovi disagi lungo il percorso. Quando un utente tocca il pulsante, viene visualizzato un menu con i tipi di interruzione disponibili da segnalare. Le segnalazioni inviate dagli utenti vengono elaborate da Google e potrebbero essere visualizzate sulla mappa per altri utenti di Google Maps e dell'SDK Navigation.

Pulsante Segnala Menu Segnalazione

Mostrare o nascondere il pulsante per la segnalazione standard

Puoi configurare la visibilità del pulsante dei report standard durante la navigazione attiva utilizzando 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);

Aggiungere un pulsante di segnalazione personalizzato

Al posto del pulsante standard per la segnalazione di interruzioni, puoi aggiungere un pulsante di segnalazione personalizzato all'interfaccia utente di navigazione. Quando l'utente fa clic sul pulsante personalizzato, puoi attivare la visualizzazione del menu di segnalazione chiamando il metodo showReportIncidentsPanel. Prima di aggiungere un pulsante di segnalazione personalizzato, verifica che l'app sia in navigazione attiva e che l'utente si trovi in un paese in cui la segnalazione è abilitata chiamando isIncidentReportingAvailable. Se una di queste condizioni non è vera, il menu dei report non verrà visualizzato.

  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());
  

Utilizzare interfacce utente di navigazione personalizzate

Se l'implementazione dell'SDK Navigation include elementi UI personalizzati, devi prendere in considerazione gli elementi di interruzione in tempo reale per evitare conflitti.

Posizionamento del pulsante di segnalazione

Per impostazione predefinita, il pulsante per la segnalazione di disservizi si trova nell'angolo finale/posteriore della mappa, sul lato destro per le lingue con direzione da sinistra a destra e sul lato sinistro per le lingue con direzione da destra a sinistra. Se devi spostare il pulsante di segnalazione per fare spazio a elementi UI personalizzati, aggiungi un controllo personalizzato BOTTOM_END_BELOW o FOOTER, che sposterà la posizione del pulsante verso l'alto dello schermo. L'inserimento delle tue UI personalizzate all'interno dei controlli personalizzati garantisce inoltre che le richieste visualizzate dall'SDK Navigation vengano sovrapposte correttamente agli elementi della UI personalizzata durante la visualizzazione. Se non riesci a utilizzare i controlli personalizzati, utilizza l'API Prompt Visibility per gestire potenziali conflitti dell'interfaccia utente.

API Prompt Visibility (sperimentale)

L'API Prompt Visibility ti aiuta a evitare conflitti tra gli elementi UI generati dall'SDK Navigation e i tuoi elementi UI personalizzati aggiungendo un listener per ricevere un callback prima che un elemento UI dell'SDK Navigation stia per essere visualizzato e non appena l'elemento viene rimosso. Puoi ricevere callback per gli elementi di interruzione in tempo reale, tra cui schede informative, prompt e il menu di segnalazione dell'interruzione, nonché per altre notifiche generate dall'SDK 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)