Migration pour la modularisation du SDK grand public Android

Le SDK grand public pour Android vous permet de créer des applications de partage de course à l'aide de une architecture modulaire. Vous pouvez utiliser les parties de l'API à utiliser pour votre application et intégrez-les à vos propres API. Le SDK grand public Les API correspondant à 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 grand public, vous devrez mettre à niveau votre application pour utiliser cette architecture modulaire. Ce guide de migration explique comment mettre à niveau votre application.

Présentation

L'architecture modulaire du SDK Consumer 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 afficher la session sur la carte. Si aucune session sont affichées, la carte est vide. Il n'existe plus de champ "vide" ou "initialisée" de l'état.

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

Un objet Session est associé à un type de module. 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 récupèrent le même objet TripModel. Pour suivre TRIP_B, obtenez un nouveau TripModel.

États des sessions

Une session peut être associée à l'un des é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 les mises à jour des données et des valeurs de ses éléments d'interface utilisateur. Pour démarrer une session, appelez la méthode start. Exemple :

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

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

    sessionA.stop()
    

Utiliser des composants d'interface utilisateur et de données uniquement

Vous pouvez créer une application de partage de course à l'aide de composants de données uniquement ou les API d'élément d'interface utilisateur fournies par On-demand Rides and Deliveries Solution.

Utiliser des composants de données uniquement

Pour créer une application de partage de course à l'aide de composants basés uniquement sur les données:

  • Initialisez un objet ConsumerApi.
  • Obtenez l'objet TripModelManager à partir de ConsumerApi.
  • Démarrez la surveillance d'un trajet avec TripModelManager pour recevoir un objet TripModel.
  • Enregistrez des rappels sur l'objet TripModel.

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

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

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

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

Créer une application de partage de course avec l'interface utilisateur de la solution On-demand Rides and Deliveries de l'élément:

  • Initialisez l'objet ConsumerApi.
  • Obtenez un objet TripModelManager à partir de l'objet ConsumerApi.
  • Obtenez un objet TripModel à partir de 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 d'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 d'architecture modulaire

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

Autorisation d'accéder à la position

Les autorisations FINE_LOCATION ne sont plus nécessaires par le SDK grand public.

Surveillance des trajets

La nouvelle architecture modulaire nécessite des modifications de code pour les deux de la couche de données et de l'interface utilisateur.

Dans les versions précédentes, un utilisateur de la couche de données pouvait 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() {})

Avec l'architecture modulaire, un utilisateur de la couche de données utiliserait le code suivant:

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

Dans les versions antérieures, 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 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);

Recentrage de la carte

La vue ou le fragment de la carte ne fait plus de zoom sur la position de l'utilisateur. lors de l'initialisation lorsqu'aucune session n'est active. Elle continuera zoomer automatiquement pour afficher la session de partage de parcours active tant que lorsque la fonctionnalité AutoCamera est activée. L'appareil photo automatique est activé par défaut.

Dans les versions précédentes, vous utilisiez le code suivant pour centrer l'appareil photo pour la session active en cours:

consumerController.centerMapForState()

Avec l'architecture modulaire, vous utiliseriez le code suivant:

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

Pour désactiver la fonctionnalité Appareil photo automatique dans les versions antérieures, utilisez le code suivant:

consumerController.disableAutoCamera(true);

Avec l'architecture modulaire, vous utiliseriez le code suivant:

consumerController.setAutoCameraEnabled(false);

Personnalisation

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