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 klasyConsumerApi
. - 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 obiektuConsumerApi
. - Uzyskaj z
TripModelManager
obiektTripModel
, który śledzi jedną podróż. - Dodaj
ConsumerMap[View/Fragment]
do widoku aplikacji. - Uzyskaj obiekt
ConsumerController
z klasyConsumerMap[View/Fragment]
. - Prześlij obiekt
TripModel
do kontrolera, aby uzyskać obiektJourneySharingSession
. - 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.
Usunęliśmy też powiązane metody powiązane z przyciskiem typu FAB:
ConsumerController.isMyLocationFabEnabled()
ConsumerController.setMyLocationFabEnabled()