Migracja do pakietu Android SDK dla klientów indywidualnych

Pakiet SDK dla klientów indywidualnych na Androida pozwala tworzyć aplikacje do wspólnych przejazdów za pomocą czyli modułową architekturę. Możesz używać tych części interfejsu API, które Ci odpowiadają wykorzystanie w konkretnej aplikacji i zintegruj je z własnymi interfejsami API. Pakiet SDK dla klientów indywidualnych Interfejsy API związane z różnymi funkcjami są zawarte w osobnych modułach.

Jeśli Twoja aplikacja Ridesharing korzysta z wcześniejszych wersji pakietu Consumer SDK: będzie trzeba uaktualnić aplikację, aby korzystać z tej architektury modułowej. Ten przewodnik po migracji zawiera informacje o tym, jak uaktualnić aplikację.

Omówienie

Architektura modułowa pakietu Consumer SDK wprowadza obiekt Session (sesja), który zawiera stan interfejsu użytkownika. W poprzednich wersjach pakietu SDK dla klientów indywidualnych, aplikacje przepływały między stanami. Na tę architekturę modułową, tworzysz obiekt Session i wyświetlić sesję na mapie. Jeśli nie ma sesji jeśli zostaną wyświetlone, mapa jest pusta. To pole nie jest już „puste” lub „zainicjowano” stanu.

Obiekt sesji reprezentuje pojedynczą instancję użycia modułu w cyklu życia. Sesje to punkty dostępu do interfejsów API modułów. Przykład: sesja udostępniania trasy jest powiązana z jedną podróżą. Interakcja za pomocą obiektu Session (sesja), aby monitorować podróż.

Obiekt Session (Sesja) jest powiązany z typem modułu. Metoda uwierzytelniania obiektu Session jest powiązane z cyklem życia obiektu używanego do jego zainicjowania.

Załóżmy, że tworzysz obiekt TripModel służący do śledzenia trasy TRIP_A. Jeśli spróbujesz ponownie uzyskać obiekt TripModel dla TRIP_A, uzyskać ten sam obiekt TripModel. Aby śledzić TRIP_B, uzyskaj nowy TripModel obiekt.

Stany sesji

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

  • Utworzoną sesję reprezentuje obiekt Sessions. Ty tworzysz sesji przy użyciu metody create. Na przykład:

    JourneySharingSession sessionA = JourneySharingSession.createInstance(TripModelA)
    
  • Rozpoczęta sesja jest zarejestrowana na potrzeby aktualizacji danych i wartości. jego elementów interfejsu. Rozpoczynasz sesję, wywołując metodę Metoda start. Na przykład:

    sessionA.start()
    
  • Pokazana sesja rozpoczyna się automatycznie. Wyświetla elementy interfejsu i aktualizuje je w odpowiedzi na aktualizacje danych. Pokazano sesję przez wywołanie metody showSession. Na przykład:

    ConsumerController.showSession(sessionA)
    
  • Zatrzymana sesja przestaje odświeżać dane i przestaje być aktualizowana elementów interfejsu. Sesję zatrzymujesz, wywołując 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ą elementów interfejsu API udostępnianych przez rozwiązanie do przejazdów i dostarczania na żądanie.

Korzystanie z komponentów zawierających tylko dane

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

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

Poniższy przykład pokazuje, jak używać komponentów tylko do danych:

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

Interfejsy API elementów interfejsu użytkownika

Aby uzyskać dostęp, użyj obiektu ConsumerController interfejsu API usługi On-demands Rides and Deliveries Solution.

Aby utworzyć aplikację do wspólnych przejazdów za pomocą interfejsu usługi Przejazdy i Dostawy na żądanie interfejsy API elementów:

  • 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 ConsumerMap[View/Fragment].
  • Przekaż obiekt TripModel kontrolerowi, aby uzyskać obiekt JourneySharingSession.
  • Za pomocą kontrolera możesz wyświetlić JourneySharingSession.

Poniższy przykład pokazuje, jak korzystać z interfejsów API interfejsu użytkownika:

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 w kodzie architektury modułowej

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

Dostęp do lokalizacji

Uprawnienia FINE_LOCATION nie są już wymagane za pomocą pakietu Consumer SDK.

Monitorowanie podróży

Zaktualizowana architektura modułowa wymaga zmian w kodzie w obu użytkowników warstwy danych i interfejsu użytkownika.

We wcześniejszych wersjach użytkownik warstwy danych może obsługiwać monitorowania 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 ten kod:

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 może obsługiwać monitorowanie podróży przy użyciu 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żyłby ten kod:

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 mapy

Widok lub fragment mapy nie są już powiększane do lokalizacji użytkownika przy inicjowaniu, gdy nie ma żadnej aktywnej sesji. Nadal będzie automatycznie powiększać, aby pokazać aktywną sesję udostępniania trasy, o ile gdy włączona jest funkcja AutoAparat. Automatyczny aparat jest domyślnie włączony.

We wcześniejszych wersjach do wyśrodkowania kamery należało użyć tego kodu w bieżącej aktywnej sesji:

consumerController.centerMapForState()

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

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

Aby wyłączyć funkcję AutoAparat we wcześniejszych wersjach, użyj tego kodu:

consumerController.disableAutoCamera(true);

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

consumerController.setAutoCameraEnabled(false);

Dostosowywanie

Niestandardowy FAB w ramach usługi Przejazdy i dostarczanie na żądanie został usunięty z mapy.

Niestandardowy przycisk typu FAB

Powiązane metody dla przycisku FAB również zostały usunięte:

ConsumerController.isMyLocationFabEnabled()
ConsumerController.setMyLocationFabEnabled()