مهاجرت برای Android Consumer SDK Modularization

Consumer SDK برای Android به شما امکان می دهد با استفاده از معماری ماژولار برنامه های Ridesharing ایجاد کنید. می توانید از بخش هایی از API که می خواهید برای برنامه خاص خود استفاده کنید، استفاده کنید و آنها را با API های خود ادغام کنید. API های Consumer SDK برای ویژگی های مختلف در ماژول های جداگانه کپسوله شده اند.

اگر برنامه Ridesharing شما از نسخه های قبلی Consumer SDK استفاده می کند، برای استفاده از این معماری مدولار باید برنامه خود را ارتقا دهید. این راهنمای مهاجرت نحوه ارتقاء برنامه خود را شرح می دهد.

بررسی اجمالی

معماری مدولار Consumer SDK یک شی Session را معرفی می کند که حالت رابط کاربر را نگه می دارد. در نسخه‌های قبلی Consumer SDK، برنامه‌ها بین ایالت‌ها جریان داشتند. با این معماری ماژولار، یک شی Session ایجاد می کنید و می توانید جلسه را روی نقشه نمایش دهید. اگر هیچ جلسه ای نشان داده نشد، نقشه خالی است. دیگر حالت «خالی» یا «ابتدای» وجود ندارد.

یک شی Session نشان دهنده یک نمونه استفاده از چرخه حیات از یک ماژول است. Session ها نقاط دسترسی به API های ماژول هستند. به عنوان مثال، یک جلسه اشتراک گذاری سفر به دنبال یک سفر منفرد انجام می شود. شما با شی Session برای نظارت بر سفر تعامل دارید.

یک شی Session با یک نوع ماژول مرتبط است. رفتار شی Session به چرخه حیات شی مورد استفاده برای مقداردهی اولیه آن مرتبط است.

فرض کنید یک شی TripModel برای ردیابی TRIP_A ایجاد می کنید. اگر دوباره سعی کنید یک شی TripModel برای TRIP_A بدست آورید، همان شی TripModel را دریافت خواهید کرد. برای ردیابی TRIP_B، یک شی TripModel جدید دریافت کنید.

حالت های جلسه

یک جلسه می تواند در یکی از چندین حالت باشد:

  • یک جلسه ایجاد شده توسط یک شی Session نشان داده می شود. شما با فراخوانی متد create یک جلسه ایجاد می کنید. مثلا:

    JourneySharingSession sessionA = JourneySharingSession.createInstance(TripModelA)
    
  • یک جلسه شروع شده برای به روز رسانی داده ها و مقادیر عناصر رابط کاربری آن ثبت می شود. شما یک جلسه را با فراخوانی روش start شروع می کنید. مثلا:

    sessionA.start()
    
  • یک جلسه نشان داده شده به طور خودکار شروع می شود. عناصر رابط کاربری را نمایش می دهد و آنها را در پاسخ به به روز رسانی داده ها به روز می کند. شما یک جلسه را با فراخوانی متد showSession نشان می دهید. مثلا:

    ConsumerController.showSession(sessionA)
    
  • یک جلسه متوقف شده ، به روز رسانی داده های خود را متوقف می کند و عناصر رابط کاربری خود را به روز نمی کند. شما یک جلسه را با فراخوانی روش stop متوقف می کنید. مثلا:

    sessionA.stop()
    

استفاده از اجزای فقط داده و رابط کاربری

می‌توانید یک برنامه اشتراک‌گذاری سواری با استفاده از مؤلفه‌های فقط داده یا APIهای عنصر رابط کاربری ارائه شده توسط On-demand Rides and Deliveries Solution ایجاد کنید.

استفاده از اجزای فقط داده

برای ایجاد یک برنامه اشتراک گذاری سواری با استفاده از مؤلفه های فقط داده:

  • یک شی ConsumerApi را راه اندازی کنید.
  • شی TripModelManager را از ConsumerApi دریافت کنید.
  • برای دریافت یک شی TripModel ، یک سفر را با TripModelManager نظارت کنید.
  • ثبت تماس های برگشتی در شی TripModel .

مثال زیر نحوه استفاده از مؤلفه های فقط داده را نشان می دهد:

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

با استفاده از API های عنصر رابط کاربری

از شی ConsumerController برای دسترسی به APIهای عنصر رابط کاربری On-Demand Rides and Deliveries Solution استفاده کنید.

برای ایجاد یک برنامه اشتراک‌گذاری سواری با APIهای عنصر رابط کاربری Rides و Deliveries Solution بر اساس تقاضا:

  • شی ConsumerApi را راه اندازی کنید.
  • یک شی TripModelManager را از شی ConsumerApi دریافت کنید.
  • یک شی TripModel را از TripModelManager دریافت کنید که یک سفر را ردیابی می کند.
  • ConsumerMap[View/Fragment] به نمای برنامه اضافه کنید.
  • یک شی ConsumerController را از ConsumerMap[View/Fragment] دریافت کنید.
  • شی TripModel را در اختیار Controller قرار دهید تا یک شی JourneySharingSession به دست آید.
  • از Controller برای نمایش 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();

کد معماری مدولار تغییر می کند

اگر برنامه Ridesharing شما از نسخه‌های قبلی Consumer SDK استفاده می‌کند، معماری مدولار به‌روزرسانی‌شده به تغییراتی در کد شما نیاز دارد. این بخش برخی از این تغییرات را شرح می دهد.

مجوزهای مکان

مجوزهای FINE_LOCATION دیگر مورد نیاز Consumer 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);

جدید کردن نقشه

وقتی هیچ جلسه فعالی وجود ندارد، نمای نقشه یا قطعه دیگر در زمان شروع اولیه روی مکان کاربر بزرگنمایی نمی کند. تا زمانی که ویژگی 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);

سفارشی سازی

FAB سفارشی سواری و راه حل تحویل بر اساس تقاضا از نقشه حذف شده است.

FAB سفارشی

روش‌های مرتبط برای FAB نیز حذف شده‌اند:

ConsumerController.isMyLocationFabEnabled()
ConsumerController.setMyLocationFabEnabled()