Inicializar o SDK do consumidor

Antes de iniciar esses procedimentos, verifique se você ativou os serviços adequados e o SDK do consumidor, conforme descrito nas seções anteriores.

Para inicializar o SDK do consumidor, siga estas etapas:

  1. Acessar a instância ConsumerAPI
  2. Inicializar o SDK do Maps para solicitar o renderizador preferido

Acessar a instância ConsumerApi

Para usar o SDK do consumidor, seu app precisa inicializar o singleton ConsumerApi de forma assíncrona. O método de inicialização usa a classe AuthTokenFactory para gerar novos tokens JWT para o usuário quando necessário.

O providerId é o ID do projeto do seu projeto do Google Cloud. Para mais informações sobre como criar um projeto do Fleet Engine, consulte Criar seu projeto do Fleet Engine no guia do Fleet Engine.

Seu app precisa implementar o AuthTokenFactory conforme descrito em Autenticação do SDK do consumidor.

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
}

SDK do Maps e renderizadores de mapas

O SDK do consumidor v2.0.0 e versões mais recentes são compatíveis com o SDK do Maps para Android v18.1.0 e versões mais recentes. A tabela a seguir resume o renderizador padrão por versão do SDK Maps e a capacidade de suporte dos dois renderizadores. Se possível, use o renderizador mais recente. Se você precisar usar o renderizador legado, especifique-o explicitamente usando MapsInitializer.initialize().

Versão do SDK do Maps Compatível com o renderizador mais recente Compatível com o renderizador legado Renderizador padrão
V18.1.0 e versões anteriores Sim Sim Legado*
V18.2.0 Sim Sim Mais recentes

* Com o lançamento do novo renderizador de mapas, o renderizador mais recente será o padrão.

Se você precisar usar um renderizador preferido, execute todas as operações de renderização da interface depois que OnMapsSdkInitializedCallback retornar um resultado. As operações de renderização da interface incluem:

  • Aumentar uma visualização que contém GoogleMapView ou ConsumerMapView.

  • Colocando marcadores em ConsumerMapView.

Se você não executar essas operações depois de receber o resultado OnMapsSdkInitializedCallback, o SDK Maps não vai alocar o renderizador preferido, e a visualização do mapa será renderizada pelo renderizador padrão.

Inicialize o SDK do Maps antes do SDK do consumidor

  1. Na sua classe Application ou Activity de inicialização, chame MapsInitializer.initialize()

  2. Aguarde o resultado da solicitação do renderizador antes de inicializar o SDK do consumidor.

Confira os exemplos a seguir para mais detalhes.

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()
      }
    })
  }

Observações sobre SSL/TLS

Internamente, a implementação do SDK do consumidor usa SSL/TLS para se comunicar com segurança com o serviço do Fleet Engine. As versões 23 ou anteriores da API Android podem exigir um patch SecurityProvider para se comunicar com o servidor. Para mais informações sobre como trabalhar com SSL no Android, consulte Provedor de segurança do GMS. O artigo também contém exemplos de código para corrigir o provedor de segurança.

A seguir

Configurar um mapa