Migration pour la modularisation du SDK grand public iOS

Le SDK grand public pour iOS vous permet de créer des applications de covoiturage à l'aide d'une architecture modulaire. Vous pouvez utiliser les parties de l'API que vous souhaitez utiliser pour votre application spécifique et les intégrer à vos propres API. Les API du SDK client pour différentes fonctionnalités sont encapsulées dans des modules distincts.

Si votre application de partage de course utilise des versions antérieures du SDK client, vous devez la mettre à niveau pour utiliser cette architecture modulaire. Ce guide de migration explique comment mettre à niveau votre application.

Présentation

L'architecture modulaire du SDK client introduit un objet MapViewSession qui contient l'état de l'interface utilisateur. Dans les versions précédentes du SDK grand public, les applications circulaient entre les états. Avec cette architecture modulaire, vous créez un objet MapViewSession et vous avez la possibilité d'afficher la session sur la carte. Si aucune session n'est affichée, la carte affiche le même contenu que si vous utilisiez uniquement le SDK Maps pour iOS.

Un objet MapViewSession représente une seule instance d'utilisation du cycle de vie d'un module. Les sessions sont les points d'accès aux API de module. Par exemple, une session de partage de trajet suit un seul trajet. Vous interagissez avec l'objet JourneySharingSession pour surveiller le trajet.

Objet TripModel

Dans les versions précédentes du SDK client, une instance TripService ne vous permettait de surveiller qu'un seul trajet en direct à la fois. En utilisant un objet TripModel, vous pouvez surveiller plusieurs trajets en temps réel dans une instance TripService. Une instance de TripModel peut être créée à partir de TripService, et chaque instance de TripModel est liée à un trajet spécifique.

L'instance TripModel appelle des événements de mise à jour si un abonné enregistré se trouve sur le trajet au moment de sa mise à jour.

L'objet TripModel peut également être utilisé pour créer une instance de l'objet JourneySharingSession.

MapViewSession état

Une instance MapViewSession ne peut être ajoutée que dans un seul mapView à la fois. Elle peut se trouver dans l'un des deux états suivants:

  • L'état GMTCMapViewSessionStateInactive indique que ce MapViewSession n'a pas encore été ajouté à un mapView, ou qu'il a été supprimé d'un mapView. Lorsque l'instance MapViewSession a été supprimée d'un mapView, la méthode didRemoveFromMapView est appelée.

    L'appel de la méthode hideMapViewSession ou hideAllMapViewSessions supprime mapViewSession d'un mapView:

    [_mapView hideMapViewSession:mapViewSessionA];
    

    ou

    [_mapView hideAllMapViewSessions];
    
  • L'état GMTCMapViewSessionStateActive indique que ce MapViewSession a été ajouté à un mapView. Lorsqu'une instance de MapViewSession a été ajoutée à un mapView, la méthode didAddToMapView est appelée. L'appel de la méthode showMapViewSession ajoute mapViewSession à la cible mapView:

    [_mapView showMapViewSession:mapViewSessionA];
    

Utiliser des composants d'interface utilisateur et de type "Données uniquement"

Vous pouvez créer une application de partage de course à l'aide de composants ne contenant que des données ou des API d'éléments d'interface utilisateur fournies par la solution On-demand Rides and Deliveries.

Utiliser des composants ne comportant que des données

Pour créer une application de partage de course à l'aide de composants ne contenant que des données:

  1. Initialisez un objet GMTCServices en spécifiant l'ID et le fournisseur de jetons d'accès.
  2. Récupérez la propriété tripService à partir de l'instance partagée de l'objet GMTCServices.
  3. Créez ou récupérez une instance d'un objet GMTCTripModel pour un trajet spécifié à l'aide de la méthode tripModelForTripName de l'objet tripService.
  4. Enregistrez des rappels pour l'instance GMTCTripModel afin de démarrer la surveillance de trajet.

L'exemple suivant montre comment utiliser des composants ne comportant que des données:

[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];

Utiliser les API des éléments d'interface utilisateur

Suivez cette procédure pour créer une application grand public avec des API d'éléments d'interface utilisateur de la solution On-demand Rides and Deliveries:

  1. Initialisez un objet GMTCServices en spécifiant l'ID et le fournisseur de jetons d'accès.
  2. Initialisez un objet GMTCMapView pour le rendu de la carte de base.
  3. Récupérez la propriété tripService à partir de l'instance partagée de l'objet GMTCServices.
  4. Créez ou récupérez une instance d'un objet GMTCTripModel pour un trajet spécifié à l'aide de la méthode tripModelForTripName de l'objet tripService.
  5. Créez un objet GMTCJourneySharingSession avec l'instance GMTCTripModel.
  6. Affichez l'objet GMTCJourneySharingSession sur mapView.
  7. Enregistrez des rappels pour l'instance GMTCTripModel afin de démarrer la surveillance de trajet.

L'exemple suivant montre comment utiliser les API de l'interface utilisateur:

[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];

Modifications du code de l'architecture modulaire

Si votre application de partage de course utilise des versions antérieures du SDK client, l'architecture modulaire mise à jour nécessite de modifier votre code. Cette section décrit certaines de ces modifications.

Surveillance des trajets

L'architecture modulaire mise à jour nécessite des modifications de code pour les utilisateurs de la couche de données et de l'interface utilisateur.

Dans les versions antérieures, un utilisateur de la couche de données peut gérer la surveillance des trajets à l'aide du code suivant:

GRCTripRequest *tripRequest =
    [[GRCTripRequest alloc] initWithRequestHeader:[GRSRequestHeader defaultHeader]
                                         tripName:tripName
                          autoRefreshTimeInterval:1];
GRCTripService *tripService = [GRCServices sharedServices].tripService;
[tripService registerServiceSubscriber:self];
[tripService setActiveTripWithRequest:tripRequest];

En utilisant l'architecture modulaire, un utilisateur de couche de données peut utiliser le code suivant:

GMTCTripService *tripService = [GMTCServices sharedServices].tripService;
GMTCTripModel *tripModel = [tripService tripModelForTripName:tripName];
tripModel.options.autoRefreshTimeInterval = 1;
[tripModel registerSubscriber:self];

Dans les versions précédentes, un utilisateur de l'interface utilisateur pouvait gérer la surveillance des trajets à l'aide du code suivant:

// Show the Journey Sharing user interface.
[self.mapView startTripMonitoring];

// Hide the Journey Sharing user interface.
[self.mapView resetCustomerState];

Avec l'architecture modulaire, un utilisateur d'interface utilisateur utilise le code suivant:

// 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];