Consumer SDK を初期化する

これらの手順を開始する前に、前のセクションで説明したように、適切なサービスと Consumer SDK が有効になっていることを確認してください。

Consumer SDK を初期化する手順は次のとおりです。

  1. ConsumerAPI インスタンスを取得する
  2. 優先レンダラをリクエストするように Maps SDK を初期化する

ConsumerApi インスタンスを取得する

Consumer SDK を使用するには、アプリでシングルトン ConsumerApi を非同期で初期化する必要があります。初期化メソッドは AuthTokenFactory クラスを受け取り、必要に応じてユーザーの新しい JWT トークンを生成します。

providerId は、Google Cloud プロジェクトのプロジェクト ID です。Fleet Engine プロジェクトの作成の詳細については、Fleet Engine ガイドのFleet Engine プロジェクトを作成するをご覧ください。

アプリは、Consumer 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 と地図レンダラ

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 が結果を返したに、すべての UI レンダリング オペレーションを実行します。UI レンダリング オペレーションには、次のオペレーションが含まれます。

  • GoogleMapView または ConsumerMapView を含むビューをインフレートする。

  • ConsumerMapView にマーカーを配置する。

OnMapsSdkInitializedCallback の結果を受け取った後にこれらのオペレーションを実行しない場合、Maps SDK は優先レンダラを割り当てず、代わりにデフォルトのレンダラで地図ビューがレンダリングされます。

Consumer SDK を初期化する前に Maps 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 プロバイダをご覧ください。この記事には、セキュリティ プロバイダにパッチを適用するためのコードサンプルも含まれています。

次のステップ

地図を設定する