Pakiet Consumer SDK na iOS 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
Architektura modułowa pakietu Consumer SDK wprowadza obiekt MapViewSession
, który przechowuje stan interfejsu użytkownika. W poprzednich wersjach pakietu Consumer SDK aplikacje przechodziły między stanami. W przypadku tej architektury modułowej możesz utworzyć obiekt MapViewSession
, który daje Ci możliwość wyświetlenia sesji na mapie. Jeśli nie są wyświetlane żadne sesje, mapa wyświetla tę samą treść co tylko przy użyciu pakietu SDK Map Google na iOS.
Obiekt MapViewSession
reprezentuje pojedynczą instancję wykorzystania 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. Aby monitorować podróż, wchodzisz w interakcję z obiektem JourneySharingSession
.
TripModel
obiekt
W poprzednich wersjach pakietu Consumer SDK wystąpienie TripService
umożliwiało monitorowanie tylko jednej podróży na żywo naraz. Za pomocą obiektu TripModel
możesz monitorować wiele podróży na żywo w 1 instancji TripService
.
Wystąpienie TripModel
można utworzyć na podstawie TripService
, a każde wystąpienie obiektu TripModel
jest powiązane z konkretną podróżą.
Instancja TripModel
wywołuje zdarzenia aktualizacji, jeśli zarejestrowany subskrybent jest w trakcie podróży, gdy jest aktualizowana.
Obiektu TripModel
można też użyć do utworzenia instancji obiektu JourneySharingSession
.
MapViewSession
stany
Instancja MapViewSession
można dodać tylko do 1 instancji mapView
naraz i może ona mieć jeden z tych 2 stanów:
Stan
GMTCMapViewSessionStateInactive
wskazuje, że elementMapViewSession
nie został jeszcze dodany do żadnego elementumapView
lub został usunięty zmapView
. Po usunięciu instancjiMapViewSession
zmapView
wywoływana jest metodadidRemoveFromMapView
.Wywołanie metody
hideMapViewSession
lubhideAllMapViewSessions
usuwa metodęmapViewSession
z metodymapView
:[_mapView hideMapViewSession:mapViewSessionA];
lub
[_mapView hideAllMapViewSessions];
Stan
GMTCMapViewSessionStateActive
wskazuje, że elementMapViewSession
został dodany do:mapView
. Po dodaniu instancjiMapViewSession
domapView
wywoływana jest metodadidAddToMapView
. Wywołanie metodyshowMapViewSession
dodaje elementmapViewSession
do docelowego elementumapView
:[_mapView showMapViewSession:mapViewSessionA];
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 dotyczące 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
GMTCServices
, podając identyfikator dostawcy i dostawcę tokena dostępu. - Uzyskaj właściwość
tripService
ze współdzielonej instancji obiektuGMTCServices
. - Utwórz lub pobierz wystąpienie obiektu
GMTCTripModel
na potrzeby określonej podróży za pomocą metodytripModelForTripName
obiektutripService
. - Zarejestruj wywołania zwrotne dla instancji
GMTCTripModel
, aby rozpocząć monitorowanie podróży.
Ten przykład pokazuje, jak korzystać z komponentów obejmujących tylko dane:
[GMTCServices setAccessTokenProvider:[[AccessTokenProvider alloc] init]
providerID:yourProviderID];
GMTCTripService *tripService = [GMTCServices sharedServices].tripService;
// Create a tripModel instance for listening to updates to the trip specified by this trip name.
GMTCTripModel *tripModel = [tripService tripModelForTripName:tripName];
// Register for the trip update events.
[tripModel registerSubscriber:self];
// To stop listening for the trip update.
[tripModel unregisterSubscriber:self];
Korzystanie z interfejsów API elementów interfejsu
Wykonaj tę procedurę, aby utworzyć aplikację dla klientów indywidualnych korzystającą z interfejsów API rozwiązania do obsługi przejazdów i dostaw na żądanie:
- Zainicjuj obiekt
GMTCServices
, podając identyfikator dostawcy i dostawcę tokena dostępu. - Zainicjuj obiekt
GMTCMapView
do renderowania mapy podstawowej. - Uzyskaj właściwość
tripService
ze współdzielonej instancji obiektuGMTCServices
. - Utwórz lub pobierz wystąpienie obiektu
GMTCTripModel
na potrzeby określonej podróży za pomocą metodytripModelForTripName
obiektutripService
. - Utwórz obiekt
GMTCJourneySharingSession
z instancjąGMTCTripModel
. - Pokaż obiekt
GMTCJourneySharingSession
wmapView
. - Zarejestruj wywołania zwrotne dla instancji
GMTCTripModel
, aby rozpocząć monitorowanie podróży.
Z przykładu poniżej dowiesz się, jak korzystać z interfejsów API interfejsu:
[GMTCServices setAccessTokenProvider:[[AccessTokenProvider alloc] init]
providerID:yourProviderID];
GMTCTripService *tripService = [GMTCServices sharedServices].tripService;
// Create a tripModel instance for listening to updates to the trip specified by this trip name.
GMTCTripModel *tripModel = [tripService tripModelForTripName:tripName];
GMTCJourneySharingSession *journeySharingSession =
[[GMTCJourneySharingSession alloc] initWithTripModel:tripModel];
// Add the journeySharingSession instance on the mapView for UI updating.
[self.mapView showMapViewSession:journeySharingSession];
// Register for the trip update events.
[tripModel registerSubscriber:self];
// To remove the JourneySharingSession from the mapView:
[self.mapView hideMapViewSession:journeySharingSession];
// To stop listening for the trip update.
[tripModel unregisterSubscriber:self];
Zmiany kodu architektury modułowej
Jeśli Twoja aplikacja Ridesharing korzysta z wcześniejszych wersji pakietu Consumer SDK, zaktualizowana architektura modułowa wymaga wprowadzenia zmian w kodzie. W tej sekcji opisujemy niektóre z tych zmian.
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:
GRCTripRequest *tripRequest =
[[GRCTripRequest alloc] initWithRequestHeader:[GRSRequestHeader defaultHeader]
tripName:tripName
autoRefreshTimeInterval:1];
GRCTripService *tripService = [GRCServices sharedServices].tripService;
[tripService registerServiceSubscriber:self];
[tripService setActiveTripWithRequest:tripRequest];
Dzięki architekturze modułowej użytkownik warstwy danych użyje takiego kodu:
GMTCTripService *tripService = [GMTCServices sharedServices].tripService;
GMTCTripModel *tripModel = [tripService tripModelForTripName:tripName];
tripModel.options.autoRefreshTimeInterval = 1;
[tripModel registerSubscriber:self];
We wcześniejszych wersjach użytkownik interfejsu użytkownika mógł obsługiwać monitorowanie podróży za pomocą tego kodu:
// Show the Journey Sharing user interface.
[self.mapView startTripMonitoring];
// Hide the Journey Sharing user interface.
[self.mapView resetCustomerState];
Dzięki architekturze modułowej użytkownik interfejsu użytkownika używałby takiego kodu:
// Show the Journey Sharing user interface.
GMTCJourneySharingSession *journeySharingSession =
[[GMTCJourneySharingSession alloc] initWithTripModel:tripModel];
[self.mapView showMapViewSession:journeySharingSession];
// Hide the Journey Sharing user interface.
[self.mapView hideMapViewSession:journeySharingSession];