初始化使用方 SDK

在开始执行这些步骤之前,请确保您已按照前面部分中的说明启用适当的服务和使用方 SDK。

如需初始化 Consumer SDK,请按以下步骤操作:

  1. 获取 ConsumerAPI 实例
  2. 初始化 Maps SDK 以请求首选渲染程序

获取 ConsumerApi 实例

如需使用 Consumer SDK,您的应用需要异步初始化单例 ConsumerApi。初始化方法会使用 AuthTokenFactory 类在必要时为用户生成新的 JWT 令牌。

providerId 是您的 Google Cloud 项目的项目 ID。如需详细了解如何创建 Fleet Engine 项目,请参阅 Fleet Engine 指南中的创建 Fleet Engine 项目

您的应用应按照消费者 SDK 身份验证中所述实现 AuthTokenFactory

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 和地图渲染程序

消费者 SDK v2.0.0 及更高版本支持 Maps SDK for Android v18.1.0 及更高版本。下表总结了按 Maps SDK 版本的默认渲染程序,以及这两种渲染程序的可支持性。如果可能,请使用最新的渲染程序。如果您必须使用旧版渲染程序,请使用 MapsInitializer.initialize() 明确指定它。

Maps SDK 版本 支持最新的渲染程序 支持旧版渲染程序 默认渲染程序
v18.1.0 及更低版本 旧版*
V18.2.0 最新

* 随着新版 Google 地图渲染程序的发布,最新版渲染程序将成为默认渲染程序。

如果您必须使用首选渲染程序,请在 OnMapsSdkInitializedCallback 返回结果运行所有界面渲染操作。界面渲染操作包括以下操作:

  • 膨胀包含 GoogleMapViewConsumerMapView 的视图。

  • 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 补丁才能与服务器通信。如需详细了解如何在 Android 中使用 SSL,请参阅 Security GMS Provider。本文还包含用于修补安全提供程序的代码示例。

后续步骤

设置地图