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 ceMapViewSession
n'a pas encore été ajouté à unmapView
, ou qu'il a été supprimé d'unmapView
. Lorsque l'instanceMapViewSession
a été supprimée d'unmapView
, la méthodedidRemoveFromMapView
est appelée.L'appel de la méthode
hideMapViewSession
ouhideAllMapViewSessions
supprimemapViewSession
d'unmapView
:[_mapView hideMapViewSession:mapViewSessionA];
ou
[_mapView hideAllMapViewSessions];
L'état
GMTCMapViewSessionStateActive
indique que ceMapViewSession
a été ajouté à unmapView
. Lorsqu'une instance deMapViewSession
a été ajoutée à unmapView
, la méthodedidAddToMapView
est appelée. L'appel de la méthodeshowMapViewSession
ajoutemapViewSession
à la ciblemapView
:[_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:
- Initialisez un objet
GMTCServices
en spécifiant l'ID et le fournisseur de jetons d'accès. - Récupérez la propriété
tripService
à partir de l'instance partagée de l'objetGMTCServices
. - Créez ou récupérez une instance d'un objet
GMTCTripModel
pour un trajet spécifié à l'aide de la méthodetripModelForTripName
de l'objettripService
. - 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:
- Initialisez un objet
GMTCServices
en spécifiant l'ID et le fournisseur de jetons d'accès. - Initialisez un objet
GMTCMapView
pour le rendu de la carte de base. - Récupérez la propriété
tripService
à partir de l'instance partagée de l'objetGMTCServices
. - Créez ou récupérez une instance d'un objet
GMTCTripModel
pour un trajet spécifié à l'aide de la méthodetripModelForTripName
de l'objettripService
. - Créez un objet
GMTCJourneySharingSession
avec l'instanceGMTCTripModel
. - Affichez l'objet
GMTCJourneySharingSession
surmapView
. - 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];