Inicjowanie pakietu SDK klienta

Zanim rozpoczniesz te procedury, włącz odpowiednie usługi i pakiet SDK dla konsumentów zgodnie z opisem w poprzednich sekcjach.

Aby zainicjować pakiet Consumer SDK, wykonaj te czynności:

  1. Pobierz instancję ConsumerAPI
  2. Inicjowanie pakietu SDK Map, aby wysłać żądanie preferowanego renderera

Pobieranie instancji ConsumerApi

Aby korzystać z pakietu SDK dla konsumentów, aplikacja musi zainicjować singletona ConsumerApi asynchronicznie. Metoda inicjowania przyjmuje klasę AuthTokenFactory, aby w razie potrzeby generować dla użytkownika nowe tokeny JWT.

providerId to identyfikator projektu w Twoim projekcie Google Cloud. Więcej informacji o tworzeniu projektu Fleet Engine znajdziesz w artykule Tworzenie projektu Fleet Engine w przewodniku po Fleet Engine.

Aplikacja powinna implementować AuthTokenFactory zgodnie z opisem w dokumentacji pakietu SDK dla konsumentów – uwierzytelnianie.

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
}

Pakiet SDK Map i programy renderujące mapy

Pakiet Consumer SDK w wersji 2.0.0 i nowszych obsługuje pakiet Maps SDK na Androida w wersji 18.1.0 i nowszych. W tabeli poniżej znajdziesz podsumowanie domyślnego renderera według wersji pakietu Maps SDK oraz informacje o obsłudze obu rendererów. Jeśli to możliwe, użyj najnowszego mechanizmu renderowania. Jeśli musisz użyć starszego renderera, określ go jawnie za pomocą elementu MapsInitializer.initialize().

Wersja pakietu SDK Map Google Obsługuje najnowszy moduł renderujący Obsługa starszego renderera Domyślny moduł renderujący
V18.1.0 i starsze Tak Tak Starsza wersja*
V18.2.0 Tak Tak Najnowsze

* Wraz z wprowadzeniem nowego mechanizmu renderowania map najnowszy mechanizm renderowania będzie domyślny.

Jeśli musisz użyć preferowanego renderera, wykonuj wszystkie operacje renderowania interfejsu po zwróceniu wyniku przez funkcję OnMapsSdkInitializedCallback. Operacje renderowania interfejsu obejmują:

  • Zwiększanie liczby wyświetleń widoku zawierającego GoogleMapView lub ConsumerMapView.

  • Umieszczanie znaczników na ConsumerMapView.

Jeśli po otrzymaniu wyniku OnMapsSdkInitializedCallback nie wykonasz tych operacji, pakiet SDK Map nie przydzieli preferowanego renderera, a widok mapy zostanie wyrenderowany przez domyślny renderer.

Zainicjuj Maps SDK przed zainicjowaniem Consumer SDK

  1. W klasie Application lub startowej Activity wywołaj funkcję MapsInitializer.initialize().

  2. Przed zainicjowaniem pakietu SDK dla konsumentów poczekaj na wynik żądania renderowania.

Szczegółowe informacje znajdziesz w przykładach poniżej.

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

Uwagi dotyczące SSL/TLS

Wewnętrznie implementacja pakietu Consumer SDK używa protokołu SSL/TLS do bezpiecznej komunikacji z usługą Fleet Engine. Wersje interfejsu Android API 23 lub starsze mogą wymagać SecurityProvider poprawki, aby komunikować się z serwerem. Więcej informacji o pracy z SSL na Androidzie znajdziesz w artykule Security GMS Provider. Artykuł zawiera też przykłady kodu do aktualizowania dostawcy zabezpieczeń.

Co dalej?

Konfigurowanie mapy