Перед началом этих процедур убедитесь, что вы включили соответствующие службы и 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 v2.0.0 и более поздние версии поддерживают Maps SDK для Android v18.1.0 и более поздние версии. В следующей таблице приведены рендереры по умолчанию по версии Maps SDK и поддерживаемость обоих рендереров. Если возможно, используйте последний рендерер. Если вам необходимо использовать устаревший рендерер, явно укажите его с помощью MapsInitializer.initialize()
.
Версия SDK Карт | Поддерживает новейший рендерер | Поддерживает устаревший рендерер | Рендерер по умолчанию |
---|---|---|---|
V18.1.0 и ниже | Да | Да | Наследие* |
В18.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 . Статья также содержит примеры кода для исправления поставщика безопасности.