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 de ConsumerApi

Para usar o SDK do consumidor, o 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.

providerId é o ID do projeto do seu 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.

O 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 oferece suporte ao 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 do Maps e a compatibilidade com os 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 Suporte ao 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ê precisar usar um renderizador preferencial, 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:

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

  • Inserção de marcadores em ConsumerMapView.

Se você não executar essas operações após receber o resultado OnMapsSdkInitializedCallback, o SDK do Maps não vai alocar o renderizador preferido, e a visualização do mapa 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 no provedor de segurança.

A seguir

Configurar um mapa