Migracja do pakietu Android SDK dla klientów indywidualnych

Pakiet Consumer SDK na Androida umożliwia tworzenie aplikacji Wspólne przejazdy za pomocą architektury modułowej. Możesz użyć tych części interfejsu API, których chcesz używać w konkretnej aplikacji, i integrować je z własnymi interfejsami API. Interfejsy API pakietu Consumer SDK przeznaczone do różnych funkcji są zebrane w osobnych modułach.

Jeśli Twoja aplikacja Ridesharing korzysta z wcześniejszych wersji pakietu Consumer SDK, musisz ją uaktualnić, aby korzystać z tej architektury modułowej. Z tego przewodnika po migracji dowiesz się, jak uaktualnić aplikację.

Przegląd

Modułowa architektura pakietu Consumer SDK wprowadza obiekt Session (sesja), który przechowuje stan interfejsu użytkownika. W poprzednich wersjach pakietu Consumer SDK aplikacje przechodziły między stanami. Dzięki tej architekturze modułowej możesz utworzyć obiekt Session (Sesja), który daje Ci możliwość wyświetlenia sesji na mapie. Jeśli nie są wyświetlane żadne sesje, mapa jest pusta. Nie będzie już mieć stanu „puste” ani „zainicjowane”.

Obiekt sesji reprezentuje jedno wystąpienie cyklu życia modułu. Sesje to punkty dostępu do interfejsów API modułów. Np. sesja udostępniania trasy wynika z pojedynczej podróży. Możesz użyć obiektu Session (Sesja), aby monitorować podróż.

Obiekt sesji jest powiązany z typem modułu. Zachowanie obiektu sesji jest powiązane z cyklem życia obiektu używanego do jego zainicjowania.

Załóżmy, że tworzysz obiekt TripModel do śledzenia podróży TRIP_A. Jeśli spróbujesz ponownie uzyskać obiekt TripModel dla TRIP_A, otrzymasz ten sam obiekt TripModel. Aby śledzić TRIP_B, uzyskaj nowy obiekt TripModel.

Stany sesji

Sesja może mieć jeden z kilku stanów:

  • Utworzona sesja jest reprezentowana przez obiekt sesji. Sesję tworzysz, wywołując metodę create. Na przykład:

    JourneySharingSession sessionA = JourneySharingSession.createInstance(TripModelA)
    
  • Sesja rozpoczęta jest zarejestrowana w przypadku aktualizacji danych i wartości elementów interfejsu. Sesję rozpoczyna się przez wywołanie metody start. Na przykład:

    sessionA.start()
    
  • Wyświetlona sesja rozpoczyna się automatycznie. Wyświetla elementy interfejsu i aktualizuje je w odpowiedzi na aktualizacje danych. Pokazujesz sesję, wywołując metodę showSession. Na przykład:

    ConsumerController.showSession(sessionA)
    
  • Zatrzymana sesja przestaje odświeżać dane i przestaje aktualizować elementy interfejsu. Aby zatrzymać sesję, wywołaj metodę stop. Na przykład:

    sessionA.stop()
    

Korzystanie tylko z danych i komponentów interfejsu

Możesz utworzyć aplikację do wspólnych przejazdów, korzystając z komponentów obsługujących tylko dane lub za pomocą interfejsów API elementów interfejsu udostępnianych przez rozwiązanie do obsługi przejazdów i dostaw na żądanie.

Korzystanie z komponentów tylko z danymi

Aby utworzyć aplikację do wspólnych przejazdów, korzystając z komponentów tylko z danymi:

  • Zainicjuj obiekt ConsumerApi.
  • Uzyskaj obiekt TripModelManager z klasy ConsumerApi.
  • Aby otrzymać obiekt TripModel, rozpocznij monitorowanie podróży za pomocą: TripModelManager.
  • Zarejestruj wywołania zwrotne w obiekcie TripModel.

Ten przykład pokazuje, jak korzystać z komponentów obejmujących tylko dane:

TripModelManager tripManager = ConsumerApi.getTripModelManager();
TripModel tripA = tripManager.getTripModel("trip_A");
tripA.registerTripCallback(new TripModelCallback() {})

Korzystanie z interfejsów API elementów interfejsu

Użyj obiektu ConsumerController, aby uzyskać dostęp do interfejsów API elementów interfejsu usługi Przejazdy i dostawy na żądanie.

Aby utworzyć aplikację do wspólnych przejazdów za pomocą interfejsu API rozwiązania do obsługi przejazdów i dostaw na żądanie:

  • Zainicjuj obiekt ConsumerApi.
  • Uzyskaj obiekt TripModelManager z obiektu ConsumerApi.
  • Uzyskaj z TripModelManager obiekt TripModel, który śledzi jedną podróż.
  • Dodaj ConsumerMap[View/Fragment] do widoku aplikacji.
  • Uzyskaj obiekt ConsumerController z klasy ConsumerMap[View/Fragment].
  • Prześlij obiekt TripModel do kontrolera, aby uzyskać obiekt JourneySharingSession.
  • Użyj kontrolera, aby wyświetlić JourneySharingSession.

