Automatyzacja pakietu SDK na urządzenia z iOS dla klientów indywidualnych

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 element MapViewSession nie został jeszcze dodany do żadnego elementu mapView lub został usunięty z mapView. Po usunięciu instancji MapViewSession z mapView wywoływana jest metoda didRemoveFromMapView.

    Wywołanie metody hideMapViewSession lub hideAllMapViewSessions usuwa metodę mapViewSession z metody mapView:

    [_mapView hideMapViewSession:mapViewSessionA];
    

    lub

    [_mapView hideAllMapViewSessions];
    
  • Stan GMTCMapViewSessionStateActive wskazuje, że element MapViewSession został dodany do: mapView. Po dodaniu instancji MapViewSession do mapView wywoływana jest metoda didAddToMapView. Wywołanie metody showMapViewSession dodaje element mapViewSession do docelowego elementu mapView:

    [_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:

  1. Zainicjuj obiekt GMTCServices, podając identyfikator dostawcy i dostawcę tokena dostępu.
  2. Uzyskaj właściwość tripService ze współdzielonej instancji obiektu GMTCServices.
  3. Utwórz lub pobierz wystąpienie obiektu GMTCTripModel na potrzeby określonej podróży za pomocą metody tripModelForTripName obiektu tripService.
  4. 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:

  1. Zainicjuj obiekt GMTCServices, podając identyfikator dostawcy i dostawcę tokena dostępu.
  2. Zainicjuj obiekt GMTCMapView do renderowania mapy podstawowej.
  3. Uzyskaj właściwość tripService ze współdzielonej instancji obiektu GMTCServices.
  4. Utwórz lub pobierz wystąpienie obiektu GMTCTripModel na potrzeby określonej podróży za pomocą metody tripModelForTripName obiektu tripService.
  5. Utwórz obiekt GMTCJourneySharingSession z instancją GMTCTripModel.
  6. Pokaż obiekt GMTCJourneySharingSession w mapView.
  7. 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];