Выберите платформу: Android iOS

Настройте сбои в реальном времени

Сбои в режиме реального времени — это набор функций, которые оповещают пользователей о сбоях на маршруте и позволяют им сообщать о сбоях и проверять их. Примерами сбоев являются аварии, пробки, присутствие полиции и камер контроля скорости, строительные работы, перекрытие полос движения и определенные погодные условия. На этой странице описаны функции оповещения о сбоях в режиме реального времени и варианты их настройки, включая рекомендации для приложений с пользовательскими навигационными интерфейсами.

Функции нарушения в реальном времени

В состав Navigation SDK входят следующие функции реагирования на нарушения в реальном времени, являющиеся частью основного навигационного опыта:

Эти функции можно настраивать, и они включены по умолчанию. В следующих разделах представлена ​​более подробная информация о функциях и доступных вариантах настройки.

Интерактивные предупреждения о нарушениях на маршрутах

Когда приложение отображает маршрут, будь то в обзоре маршрута или во время активной навигации, любые текущие нарушения отображаются в виде выносок вдоль маршрута. Выноски содержат значок, указывающий тип нарушения.

Выноски вдоль маршрутов

Вы можете управлять отображением предупреждений о нарушениях маршрута с помощью setTrafficPromptsEnabled , который также управляет отображением автоматических оповещений, когда пользователь приближается к нарушению маршрута .

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

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

Отображение информации о сбоях при нажатии пользователем на выноску

Пользователи могут нажать на выноску, чтобы отобразить информационную карточку с дополнительной информацией о сбое, включая тип сбоя, время последнего сообщения о нём и, в некоторых случаях, возможность проголосовать за то, сохраняется ли сбой. Существует два типа информационных карточек, которые могут отображаться в зависимости от того, находится ли пользователь в режиме активной навигации, и параметры настройки различаются для каждого типа.

Вызов информационных карточек на обзорах маршрутов перед началом активной навигации

Когда пользователь нажимает на выноску на обзоре маршрута, перед началом активной навигации появляется информационная карточка с более подробной информацией о нарушении.

Обзорная информационная карточка

С помощью setTrafficIncidentCardsEnabled вы можете контролировать возможность пользователей нажимать на уведомления о нарушениях на обзорах маршрутов для отображения дополнительной информации.

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

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

Вызов информационных карточек во время активной навигации

Когда во время активной навигации на маршруте появляется уведомление о нарушении, пользователи могут нажать на него, чтобы отобразить информационную карточку с дополнительной информацией о нарушении, включая тип нарушения и время последнего сообщения о нём, а также кнопки для голосования по вопросу о том, сохраняется ли нарушение. Голоса пользователей обрабатываются Google и могут быть отображены на карте для других пользователей Google Карт и Navigation SDK, а также использоваться для определения необходимости дальнейшего отображения нарушения.

Карточка активной навигационной информации

Вы можете управлять отображением и настраиваемостью уведомлений о помехах во время активной навигации с помощью setTrafficPromptsEnabled , который также управляет отображением уведомлений вдоль маршрутов и отображением автоматических оповещений, когда пользователь приближается к помехе .

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

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

Автоматические оповещения о нарушениях с голосованием во время активной навигации

Во время активной навигации, когда пользователь приближается к помехе на маршруте, появляется подсказка с информацией о помехе и кнопками для голосования по вопросу её наличия. Голоса пользователей обрабатываются Google и могут быть отображены на карте для других пользователей Google Maps и Navigation SDK, а также использоваться для определения необходимости дальнейшего отображения помехи.

Карточка активной навигационной информации

Настроить отображение предупреждающих подсказок во время активной навигации можно с помощью setTrafficPromptsEnabled , который также управляет отображением выносок вдоль маршрутов .

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

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

Сообщение об ошибках во время активной навигации

В режиме активной навигации в интерфейсе навигации появляется кнопка, позволяющая пользователям сообщать о новых нарушениях на маршруте. При нажатии кнопки открывается меню с доступными типами нарушений. Отчёты пользователей обрабатываются Google и могут отображаться на карте для других пользователей Google Maps и Navigation SDK.

Кнопка «Сообщить»Меню отчетов

Показать или скрыть стандартную кнопку отправки сообщений

Видимость стандартной кнопки отчета во время активной навигации можно настроить с помощью 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);

Добавить пользовательскую кнопку отправки отчетов

Вместо стандартной кнопки сообщения о сбоях вы можете добавить в навигационный интерфейс пользовательскую кнопку сообщения об ошибках. Когда пользователь нажимает на эту кнопку, можно вызвать отображение меню сообщений об ошибках, вызвав метод showReportIncidentsPanel . Перед добавлением пользовательской кнопки сообщения об ошибках убедитесь, что приложение находится в режиме активной навигации, а пользователь находится в стране, где сообщения об ошибках включены, вызвав isIncidentReportingAvailable . Если хотя бы одно из этих условий не выполняется, меню сообщений об ошибках не появится.

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

Работа с пользовательскими интерфейсами навигации

Если ваша реализация Navigation SDK включает в себя пользовательские элементы пользовательского интерфейса, вам необходимо учитывать элементы нарушения работы в реальном времени, чтобы избежать конфликтов.

Расположение кнопки отчета

По умолчанию кнопка сообщения о сбоях расположена в нижнем/заднем углу карты — справа для языков с написанием слева направо и слева для языков с написанием справа налево. Если вам нужно переместить кнопку сообщения о сбоях, чтобы освободить место для пользовательских элементов пользовательского интерфейса, добавьте пользовательский элемент управления BOTTOM_END_BELOW или FOOTER , который сдвинет кнопку вверх по экрану. Размещение собственных пользовательских элементов управления внутри пользовательских элементов управления также гарантирует, что любые подсказки, отображаемые Navigation SDK, будут правильно накладываться поверх ваших пользовательских элементов пользовательского интерфейса. Если вы не можете использовать пользовательские элементы управления, используйте API видимости подсказок для управления потенциальными конфликтами пользовательского интерфейса.

API быстрой видимости (экспериментальный)

API Prompt Visibility помогает избежать конфликтов между элементами пользовательского интерфейса, созданными Navigation SDK, и вашими собственными элементами пользовательского интерфейса, добавляя прослушиватель для получения обратного вызова перед появлением элемента пользовательского интерфейса Navigation SDK и сразу после его удаления. Вы можете получать обратные вызовы для элементов, отображаемых в режиме реального времени, включая информационные карточки, подсказки и меню сообщений о сбоях, а также для других уведомлений, создаваемых Navigation SDK.
// 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)