مقدّمة
توفّر حزمة تطوير البرامج للتنقّل (Nav SDK) ميزة ممتازة للتنقّل خطوة بخطوة يمكن أن تكون مفيدة جدًا للعملاء والسائقين، خاصةً السائقين الجدد أو السائقين الذين لا يعرفون المنطقة جيدًا. ومع ذلك، هناك حالات استخدام معيّنة لا تريد فيها الشركات أن تشتّت انتباه السائقين عن الطريق من خلال واجهة المستخدم الخاصة بالتنقّل خطوة بخطوة، ولكنّها تريد تتبُّع المواقع الجغرافية للمركبات والاستماع إلى الأحداث ذات الصلة بالمسار الذي تتّبعه. ومن الأمثلة على ذلك سائقو الشاحنات، خاصةً إذا كانوا ينقلون مواد خطرة. قد لا تحتاج الشركات الأخرى التي تقدّم خدمات التوصيل باستخدام وسائل نقل مختلفة، مثل المشي لمسافات قصيرة، إلى تفعيل ميزة "التوجيه خطوة بخطوة" أيضًا، ما يساعد في الحفاظ على عمر بطارية الجهاز.
المستوى
يوضّح هذا المستند كيف يمكن للشركات إخفاء خريطة التنقّل (العرض) من حزمة تطوير البرامج للتنقّل والاستفادة في الوقت نفسه من جميع ميزات حزمة تطوير البرامج للتنقّل فيما يتعلّق بتتبُّع الموقع الجغرافي والاشتراكات في الأحداث وعمليات الاسترجاع. يمكن استخدام البيانات التي يتم جمعها من حزمة تطوير البرامج (SDK) الخاصة بخدمة "الملاحة" في وضع التشغيل بدون واجهة مستخدم رسومية لتحسين إمكانية تتبُّع المركبات وفهم الوقت المقدَّر للوصول بشكلٍ أكثر دقة، ما يؤدي في النهاية إلى الشفافية والكفاءة.
Navigation SDK
حزمة تطوير البرامج للتنقّل هي مكتبة أصلية لنظام التشغيل Android أو iOS يتم إضافتها إلى تطبيق السائق، وهي مسؤولة في سياق التنقّل عن:
- الحصول على المواقع الجغرافية التي تم ضبطها على الطريق من التطبيق الذي يعرضها تكون المواقع الجغرافية المحدّدة على الطرق أكثر دقة من FusedLocationProvider (FLP) في Android، لأنّها تستخدم شبكة الطرق من Google لتحديد المواقع الجغرافية على أقرب جزء من الطريق، ما يجعل تقديرات أوقات الوصول وغيرها من المعلومات التي يقدّمها FLP أكثر دقة.
- تجربة التنقّل خطوة بخطوة التي تتيح للسائقين الانتقال بكفاءة من النقطة "أ" إلى النقطة "ب" مع الأخذ في الاعتبار حركة المرور في الوقت الفعلي وقيود المسار الأخرى
- إطلاق الأحداث استنادًا إلى تقدّم المسار والموقع الجغرافي والسرعة وما إلى ذلك من خلال أدوات معالجة الأحداث وعمليات رد الاتصال المسجّلة
الخدمة التلقائية
عندما يستخدم العملاء حزمة تطوير البرامج (SDK) الخاصة بخدمة "التنقّل"، يُفترض أنّهم يحتاجون إلى ميزة "التوجيه خطوة بخطوة". لهذا السبب، تقدّم مستندات حزمة تطوير البرامج (SDK) الخاصة بخدمة "التنقّل" (Android وiOS) تعليمات حول كيفية تنفيذ حزمة تطوير البرامج (SDK) الخاصة بخدمة "التنقّل" مع تفعيل ميزة "التوجيهات المفصّلة".
في نظام التشغيل Android، يتم عرض الخريطة التي تتضمّن اتجاهات تنقّل مفصّلة في التطبيق باستخدام SupportNavigationFragment أو NavigationView، بينما يتم عرضها في نظام التشغيل iOS باستخدام GMSMapView. تضيف عناصر واجهة المستخدم هذه الخريطة التفاعلية وواجهة مستخدم التنقّل المفصّل إلى تطبيقك.
في القسم التالي، نقوم بمقارنة SDK Nav الافتراضي مع الكود الممكّن للخطوة بخطوة مع كود SDK Nav بدون رأس لكل من Android وiOS، مع تسليط الضوء على التغييرات المطلوبة.
الحل
Android
في نظام التشغيل Android، هذا هو رمز Java الذي يأتي كجزء من تطبيق Nav SDK النموذجي.
@Override
@SuppressLint("MissingPermission")
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Obtain a reference to the NavigationFragment
setContentView(R.layout.activity_nav_fragment);
mNavFragment = (SupportNavigationFragment) getSupportFragmentManager().findFragmentById(R.id.navigation_fragment);
كما ترى، تشير طريقة العرض إلى التصميم الذي يجب استخدامه لرسم تجربة التنقّل، وفي هذه الحالة، يتم إنشاء SupportNavigationFragment بدلاً من NavigationView.
لجعل حزمة تطوير البرامج (SDK) الخاصة بخدمة "التنقّل" تبدأ في وضع التشغيل بدون واجهة مستخدم، علينا ببساطة إزالة هاتين التعليمتَين. إذا كان الهدف هو التبديل بين وضع التشغيل بلا واجهة مستخدم رسومية ووضع التشغيل العادي (التنقّل النشط)، يمكن استخدام متغيّر لتحديد ما إذا كان يجب استخدام وضع التشغيل بلا واجهة مستخدم رسومية أم لا، على سبيل المثال:
Boolean mHeadless = true;
يمكن بعد ذلك استخدامها على النحو التالي:
@Override
@SuppressLint("MissingPermission")
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Obtain a reference to the NavigationFragment
if(!mHeadless) {
setContentView(R.layout.activity_nav_fragment);
mNavFragment =
(SupportNavigationFragment)
getSupportFragmentManager().findFragmentById(R.id.navigation_fragment);
}
يمكن ربط المتغيّر mHeadless بأحد مكوّنات واجهة المستخدم (مثل مفتاح التبديل) الذي سيؤدي إلى تفعيل وضع التشغيل بدون واجهة أو إيقافه وفقًا لذلك.
|
|
| تشغيل حزمة تطوير البرامج للتنقّل مع ميزة "التنقّل النشط" (إيقاف وضع التشغيل بدون واجهة مستخدم) | التطبيق نفسه، ولكن مع تشغيل حزمة تطوير البرامج Nav SDK في وضع التشغيل بلا واجهة مستخدم رسومية |
كما هو موضّح في المثال الأيمن أعلاه، يتم تشغيل ميزة التنقّل في حزمة تطوير البرامج (SDK) الخاصة بالتنقل في الخلفية، ولكنّ تجربة التنقّل خطوة بخطوة تكون غير مفعّلة.
iOS
يمكن تفعيل وضع التشغيل بدون واجهة مستخدم على أجهزة iOS بسهولة جدًا من خلال إضافة الإعداد التالي أثناء عملية تهيئة MapView: \
mapView.isHidden = true
على سبيل المثال:
/// The main map view.
private lazy var mapView: GMSMapView = {
let mapView = GMSMapView(frame: .zero)
mapView.isHidden = true /// Make it headless!
mapView.isNavigationEnabled = true
mapView.settings.compassButton = true
mapView.delegate = self
return mapView
}()
إليك الشكل الذي ستبدو عليه: ستعتمد الشاشة على طريقة تنفيذ واجهة المستخدم، وتهدف لقطة الشاشة إلى توضيح تأثير إخفاء mapView فقط:
|
|
| الملاحة النشطة قيد التشغيل
نموذج تطبيق iOS |
التطبيق نفسه في وضع التشغيل بلا واجهة مستخدم رسومية |
اعتبارات التنفيذ
بما أنّ "وضع عدم الاتصال بالشاشة" لا يتضمّن سوى إخفاء خريطة التنقّل من الشاشة، يتم حفظ وقت استخدام الشاشة فقط، ما يؤدي إلى إطالة عمر البطارية على الجهاز. ومع ذلك، بما أنّ حزمة تطوير البرامج (SDK) الخاصة بخدمة "الملاحة" ستستمر في العمل، سيتم تشغيل تحديثات الموقع الجغرافي وجميع عمليات معاودة الاتصال بالأحداث بشكلٍ طبيعي، وبالتالي لن يكون هناك أي تأثير سلبي لاستخدام هذا الإعداد.
الخاتمة
يوضّح هذا المستند مدى مرونة حزمة تطوير البرامج (SDK) الخاصة بخدمة "خرائط Google" وكيفية تحقيق أهدافنا في أنظمة التشغيل المختلفة مع مراعاة القيود المفروضة عليها. ويسمح أيضًا للعملاء بتخصيص تجربة القيادة لتجنُّب عوامل التشتيت وتحسين السلامة.
موارد إضافية
إذا كان يجب إيقاف الإشعارات أثناء التنقّل للأسباب المذكورة أعلاه، يمكن أيضًا إجراء ذلك. يُرجى الرجوع إلى تعديل إشعارات الاتجاهات خطوة بخطوة في حزمة تطوير البرامج (SDK) الخاصة بخدمة "التنقّل".