Как настроить оповещения о сбоях в реальном времени
Функции, связанные с помехами на дорогах в реальном времени, позволяют пользователям узнавать о проблемах на маршруте, а также сообщать о них и подтверждать их наличие. Примеры помех: ДТП, пробки, полицейские посты, камеры фиксации скорости, дорожные работы, перекрытие полос и определенные погодные условия. На этой странице рассказывается о функциях, связанных с помехами на дороге в реальном времени, и их настройке, в том числе в приложениях с собственным интерфейсом навигации.
Функции для оповещения о сбоях в реальном времени
В 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);
Информационные карточки во время активной навигации
Во время навигации пользователи могут нажать на выноску с информацией о происшествии на маршруте или за его пределами, чтобы открыть информационную карточку. На карточке указан тип проблемы и время, когда о ней сообщили в последний раз. Также на ней есть кнопки, с помощью которых пользователи могут проголосовать, актуальна ли ещё проблема.
Голосовать можно за события на маршруте и вне его в пределах 5 км от пользователя, за исключением перекрытых участков. Google обрабатывает эти голоса, чтобы определить, нужно ли продолжать показывать информацию о сбое. Голоса также могут показываться на карте другим пользователям Google Карт и Navigation SDK.
Вы можете управлять показом и возможностью нажатия на выноски с информацией о дорожных происшествиях во время активной навигации с помощью setTrafficPromptsEnabled. Этот метод также управляет показом выносок на маршрутах и показом автоматических оповещений, когда пользователь приближается к месту происшествия.
// Using the SupportNavigationFragment mNavFragment.setTrafficPromptsEnabled(true); // Using the NavigationView navigationView.setTrafficPromptsEnabled(true);
Автоматические оповещения о проблемах на дорогах с возможностью голосования во время навигации
Во время активной навигации, когда пользователь приближается к препятствию на маршруте, появляется подсказка с информацией о препятствии и кнопками для голосования о том, присутствует ли оно по-прежнему. Google обрабатывает голоса пользователей и может показывать их на карте другим пользователям Google Карт и Navigation SDK, а также использовать их, чтобы определить, нужно ли продолжать показывать информацию о дорожном событии.
Вы можете настроить показ предупреждений во время активной навигации с помощью setTrafficPromptsEnabled, который также управляет показом выносок вдоль маршрутов.
// Using the SupportNavigationFragment mNavFragment.setTrafficPromptsEnabled(true); // Using the NavigationView navigationView.setTrafficPromptsEnabled(true);
Сообщения о проблемах во время навигации
В режиме навигации в интерфейсе появляется кнопка, с помощью которой пользователи могут сообщать о новых проблемах на маршруте. Когда пользователь нажимает на кнопку, появляется меню с доступными типами сбоев, о которых можно сообщить. Сообщения, отправленные пользователями, обрабатываются Google и могут показываться на карте другим пользователям Google Карт и 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, будут правильно накладываться на ваши пользовательские элементы интерфейса во время отображения. Если вы не можете использовать собственные элементы управления, используйте Prompt Visibility API, чтобы управлять потенциальными конфликтами пользовательского интерфейса.
Prompt Visibility API (экспериментальная функция)
Prompt Visibility API помогает избежать конфликтов между элементами интерфейса, созданными 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)