Android उपभोक्ता SDK मॉड्यूल का माइग्रेशन

Android के लिए उपभोक्ता SDK टूल से, मॉड्यूलर आर्किटेक्चर का इस्तेमाल करके राइडशेयर करने वाले ऐप्लिकेशन बनाए जा सकते हैं. एपीआई के उन हिस्सों का इस्तेमाल करें जिन्हें आपको अपने ऐप्लिकेशन के लिए इस्तेमाल करना है. साथ ही, उन्हें अपने एपीआई से इंटिग्रेट किया जा सकता है. अलग-अलग सुविधाओं के लिए, उपभोक्ता SDK टूल के एपीआई को अलग-अलग मॉड्यूल में इकट्ठा किया जाता है.

अगर आपका राइडशेयरिंग ऐप्लिकेशन, उपभोक्ता SDK के पुराने वर्शन का इस्तेमाल करता है, तो आपको इस मॉड्यूलर आर्किटेक्चर का इस्तेमाल करने के लिए, अपना ऐप्लिकेशन अपग्रेड करना होगा. इस माइग्रेशन गाइड में, अपने ऐप्लिकेशन को अपग्रेड करने का तरीका बताया गया है.

खास जानकारी

Consumer SDK मॉड्यूलर आर्किटेक्चर से, एक ऐसा सेशन ऑब्जेक्ट मिलता है जिसमें यूज़र इंटरफ़ेस स्टेटस रहता है. Consumer SDK के पिछले वर्शन में, ऐप्लिकेशन एक स्टेटस से दूसरे स्टेटस के बीच ट्रांसफ़र होते थे. इस मॉड्यूलर आर्किटेक्चर से, सेशन ऑब्जेक्ट बनाया जा सकता है और सेशन को मैप पर दिखाया जा सकता है. अगर कोई सेशन नहीं दिखेगा, तो मैप खाली होगा. अब कोई "खाली" या "शुरू की गई" स्थिति नहीं है.

सेशन ऑब्जेक्ट, किसी मॉड्यूल के एक लाइफ़साइकल इस्तेमाल के इंस्टेंस को दिखाता है. सेशन, मॉड्यूल एपीआई में ऐक्सेस पॉइंट होते हैं. उदाहरण के लिए, गतिविधि शेयर करने वाले सेशन में एक यात्रा के बारे में बताया गया है. यात्रा को मॉनिटर करने के लिए आप सेशन ऑब्जेक्ट के साथ इंटरैक्ट करते हैं.

सेशन ऑब्जेक्ट, किसी मॉड्यूल टाइप से जुड़ा होता है. सेशन ऑब्जेक्ट का व्यवहार, उसे शुरू करने के लिए इस्तेमाल किए गए ऑब्जेक्ट के लाइफ़साइकल से जुड़ा होता है.

मान लें कि आप TRIP_A को ट्रैक करने के लिए एक TripModel ऑब्जेक्ट बनाते हैं. अगर TRIP_A के लिए फिर से TripModel ऑब्जेक्ट पाने की कोशिश की जाती है, तो आपको वही TripModel ऑब्जेक्ट मिलेगा. TRIP_B को ट्रैक करने के लिए, नया TripModel ऑब्जेक्ट पाएं.

सेशन की स्थितियां

कोई सेशन कई स्थितियों में से किसी एक में हो सकता है:

  • बनाया गया सेशन को सेशन ऑब्जेक्ट के ज़रिए दिखाया जाता है. सेशन बनाने के लिए, create तरीके का इस्तेमाल करें. उदाहरण के लिए:

    JourneySharingSession sessionA = JourneySharingSession.createInstance(TripModelA)
    
  • शुरू किया गया सेशन, अपने यूज़र इंटरफ़ेस एलिमेंट के डेटा और वैल्यू को अपडेट करने के लिए रजिस्टर किया जाता है. सेशन की शुरुआत करने के लिए, start तरीके को कॉल करें. उदाहरण के लिए:

    sessionA.start()
    
  • दिखाया गया सेशन अपने-आप शुरू हो जाता है. यह यूज़र इंटरफ़ेस के एलिमेंट दिखाता है और डेटा अपडेट होने पर उन्हें अपडेट करता है. सेशन दिखाने के लिए, showSession तरीके को कॉल किया जाता है. उदाहरण के लिए:

    ConsumerController.showSession(sessionA)
    
  • बंद किया गया सेशन अपने डेटा को रीफ़्रेश करना बंद कर देता है और अपने यूज़र इंटरफ़ेस एलिमेंट को अपडेट करना बंद कर देता है. stop तरीके का इस्तेमाल करके सेशन को रोका जाता है. उदाहरण के लिए:

    sessionA.stop()
    

सिर्फ़ डेटा वाले और यूज़र इंटरफ़ेस कॉम्पोनेंट का इस्तेमाल करना

सिर्फ़ डेटा वाले कॉम्पोनेंट या 'मांग पर राइड और डिलीवरी सलूशन' से मिले यूज़र इंटरफ़ेस एलिमेंट एपीआई का इस्तेमाल करके, राइडशेयरिंग ऐप्लिकेशन बनाया जा सकता है.

सिर्फ़ डेटा वाले कॉम्पोनेंट का इस्तेमाल करना

