Настройте сбои в режиме реального времени
Сбои в режиме реального времени — это набор функций, которые оповещают пользователей о сбоях на их маршруте и позволяют пользователям сообщать и проверять сбои, с которыми они сталкиваются. Примерами сбоев являются аварии на дорогах, заторы на дорогах, присутствие полиции и камер контроля скорости, строительные работы, перекрытия полос и определенные погодные условия. На этой странице объясняются функции сбоев в режиме реального времени и параметры их конфигурации, включая рекомендации для приложений, использующих пользовательские интерфейсы навигации.
Функции обнаружения сбоев в режиме реального времени
В состав Navigation SDK входят следующие функции реагирования в реальном времени как часть основного навигационного опыта:- Интерактивные предупреждения о нарушениях на маршрутах .
- Автоматические оповещения о нарушениях с голосованием во время активной навигации .
- Отчеты о сбоях в работе во время активной навигации .
Эти функции настраиваются и включены по умолчанию. В следующих разделах представлена дополнительная информация о функциях и доступных параметрах конфигурации.
Интерактивные предупреждения о нарушениях на маршрутах
Когда приложение отображает маршрут, либо в обзоре маршрута, либо во время активной навигации, любые текущие сбои отображаются в виде выносок вдоль маршрута. Выноски включают значок, который указывает тип сбоя.

Вы можете управлять отображением предупреждений о сбоях на маршрутах с помощью shouldDisplayPrompts
, который также управляет отображением автоматических оповещений, когда пользователь приближается к сбою .
mapView.navigator.shouldDisplayPrompts = true
Отображение сведений о сбоях, когда пользователь нажимает на выноску
Пользователи могут нажать на выноску, чтобы отобразить информационную карточку с дополнительной информацией о сбое, включая тип сбоя, время последнего сообщения о нем и, в некоторых случаях, возможность проголосовать за то, сохраняется ли сбой. Существует два разных типа информационных карточек, которые могут отображаться в зависимости от того, находится ли пользователь в режиме активной навигации, и параметры конфигурации различаются для каждого типа.
Вызов информационных карточек на обзорах маршрутов перед началом активной навигации
Когда пользователь нажимает на выноску на обзоре маршрута, перед началом активной навигации появляется информационная карточка с дополнительной информацией о нарушении.

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

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

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


Видимость кнопки сообщения об инциденте во время активной навигации можно настроить с помощью navigationReportIncidentButtonEnabled
.
// Enables the incident reporting FAB to show in situations where incident // reporting is possible. mapView.settings.navigationReportIncidentButtonEnabled = true
Работа с пользовательскими интерфейсами навигации
Если ваша реализация Navigation SDK включает в себя пользовательские элементы пользовательского интерфейса, вам необходимо учитывать элементы нарушения работы в реальном времени, чтобы избежать конфликтов.
Расположение кнопки отчета
По умолчанию кнопка сообщения о сбоях расположена в нижнем конце/заднем углу карты — справа для языков с письмом слева направо и слева для языков с письмом справа налево. Если вам нужно переместить кнопку сообщения, чтобы освободить место для пользовательских элементов пользовательского интерфейса, используйтеbottomTrailingButtonsLayoutGuide
.Быстрый
// Create a new layout guide let topRightLayoutGuide = UILayoutGuide() self.view.addLayoutGuide(topRightLayoutGuide) // Activate constraints using fixed constants here as an example // assuming the current reporting button is of fixed height topRightLayoutGuide.topAnchor.constraint(equalTo: _mapView.navigationHeaderLayoutGuide.bottomAnchor, constant: 50).isActive = true topRightLayoutGuide.trailingAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.trailingAnchor, constant: -14).isActive = true // Assign the layout guide _mapView.bottomTrailingButtonsLayoutGuide = topRightLayoutGuide // Create an alternate layout guide to use when the header and the footer are not full width let topRightAlternateLayoutGuide = UILayoutGuide() self.view.addLayoutGuide(topRightAlternateLayoutGuide) // Activate constraints using fixed constants here as an example // assuming the current RTD button is of fixed height topRightAlternateLayoutGuide.topAnchor.constraint(equalTo: _mapView.navigationHeaderLayoutGuide.bottomAnchor, constant: 20).isActive = true topRightAlternateLayoutGuide.trailingAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.trailingAnchor, constant: -10).isActive = true // Assign the layout guide _mapView.bottomTrailingButtonsAlternateLayoutGuide = topRightAlternateLayoutGuide
Objective-C
// Create a new layout guide UILayoutGuide *topRightLayoutGuide = [[UILayoutGuide alloc] init]; [self.view addLayoutGuide:topRightLayoutGuide]; // Activate constraints using fixed constants here as an example // assuming the current RTD button is of fixed height [[topRightLayoutGuide.topAnchor constraintEqualToAnchor:_mapView.navigationHeaderLayoutGuide.bottomAnchor constant:50] setActive:YES]; [[topRightLayoutGuide.trailingAnchor constraintEqualToAnchor:self.view.safeAreaLayoutGuide.trailingAnchor constant:-14] setActive:YES]; // Assign the layout guide _mapView.bottomTrailingButtonsLayoutGuide = topRightLayoutGuide; // Create an alternate layout guide to use when the header and the footer are not full width UILayoutGuide *topRightAlternateLayoutGuide = [[UILayoutGuide alloc] init]; [self.view addLayoutGuide:topRightAlternateLayoutGuide]; // Activate constraints using fixed constants here as an example // assuming the current RTD button is of fixed height [[topRightAlternateLayoutGuide.topAnchor constraintEqualToAnchor:_mapView.navigationHeaderLayoutGuide.bottomAnchor constant:50] setActive:YES]; [[topRightAlternateLayoutGuide.trailingAnchor constraintEqualToAnchor:self.view.safeAreaLayoutGuide.trailingAnchor constant:-14] setActive:YES]; // Assign the layout guide _mapView.bottomTrailingButtonsAlternateLayoutGuide = topRightAlternateLayoutGuide;
API быстрой видимости (экспериментальный)
API Prompt Visibility помогает избегать конфликтов между элементами пользовательского интерфейса, сгенерированными Navigation SDK, и вашими собственными пользовательскими элементами пользовательского интерфейса, добавляя слушателя для получения обратного вызова до того, как элемент пользовательского интерфейса Navigation SDK появится, и как только элемент будет удален. Вы можете получать обратные вызовы для элементов сбоев в реальном времени, включая информационные карточки, подсказки и меню отчетов о сбоях, а также для других уведомлений, сгенерированных Navigation SDK.Быстрый
// Additional methods added to GMSNavigatorListener ... func navigatorWillPresentPrompt(_ navigator: GMSNavigator) { // Hide any sort of custom UI element. } func navigatorDidDismissPrompt(_ navigator: GMSNavigator) { // Show any sort of custom UI element. } ...
Objective-C
// Additional methods added to GMSNavigatorListener ... - (void)navigatorWillPresentPrompt:(GMSNavigator *)navigator { // Hide any sort of custom UI element. } - (void)navigatorDidDismissPrompt:(GMSNavigator *)navigator { // Show any sort of custom UI element. } ...