অ্যান্ড্রয়েড কনজিউমার SDK মডুলারাইজেশনের জন্য মাইগ্রেশন

অ্যান্ড্রয়েডের জন্য কনজিউমার SDK আপনাকে মডুলার আর্কিটেকচার ব্যবহার করে রাইডশেয়ারিং অ্যাপ তৈরি করতে দেয়। আপনি API এর অংশগুলি ব্যবহার করতে পারেন যা আপনি আপনার নির্দিষ্ট অ্যাপের জন্য ব্যবহার করতে চান এবং সেগুলিকে আপনার নিজস্ব APIগুলির সাথে একীভূত করতে পারেন৷ বিভিন্ন বৈশিষ্ট্যের জন্য উপভোক্তা SDK APIগুলি পৃথক মডিউলগুলিতে অন্তর্ভুক্ত করা হয়েছে৷

আপনার রাইডশেয়ারিং অ্যাপ যদি কনজিউমার SDK-এর আগের সংস্করণ ব্যবহার করে, তাহলে এই মডুলার আর্কিটেকচার ব্যবহার করার জন্য আপনাকে আপনার অ্যাপ আপগ্রেড করতে হবে। এই মাইগ্রেশন গাইড বর্ণনা করে কিভাবে আপনার অ্যাপ আপগ্রেড করতে হয়।

ওভারভিউ

কনজিউমার SDK মডুলার আর্কিটেকচার একটি সেশন অবজেক্ট প্রবর্তন করে যা ইউজার ইন্টারফেস স্টেট ধারণ করে। উপভোক্তা SDK-এর পূর্ববর্তী সংস্করণগুলিতে, অ্যাপগুলি রাজ্যগুলির মধ্যে প্রবাহিত হয়েছিল৷ এই মডুলার আর্কিটেকচারের সাহায্যে, আপনি একটি সেশন অবজেক্ট তৈরি করেন এবং ম্যাপে সেশনটি প্রদর্শন করার বিকল্প থাকে। যদি কোনো সেশন দেখানো না হয়, তাহলে মানচিত্রটি ফাঁকা থাকে। একটি "খালি" বা "শুরু করা" অবস্থা আর নেই।

একটি সেশন অবজেক্ট একটি মডিউলের একটি একক জীবনচক্র ব্যবহারের উদাহরণ উপস্থাপন করে। সেশন হল মডিউল API-এর অ্যাক্সেস পয়েন্ট। উদাহরণস্বরূপ, একটি জার্নি শেয়ারিং সেশন একটি একক ট্রিপ অনুসরণ করে। আপনি ট্রিপ নিরীক্ষণ করার জন্য সেশন অবজেক্টের সাথে ইন্টারঅ্যাক্ট করেন।

একটি সেশন অবজেক্ট একটি মডিউল টাইপের সাথে যুক্ত। সেশন অবজেক্টের আচরণটি শুরু করার জন্য ব্যবহৃত বস্তুর জীবনচক্রের সাথে যুক্ত।

ধরুন আপনি 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()
    

শুধুমাত্র ডেটা এবং ইউজার ইন্টারফেস উপাদান ব্যবহার করে

আপনি শুধুমাত্র ডেটা উপাদান বা অন-ডিমান্ড রাইডস এবং ডেলিভারি সলিউশন দ্বারা প্রদত্ত ব্যবহারকারী ইন্টারফেস উপাদান API ব্যবহার করে একটি রাইড শেয়ারিং অ্যাপ তৈরি করতে পারেন।

শুধুমাত্র ডেটা উপাদান ব্যবহার করে

শুধুমাত্র ডেটা উপাদান ব্যবহার করে একটি রাইডশেয়ারিং অ্যাপ তৈরি করতে:

  • একটি ConsumerApi অবজেক্ট শুরু করুন।
  • ConsumerApi থেকে TripModelManager অবজেক্টটি পান।
  • একটি TripModel অবজেক্ট পেতে TripModelManager এর সাথে একটি ট্রিপ পর্যবেক্ষণ করা শুরু করুন।
  • TripModel অবজেক্টে কলব্যাক নিবন্ধন করুন।

নিম্নলিখিত উদাহরণ দেখায় কিভাবে শুধুমাত্র ডেটা উপাদান ব্যবহার করতে হয়:

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

ইউজার ইন্টারফেস এলিমেন্ট এপিআই ব্যবহার করে

