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 w celu wysłania prośby o preferowany moduł renderujący

Pobieranie instancji ConsumerApi

Aby korzystać z pakietu Consumer SDK, 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 sekcji Uwierzytelnianie w pakiecie SDK dla konsumentów.

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
}

Pakiety SDK Map Google i renderery map

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 i informacje o obsłudze obu rendererów. W miarę możliwości używaj najnowszego renderera. Jeśli musisz użyć starszego renderera, określ go wprost za pomocą kodu MapsInitializer.initialize().

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

* Wraz z wprowadzeniem nowego renderera Map najnowszy renderer 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ą:

  • Rozszerzanie widoku, który zawiera GoogleMapView lub ConsumerMapView.

  • Umieszczanie znaczników w ConsumerMapView.

Jeśli po otrzymaniu wyniku OnMapsSdkInitializedCallback nie wykonasz tych operacji, pakiet SDK Map Google nie przydzieli preferowanego renderera, a widok mapy będzie renderowany przez domyślny renderer.

Zainicjuj pakiet Maps SDK przed zainicjowaniem pakietu Consumer SDK

  1. W klasie Application lub klasie startowej Activity wywołaj 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 API Androida 23 lub starsze mogą wymagać SecurityProviderpoprawki, aby komunikować się z serwerem. Więcej informacji o pracy z SSL na Androidzie znajdziesz w artykule Dostawca GMS Security. Artykuł zawiera też przykłady kodu do aktualizowania dostawcy zabezpieczeń.

Co dalej?

Konfigurowanie mapy