نقل بيانات التطبيق المتوافق مع Android SDK SDK

تتيح لك "حزمة تطوير البرامج (SDK) الخاصة بالمستهلكين" لنظام التشغيل Android إنشاء تطبيقات مشاركة الرحلات باستخدام بنية نموذجية. يمكنك استخدام أجزاء واجهة برمجة التطبيقات التي تريدها لاستخدامها مع تطبيقك ودمجها مع واجهات برمجة التطبيقات الخاصة بك. حزمة SDK للمستهلكين ويتم حصر واجهات برمجة التطبيقات للميزات المختلفة في وحدات منفصلة.

إذا كان تطبيق "مشاركة الرحلة" يستخدم إصدارات سابقة من حزمة تطوير البرامج (SDK) الخاصة بالمستهلك، فستحتاج إلى ترقية تطبيقك لاستخدام هذه البنية النمطية. هذا النمط دليل نقل البيانات يوضّح كيفية ترقية تطبيقك

نظرة عامة

تم إطلاق بنية حزمة تطوير البرامج (SDK) النموذجية للمستهلكين عنصر جلسة يحمل حالة واجهة المستخدم. في الإصدارات السابقة حزمة SDK للمستهلكين، تدفقت التطبيقات بين الحالات. مع هذه البنية النمطية، يمكنك إنشاء كائن جلسة وسيكون لديك خيار عرض الجلسة على الخريطة. في حال عدم التواجد في أي جلسات تظهر، تكون الخريطة فارغة. لم يعد هناك "فارغ" أو "مهيئ" الولاية.

يمثل كائن الجلسة مثيل استخدام دورة حياة واحدة لوحدة. الجلسات هي نقاط الوصول إلى واجهات برمجة تطبيقات الوحدات. على سبيل المثال: تتبع جلسة "مشاركة الرحلة" رحلة واحدة. أنت تتفاعل باستخدام كائن "الجلسة" لمراقبة الرحلة.

يرتبط كائن الجلسة بنوع وحدة. كائن الجلسة يرتبط السلوك بدورة حياة الكائن المستخدم في إعداده.

لنفترض أنك أنشأت كائن TripModel لتتبع TRIP_A. إذا حاولت الحصول على كائن TripModel لـ TRIP_A مرة أخرى، سوف الحصول على كائن TripModel نفسه. لتتبع TRIP_B، احصل على رمز جديد عنصر TripModel.

حالات الجلسة

يمكن أن تكون الجلسة بحالة من عدة حالات:

  • يتم تمثيل الجلسة التي تم إنشاؤها من خلال كائن "جلسة". أنت تقوم بإنشاء لجلسة واحدة عن طريق استدعاء طريقة create. على سبيل المثال:

    JourneySharingSession sessionA = JourneySharingSession.createInstance(TripModelA)
    
  • يتم تسجيل جلسة تم بدؤها لإجراء تعديلات على البيانات والقيم. لعناصر واجهة المستخدم الخاصة به. تبدأ جلسة باستدعاء طريقة start. على سبيل المثال:

    sessionA.start()
    
  • تبدأ الجلسة المعروضة تلقائيًا. يعرض عناصر واجهة المستخدم وتحديثها استجابةً لتحديثات البيانات. أنت تعرض جلسة عن طريق استدعاء طريقة showSession. على سبيل المثال:

    ConsumerController.showSession(sessionA)
    
  • تتوقف الجلسة المتوقفة عن إعادة تحميل بياناتها وتتوقف عن تحديث بياناتها. وعناصر واجهة المستخدم. يمكنك إيقاف جلسة من خلال استدعاء طريقة stop. على سبيل المثال:

    sessionA.stop()
    

استخدام مكونات البيانات فقط وواجهة المستخدم

يمكنك إنشاء تطبيق لمشاركة الرحلات باستخدام أيّ من مكوّنات البيانات فقط. أو واجهات برمجة التطبيقات لعنصر واجهة المستخدم التي يوفرها حل عمليات التسليم والرحلات عند الطلب.

استخدام مكونات البيانات فقط

لإنشاء تطبيق مشاركة الرحلات باستخدام مكونات البيانات فقط:

  • إعداد عنصر ConsumerApi
  • الحصول على كائن TripModelManager من ConsumerApi.
  • يمكنك بدء تتبُّع رحلة باستخدام TripModelManager للحصول على عنصر TripModel.
  • تسجيل عمليات الاستدعاء على الكائن TripModel

يوضح المثال التالي كيفية استخدام مكونات البيانات فقط:

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

استخدام واجهات برمجة التطبيقات لعنصر واجهة المستخدم

استخدام الكائن ConsumerController للوصول إلى البيانات واجهات المستخدم الخاصة بعنصر واجهة المستخدم لحل الرحلات عند الطلب وعمليات التسليم.

لإنشاء تطبيق لمشاركة الرحلات باستخدام واجهة مستخدم حلول الرحلات عند الطلب والتسليمات واجهات برمجة التطبيقات للعنصر:

  • إعداد كائن ConsumerApi.
  • الحصول على كائن TripModelManager من كائن ConsumerApi.
  • يمكنك الحصول على عنصر TripModel من TripModelManager الذي يتتبّع رحلة واحدة.
  • إضافة ConsumerMap[View/Fragment] إلى عرض التطبيق.
  • الحصول على كائن ConsumerController من ConsumerMap[View/Fragment].
  • يُرجى تقديم الكائن TripModel إلى وحدة التحكّم للحصول على عنصر JourneySharingSession.
  • استخدِم وحدة التحكّم لعرض 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) الخاصة بالمستهلك، سوف تتطلب البنية النمطية المحدثة بعض التغييرات على التعليمة البرمجية. ويوضّح هذا القسم بعض هذه التغييرات.

أذونات تحديد الموقع

لم يعد الإذنان (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):

ConsumerController.isMyLocationFabEnabled()
ConsumerController.setMyLocationFabEnabled()