অন-ডিমান্ড রাইডস এবং ডেলিভারি সলিউশন ইউজার ইন্টারফেস এলিমেন্ট এপিআই অ্যাক্সেস করতে ConsumerController অবজেক্ট ব্যবহার করুন।

অন-ডিমান্ড রাইডস এবং ডেলিভারি সলিউশন ইউজার ইন্টারফেস এলিমেন্ট API-এর সাথে একটি রাইডশেয়ারিং অ্যাপ তৈরি করতে:

  • ConsumerApi অবজেক্ট শুরু করুন।
  • ConsumerApi অবজেক্ট থেকে একটি TripModelManager অবজেক্ট পান।
  • TripModelManager থেকে একটি TripModel অবজেক্ট পান যা একটি ট্রিপ ট্র্যাক করে।
  • অ্যাপ্লিকেশন ভিউতে ConsumerMap[View/Fragment] যোগ করুন।
  • ConsumerMap[View/Fragment] থেকে একটি ConsumerController অবজেক্ট পান।
  • একটি JourneySharingSession অবজেক্ট পেতে কন্ট্রোলারকে TripModel অবজেক্ট প্রদান করুন।
  • JourneySharingSession দেখানোর জন্য কন্ট্রোলার ব্যবহার করুন।

নিম্নলিখিত উদাহরণ দেখায় কিভাবে ব্যবহারকারী ইন্টারফেস API ব্যবহার করতে হয়:

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-এর আগের সংস্করণ ব্যবহার করে, তাহলে আপডেট হওয়া মডুলার আর্কিটেকচারে আপনার কোডে কিছু পরিবর্তনের প্রয়োজন হবে। এই বিভাগে সেই পরিবর্তনগুলির কিছু বর্ণনা করা হয়েছে।

অবস্থানের অনুমতি

FINE_LOCATION অনুমতির আর গ্রাহক SDK-এর প্রয়োজন নেই৷

ট্রিপ মনিটরিং

আপডেট করা মডুলার আর্কিটেকচারের জন্য ডেটা-লেয়ার এবং ইউজার-ইন্টারফেস ব্যবহারকারী উভয়ের জন্য কোড পরিবর্তন প্রয়োজন।

পূর্ববর্তী সংস্করণগুলিতে, একজন ডেটা-লেয়ার ব্যবহারকারী নিম্নলিখিত কোড ব্যবহার করে ট্রিপ মনিটরিং পরিচালনা করতে পারে:

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

মানচিত্র রিসেন্টারিং

কোনো সেশন সক্রিয় না থাকলে মানচিত্র দৃশ্য বা খণ্ড আরম্ভে ব্যবহারকারীর অবস্থানে জুম করে না। যতক্ষণ পর্যন্ত অটোক্যামেরা বৈশিষ্ট্যটি সক্রিয় থাকবে ততক্ষণ সক্রিয় যাত্রা ভাগ করে নেওয়ার সেশনটি দেখাতে এটি এখনও স্বয়ংক্রিয়ভাবে জুম হবে। অটোক্যামেরা ডিফল্টরূপে সক্ষম।

পূর্ববর্তী সংস্করণগুলিতে, আপনি বর্তমান সক্রিয় অধিবেশনের জন্য ক্যামেরা কেন্দ্রীভূত করতে নিম্নলিখিত কোড ব্যবহার করবেন:

consumerController.centerMapForState()

মডুলার আর্কিটেকচার ব্যবহার করে, আপনি নিম্নলিখিত কোড ব্যবহার করবেন:

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

পূর্ববর্তী সংস্করণগুলিতে অটোক্যামেরা বৈশিষ্ট্যটি নিষ্ক্রিয় করতে, আপনি নিম্নলিখিত কোডটি ব্যবহার করবেন:

consumerController.disableAutoCamera(true);

মডুলার আর্কিটেকচার ব্যবহার করে, আপনি নিম্নলিখিত কোড ব্যবহার করবেন:

consumerController.setAutoCameraEnabled(false);

কাস্টমাইজেশন

অন-ডিমান্ড রাইডস এবং ডেলিভারি সলিউশন কাস্টম FAB মানচিত্র থেকে মুছে ফেলা হয়েছে।

কাস্টম FAB

FAB-এর জন্য সংশ্লিষ্ট পদ্ধতিগুলিও সরানো হয়েছে:

ConsumerController.isMyLocationFabEnabled()
ConsumerController.setMyLocationFabEnabled()