在开始执行这些程序之前,请确保您已按照前几部分中的说明启用相应服务和 Consumer SDK。
如需初始化 Consumer SDK,请按以下步骤操作:
获取 ConsumerApi
实例
如需使用 Consumer SDK,您的应用需要异步初始化单例 ConsumerApi
。初始化方法采用 AuthTokenFactory
类,以便在必要时为用户生成新的 JWT 令牌。
providerId
是您的 Google Cloud 项目的项目 ID。如需详细了解如何创建 Fleet Engine 项目,请参阅 Fleet Engine 指南中的创建 Fleet Engine 项目。
您的应用应实现 AuthTokenFactory
(如消费者 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 v2.0.0 及更高版本支持 Maps SDK for Android v18.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 之前,等待渲染器请求结果。
如需了解详情,请参阅以下示例。
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
补丁才能与服务器通信。如需详细了解如何在 Android 中使用 SSL,请参阅 Security GMS Provider。
本文还包含用于修补安全提供程序的代码示例。