Как инициализировать Consumer SDK

Прежде чем выполнять эти процедуры, убедитесь, что вы включили нужные сервисы и Consumer SDK, как описано в предыдущих разделах.

Чтобы инициализировать Consumer SDK, выполните следующие действия:

  1. Получение экземпляра ConsumerAPI
  2. Инициализация Maps SDK для запроса предпочтительного средства визуализации

Получить экземпляр ConsumerApi

Чтобы использовать Consumer SDK, вашему приложению необходимо асинхронно инициализировать синглтон ConsumerApi. Метод инициализации использует класс AuthTokenFactory, чтобы при необходимости генерировать новые токены JWT для пользователя.

providerId – это идентификатор проекта вашего облачного проекта Google Cloud. Подробную информацию о создании проекта Fleet Engine можно найти в руководстве по Fleet Engine.

В приложении должен быть реализован AuthTokenFactory, как описано в разделе Аутентификация Consumer SDK.

Java

Task<ConsumerApi> consumerApiTask = ConsumerApi.initialize(
    this, "myProviderId", authTokenFactory);

consumerApiTask.addOnSuccessListener(
  consumerApi -> this.consumerApi = consumerApi);

Kotlin

val consumerApiTask =
  ConsumerApi.initialize(this, "myProviderId", authTokenFactory)

consumerApiTask?.addOnSuccessListener { consumerApi: ConsumerApi ->
  this@YourActivity.consumerApi = consumerApi
}

Maps SDK и средства отрисовки карт

Consumer SDK версии 2.0.0 и более поздних поддерживает Maps SDK для Android версии 18.1.0 и более поздних. В таблице ниже указано, какое средство отрисовки используется по умолчанию в разных версиях Maps SDK, и приведены сведения о поддержке обоих средств. По возможности используйте последнюю версию средства отрисовки. Если вам нужно использовать прежнее средство отрисовки, явно укажите его с помощью MapsInitializer.initialize().

Версия Maps SDK Поддержка новейшего средства отрисовки Поддержка устаревшего средства визуализации Обработчик по умолчанию
18.1.0 и более ранние версии Да Да Устаревшие*
V18.2.0 Да Да Новые

* С выпуском нового средства отрисовки карт по умолчанию будет использоваться последняя версия.

Если вам необходимо использовать предпочтительный рендерер, выполняйте все операции по отрисовке пользовательского интерфейса после того, как OnMapsSdkInitializedCallback вернет результат. К операциям отрисовки интерфейса относятся следующие:

  • Развертывание представления, содержащего GoogleMapView или ConsumerMapView.

  • Размещение маркеров на ConsumerMapView.

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

Инициализируйте Maps SDK перед инициализацией Consumer SDK

  1. В классе Application или классе запуска Activity вызовите метод MapsInitializer.initialize().

  2. Дождитесь результата запроса средства визуализации, прежде чем инициализировать Consumer SDK.

Подробные сведения приведены в примерах ниже.

Java

@Override
protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.main);
  initViews();

  MapsInitializer.initialize(getApplicationContext(), Renderer.LATEST,
      new OnMapsSdkInitializedCallback() {
        @Override
        public void onMapsSdkInitialized(Renderer renderer) {
          switch (renderer) {
            case LATEST:
              Log.i("maps_renderer", "LATEST renderer");
              break;
            case LEGACY:
              Log.i("maps_renderer", "LEGACY renderer");
              break;
          }

          initializeConsumerSdk();
        }
      });
}

Kotlin

fun onCreate(savedInstanceState: Bundle?) {
  super.onCreate(savedInstanceState)
  setContentView(R.layout.main)
  initViews()

  MapsInitializer.initialize(
    getApplicationContext(), Renderer.LATEST,
    object : OnMapsSdkInitializedCallback() {
      fun onMapsSdkInitialized(renderer: Renderer?) {
        when (renderer) {
          LATEST -> Log.i("maps_renderer", "LATEST renderer")
          LEGACY -> Log.i("maps_renderer", "LEGACY renderer")
        }
        initializeConsumerSdk()
      }
    })
  }

Примечания по SSL/TLS

Внутренняя реализация Consumer SDK использует SSL/TLS для безопасного обмена данными с сервисом Fleet Engine. Для связи с сервером в Android API версии 23 или более ранней может потребоваться исправление SecurityProvider. Дополнительную информацию о работе с SSL в Android можно найти в статье Поставщик услуг безопасности GMS. В статье также приведены примеры кода для обновления поставщика услуг безопасности.

Дальнейшие действия

Как настроить карту