सिर्फ़ डेटा वाले कॉम्पोनेंट का इस्तेमाल करके राइडशेयरिंग ऐप्लिकेशन बनाने के लिए:

  • ConsumerApi ऑब्जेक्ट को शुरू करें.
  • ConsumerApi से TripModelManager ऑब्जेक्ट पाएं.
  • TripModel ऑब्जेक्ट पाने के लिए, TripModelManager की मदद से यात्रा की निगरानी करना शुरू करें.
  • TripModel ऑब्जेक्ट पर कॉलबैक रजिस्टर करें.

यहां दिए गए उदाहरण में, सिर्फ़ डेटा वाले कॉम्पोनेंट इस्तेमाल करने का तरीका बताया गया है:

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

यूज़र इंटरफ़ेस एलिमेंट एपीआई का इस्तेमाल करना

'मांग पर राइड और डिलीवरी समाधान' के यूज़र इंटरफ़ेस एलिमेंट एपीआई को ऐक्सेस करने के लिए, ConsumerController ऑब्जेक्ट का इस्तेमाल करें.

'मांग पर राइड और डिलीवरी समाधान' के यूज़र इंटरफ़ेस एलिमेंट के एपीआई की मदद से, राइडशेयर करने वाला ऐप्लिकेशन बनाने के लिए:

  • ConsumerApi ऑब्जेक्ट को शुरू करें.
  • ConsumerApi ऑब्जेक्ट से कोई TripModelManager ऑब्जेक्ट पाएं.
  • TripModelManager से ऐसा TripModel ऑब्जेक्ट पाएं जो एक यात्रा को ट्रैक करता है.
  • ऐप्लिकेशन व्यू में ConsumerMap[View/Fragment] जोड़ें.
  • ConsumerMap[View/Fragment] से ConsumerController ऑब्जेक्ट पाएं.
  • JourneySharingSession ऑब्जेक्ट पाने के लिए, कंट्रोलर को TripModel ऑब्जेक्ट दें.
  • JourneySharingSession दिखाने के लिए कंट्रोलर का इस्तेमाल करें.

नीचे दिए गए उदाहरण में, यूज़र इंटरफ़ेस एपीआई को इस्तेमाल करने का तरीका बताया गया है:

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

मॉड्यूलर आर्किटेक्चर कोड में बदलाव

अगर आपका राइडशेयरिंग ऐप्लिकेशन, उपभोक्ता SDK के पुराने वर्शन का इस्तेमाल करता है, तो अपडेट किए गए मॉड्यूलर आर्किटेक्चर को देखने के लिए आपके कोड में कुछ बदलाव करने होंगे. इस सेक्शन में, उनमें से कुछ बदलावों के बारे में बताया गया है.

जगह की जानकारी की अनुमतियाँ

Consumer SDK टूल के लिए, अब FINE_LOCATION अनुमतियों की ज़रूरत नहीं है.

यात्रा पर नज़र रखना

अपडेट किए गए मॉड्यूलर आर्किटेक्चर में, डेटा-लेयर और यूज़र-इंटरफ़ेस, दोनों के उपयोगकर्ताओं के लिए कोड में बदलाव करने की ज़रूरत होती है.

पुराने वर्शन में, डेटा-लेयर उपयोगकर्ता नीचे दिए गए कोड का इस्तेमाल करके ट्रिप मॉनिटरिंग को हैंडल कर सकता है:

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

मॉड्यूलर आर्किटेक्चर का इस्तेमाल करके, डेटा-लेयर उपयोगकर्ता इस कोड का इस्तेमाल करेगा:

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

पुराने वर्शन में, यूज़र-इंटरफ़ेस इस्तेमाल करने वाला व्यक्ति नीचे दिए गए कोड का इस्तेमाल करके, यात्रा से जुड़ी निगरानी की कार्रवाइयां कर सकता था:

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

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

मॉड्यूलर आर्किटेक्चर का इस्तेमाल करके, यूज़र-इंटरफ़ेस का इस्तेमाल करने वाला इस कोड का इस्तेमाल करेगा:

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

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

मैप को फिर से बीच में लाना

कोई सेशन चालू न होने पर, मैप व्यू या फ़्रैगमेंट, शुरू करने पर उपयोगकर्ता की जगह को ज़ूम नहीं करता है. अगर AutoCamera सुविधा चालू है, तो उस पर गतिविधि शेयर करने वाला सेशन अपने-आप ज़ूम होगा. AutoCamera डिफ़ॉल्ट रूप से चालू होता है.

पुराने वर्शन में, मौजूदा सेशन में कैमरे को सेंटर में रखने के लिए इस कोड का इस्तेमाल किया जाता था:

consumerController.centerMapForState()

मॉड्यूलर आर्किटेक्चर का इस्तेमाल करके, आपको इस कोड का इस्तेमाल करना होगा:

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

पुराने वर्शन में AutoCamera सुविधा को बंद करने के लिए, आपको नीचे दिए गए कोड का इस्तेमाल करना होगा:

consumerController.disableAutoCamera(true);

मॉड्यूलर आर्किटेक्चर का इस्तेमाल करके, आपको इस कोड का इस्तेमाल करना होगा:

consumerController.setAutoCameraEnabled(false);

पसंद के मुताबिक बनाएं

मैप से, ऑन-डिमांड राइड और डिलीवरी सलूशन कस्टम एफ़एबी को हटा दिया गया है.

पसंद के मुताबिक एफ़एबी

एफ़एबी से जुड़े इससे जुड़े तरीके भी हटा दिए गए हैं:

ConsumerController.isMyLocationFabEnabled()
ConsumerController.setMyLocationFabEnabled()