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. Acesse a instância ConsumerAPI
  2. Inicializar o SDK do Maps para solicitar o renderizador preferido

Acessar a instância de ConsumerApi

Para usar o SDK do consumidor, seu app precisa inicializar o ConsumerApi de singleton 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 Google Cloud. Para mais informações sobre como criar um projeto da Fleet Engine, consulte Criar seu projeto da Fleet Engine no guia da 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 posteriores são compatíveis com o SDK do Maps para Android v18.1.0 e posteriores. A tabela a seguir resume o renderizador padrão por versão do SDK do Maps e o suporte de ambos. 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 Suporte ao 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 do Maps, o renderizador mais recente será o padrão.

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

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

  • Inserindo marcadores em ConsumerMapView.

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

Inicializar o SDK do Maps antes de inicializar o SDK do consumidor

  1. Na 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()
      }
    })
  }

Notas 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 do Android podem exigir um patch SecurityProvider para se comunicar com o servidor. Para mais informações sobre como trabalhar com SSL no Android, consulte Security GMS Provider. O artigo também contém exemplos de código para aplicar patches ao provedor de segurança.

A seguir

Configurar um mapa