Z przykładu poniżej dowiesz się, jak korzystać z interfejsów API interfejsu:

TripModelManager tripManager = ConsumerApi.getTripModelManager();
TripModel tripA = TripModelManager.getTripModel("trip_A");

// Session is NOT automatically started when created.
JourneySharingSession jsSessionA = JourneySharingSession.createInstance(tripA);
JourneySharingSession jsSessionB = JourneySharingSession.createInstance(tripB);

// But a session is automatically started when shown.
ConsumerController.showSession(jsSessionA);
ConsumerController.showSession(jsSessionB); // hides trip A; shows trip B.
ConsumerController.hideAllSessions(); // don't show any sessions

// Unregister listeners and delete UI elements of jsSessionA.
consumerController.showSession(jsSessionA);
jsSessionA.stop();
// Recreates and shows UI elements of jsSessionA.
jsSessionA.start();

Zmiany kodu architektury modułowej

Jeśli Twoja aplikacja Ridesharing korzysta z wcześniejszych wersji pakietu Consumer SDK, zaktualizowana architektura modułowa będzie wymagać wprowadzenia pewnych zmian w kodzie. W tej sekcji opisujemy niektóre z tych zmian.

Dostęp do lokalizacji

Uprawnienia FINE_LOCATION nie są już wymagane przez pakiet Consumer SDK.

Monitorowanie podróży

Zaktualizowana architektura modułowa wymaga zmian w kodzie zarówno w przypadku użytkowników warstwy danych, jak i użytkowników interfejsu użytkownika.

We wcześniejszych wersjach użytkownik warstwy danych mógł obsługiwać monitorowanie podróży za pomocą tego kodu:

ConsumerApi.initialize()
TripModelManager manager = ConsumerApi.getTripManager()
manager.setActiveTrip("trip_id")
manager.registerActiveTripCallback(new TripModelCallback() {})

Dzięki architekturze modułowej użytkownik warstwy danych użyje takiego kodu:

ConsumerApi.initialize()
TripModelManager manager = ConsumerApi.getTripManager()
TripModel tripA = TripModelManager.getTrip("trip_A")
tripA.registerTripCallback(new TripModelCallback() {})

We wcześniejszych wersjach użytkownik interfejsu użytkownika mógł obsługiwać monitorowanie podróży za pomocą tego kodu:

ConsumerApi.initialize()
TripModelManager manager = ConsumerApi.getTripManager()
manager.setActiveTrip("trip_id")

ConsumerController controller = consumerGoogleMap.getConsumerController();
consumerController.startJourneySharing()

Dzięki architekturze modułowej użytkownik interfejsu użytkownika używałby takiego kodu:

ConsumerApi.initialize()
TripModelManager manager = ConsumerApi.getTripManager()
TripModel tripA = TripModelManager.getTripModel("trip_A");

ConsumerController controller = consumerGoogleMap.getConsumerController();
JourneySharingSession jsSessionA = JourneySharingSession.createInstance(tripA);
controller.showSession(jsSessionA);

Wyśrodkowanie map

Gdy sesja nie jest aktywna, widok lub fragment mapy nie powiększa się już do lokalizacji użytkownika przy inicjowaniu. Dopóki funkcja automatycznego aparatu będzie włączona, powiększy się automatycznie, aby pokazać aktywną sesję udostępniania trasy. Automatyczny aparat jest domyślnie włączony.

We wcześniejszych wersjach należało użyć tego kodu, aby wyśrodkować kamerę na potrzeby bieżącej aktywnej sesji:

consumerController.centerMapForState()

W przypadku architektury modułowej należy użyć takiego kodu:

CameraUpdate cameraUpdate = consumerController.getCameraUpdate()
if (cameraUpdate != null) {
   googleMap.animateCamera(cameraUpdate);
   // OR googleMap.moveCamera(cameraUpdate);
}

Aby wyłączyć funkcję Autoaparat we wcześniejszych wersjach, trzeba było użyć tego kodu:

consumerController.disableAutoCamera(true);

W przypadku architektury modułowej należy użyć takiego kodu:

consumerController.setAutoCameraEnabled(false);

Personalizacja

Niestandardowy przycisk typu FAB usługi Przejazdy i dostawy na żądanie został usunięty z mapy.

Niestandardowy przycisk typu FAB

Usunęliśmy też powiązane metody powiązane z przyciskiem typu FAB:

ConsumerController.isMyLocationFabEnabled()
ConsumerController.setMyLocationFabEnabled()