Перед началом этих процедур убедитесь, что вы включили соответствующие службы и Consumer SDK, как описано в предыдущих разделах.
Чтобы инициализировать Consumer SDK, выполните следующие действия:
Получить экземпляр ConsumerApi
Чтобы использовать Consumer SDK, вашему приложению необходимо асинхронно инициализировать синглтон-компонент ConsumerApi
. Метод инициализации использует класс AuthTokenFactory
для генерации новых JWT-токенов для пользователя при необходимости.
providerId
— это идентификатор вашего проекта Google Cloud. Подробнее о создании проекта Fleet Engine см. в разделе «Создание проекта Fleet Engine» руководства Fleet Engine.
Ваше приложение должно реализовывать AuthTokenFactory
, как описано в разделе Аутентификация Consumer SDK .
Ява
Task<ConsumerApi> consumerApiTask = ConsumerApi.initialize(
this, "myProviderId", authTokenFactory);
consumerApiTask.addOnSuccessListener(
consumerApi -> this.consumerApi = consumerApi);
Котлин
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 | Поддерживает последнюю версию рендерера | Поддерживает устаревший рендерер | Рендерер по умолчанию |
---|---|---|---|
V18.1.0 и ниже | Да | Да | Наследие* |
V18.2.0 | Да | Да | Последний |
* С выходом нового рендерера карт последний рендерер будет использоваться по умолчанию.
Если вам необходимо использовать предпочитаемый рендерер, выполняйте все операции рендеринга пользовательского интерфейса после того, как OnMapsSdkInitializedCallback
вернёт результат. Операции рендеринга пользовательского интерфейса включают следующие:
Расширение представления, содержащего
GoogleMapView
илиConsumerMapView
.Размещение маркеров на
ConsumerMapView
.
Если вы не выполните эти операции после получения результата OnMapsSdkInitializedCallback
, Maps SDK не выделит предпочитаемый вами рендерер, и вместо этого представление карты будет отображаться рендерером по умолчанию.
Инициализируйте Maps SDK перед инициализацией Consumer SDK
В классе вашего
Application
или запускаActivity
вызовите MapsInitializer.initialize()Дождитесь результата запроса рендерера, прежде чем инициализировать Consumer SDK.
Подробности смотрите в следующих примерах.
Ява
@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();
}
});
}
Котлин
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 см. в статье Security GMS Provider . Статья также содержит примеры кода для установки патча для поставщика безопасности.