Migration pour la modularisation du SDK grand public Android

Le SDK grand public pour Android 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 Session 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 Session et vous avez la possibilité d'afficher la session sur la carte. Si aucune session ne s'affiche, la carte est vide. Il n'y a plus d'état "vide" ou "initialisé".

Un objet Session 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 Session pour surveiller le trajet.

Un objet Session est associé à un type de module. Le comportement de l'objet Session est lié au cycle de vie de l'objet utilisé pour l'initialiser.

Supposons que vous créiez un objet TripModel pour suivre Trip_A. Si vous essayez à nouveau d'obtenir un objet TripModel pour Trip_A, vous obtiendrez le même objet TripModel. Pour suivre Trip_B, obtenez un nouvel objet TripModel.

États des sessions

Une session peut être associée à l'un des différents états suivants:

  • Une session créée est représentée par un objet Session. Vous créez une session en appelant la méthode create. Exemple :

    JourneySharingSession sessionA = JourneySharingSession.createInstance(TripModelA)
    
  • Une session démarrée est enregistrée pour recevoir les mises à jour des données et des valeurs de ses éléments d'interface utilisateur. Vous démarrez une session en appelant la méthode start. Exemple :

    sessionA.start()
    
  • Une session affichée démarre automatiquement. Elle affiche les éléments de l'interface utilisateur et les met à jour en réponse aux mises à jour des données. Pour afficher une session, appelez la méthode showSession. Exemple :

    ConsumerController.showSession(sessionA)
    
  • Une session arrêtée cesse d'actualiser ses données et de mettre à jour ses éléments d'interface utilisateur. Pour arrêter une session, appelez la méthode stop. Exemple :

    sessionA.stop()
    

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 ConsumerApi.
  • Obtenez l'objet TripModelManager à partir de ConsumerApi.
  • Commencez à surveiller un trajet avec le TripModelManager pour recevoir un objet TripModel.
  • Enregistrez des rappels sur l'objet TripModel.

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

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

Utiliser les API d'élément d'interface utilisateur

Utilisez l'objet ConsumerController pour accéder aux API d'élément d'interface utilisateur de la solution On-demand Rides and Deliveries.

Pour créer une application de partage de course avec les API de l'élément d'interface utilisateur de la solution On-demand Rides and Deliveries:

  • Initialisez l'objet ConsumerApi.
  • Obtenez un objet TripModelManager à partir de l'objet ConsumerApi.
  • Obtenez un objet TripModel à partir du TripModelManager qui suit un trajet.
  • Ajoutez ConsumerMap[View/Fragment] à la vue de l'application.
  • Obtenez un objet ConsumerController à partir de ConsumerMap[View/Fragment].
  • Fournissez l'objet TripModel au contrôleur pour obtenir un objet JourneySharingSession.
  • Utilisez le contrôleur pour afficher JourneySharingSession.

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

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();

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écessitera quelques modifications de votre code. Cette section décrit certaines de ces modifications.

Autorisations d'accéder à la position

Les autorisations FINE_LOCATION ne sont plus requises par le SDK client.

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:

ConsumerApi.initialize()
TripModelManager manager = ConsumerApi.getTripManager()
manager.setActiveTrip("trip_id")
manager.registerActiveTripCallback(new TripModelCallback() {})

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

ConsumerApi.initialize()
TripModelManager manager = ConsumerApi.getTripManager()
TripModel tripA = TripModelManager.getTrip("trip_A")
tripA.registerTripCallback(new TripModelCallback() {})

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

ConsumerApi.initialize()
TripModelManager manager = ConsumerApi.getTripManager()
manager.setActiveTrip("trip_id")

ConsumerController controller = consumerGoogleMap.getConsumerController();
consumerController.startJourneySharing()

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

ConsumerApi.initialize()
TripModelManager manager = ConsumerApi.getTripManager()
TripModel tripA = TripModelManager.getTripModel("trip_A");

ConsumerController controller = consumerGoogleMap.getConsumerController();
JourneySharingSession jsSessionA = JourneySharingSession.createInstance(tripA);
controller.showSession(jsSessionA);

centrage de la carte ;

Lorsqu'aucune session n'est active, la vue de carte ou le fragment ne zoome plus sur la position de l'utilisateur lors de l'initialisation. Tant que la fonctionnalité AutoCamera est activée, le zoom automatique affiche toujours la session de partage de parcours active. La fonctionnalité Caméra automatique est activée par défaut.

Dans les versions précédentes, vous deviez utiliser le code suivant pour centrer la caméra au cours de la session active:

consumerController.centerMapForState()

Avec l'architecture modulaire, vous devez utiliser le code suivant:

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

Pour désactiver la fonctionnalité Caméra automatique dans les versions antérieures, vous devez utiliser le code suivant:

consumerController.disableAutoCamera(true);

Avec l'architecture modulaire, vous devez utiliser le code suivant:

consumerController.setAutoCameraEnabled(false);

Fonctionnalités

Le bouton d'action flottant personnalisé de la solution On-demand Rides and Deliveries a été supprimé de la carte.

Bouton d'action flottant personnalisé

Les méthodes associées au bouton d'action flottant ont également été supprimées:

ConsumerController.isMyLocationFabEnabled()
ConsumerController.setMyLocationFabEnabled()