مقدّمة
توفّر حزمة تطوير البرامج للتنقّل (Nav SDK) ميزة ممتازة للتنقّل خطوة بخطوة يمكن أن تكون مفيدة جدًا للعملاء والسائقين، خاصةً السائقين الجدد أو السائقين الذين لا يعرفون المنطقة جيدًا. ومع ذلك، هناك حالات استخدام معيّنة لا تريد فيها الشركات أن تشتّت انتباه السائقين عن الطريق من خلال واجهة المستخدم الخاصة بالتنقّل خطوة بخطوة، ولكنّها لا تزال تريد تتبُّع المواقع الجغرافية للمركبات والاستماع إلى الأحداث ذات الصلة بالمسار الذي تتّبعه. ومن الأمثلة على ذلك سائقو الشاحنات، خاصةً إذا كانوا ينقلون مواد خطرة. قد لا تحتاج الشركات الأخرى التي تجري عمليات التسليم باستخدام وسائل نقل مختلفة، مثل المشي لمسافات قصيرة، إلى تفعيل ميزة "التوجيه خطوة بخطوة" أيضًا، ما يؤدي إلى الحفاظ على عمر بطارية الجهاز.
المستوى
يوضّح هذا المستند كيف يمكن للشركات إخفاء خريطة التنقّل (العرض) من حزمة Nav SDK والاستفادة في الوقت نفسه من جميع ميزات حزمة Nav SDK المتعلّقة بتتبُّع الموقع الجغرافي والاشتراكات في الأحداث وعمليات معاودة الاتصال. يمكن استخدام البيانات التي يتم جمعها من حزمة تطوير البرامج (SDK) الخاصة بخدمة "الملاحة" في وضع التشغيل بلا واجهة مستخدم رسومية لتحسين إمكانية تتبُّع المركبات وفهم الوقت المقدَّر للوصول بشكلٍ أكثر دقة، ما يؤدي في النهاية إلى الشفافية والكفاءة.
Navigation SDK
حزمة تطوير البرامج للتنقّل هي مكتبة أصلية لنظام التشغيل Android أو iOS يتم إضافتها إلى تطبيق السائق، وهي مسؤولة عن ما يلي في سياق التنقّل:
- الحصول على المواقع الجغرافية التي تم ضبطها على الطرق من التطبيق الذي يعرضها تكون المواقع الجغرافية المحدّدة على الطرق أكثر دقة من FusedLocationProvider (FLP) في Android، لأنّها تستخدم شبكة الطرق من Google لتحديد المواقع الجغرافية على أقرب جزء من الطريق، ما يجعل تقديرات وقت الوصول والمعلومات الأخرى من FLP أكثر دقة.
- تجربة التنقّل خطوة بخطوة التي تتيح للسائقين الانتقال بكفاءة من النقطة "أ" إلى النقطة "ب" مع الأخذ في الاعتبار حركة المرور في الوقت الفعلي وقيود المسار الأخرى
- إطلاق الأحداث استنادًا إلى تقدّم المسار والموقع الجغرافي والسرعة وما إلى ذلك من خلال أدوات معالجة الأحداث وعمليات رد الاتصال المسجّلة
الخدمة التلقائية
عندما يستخدم العملاء حزمة تطوير البرامج (SDK) الخاصة بخدمة "الملاحة"، يُفترض أنّهم يحتاجون إلى ميزة "التوجيه خطوة بخطوة". لهذا السبب، تقدّم مستندات حزمة تطوير البرامج للتنقّل (Android وiOS) تعليمات حول كيفية تنفيذ حزمة تطوير البرامج للتنقّل مع تفعيل ميزة "التنقّل باتّجاهات مفصّلة".
في نظام التشغيل Android، يتم عرض الخريطة التي تتضمّن اتجاهات تنقّل مفصّلة في التطبيق باستخدام SupportNavigationFragment أو NavigationView، بينما يتم استخدام GMSMapView في نظام التشغيل iOS. تضيف عناصر واجهة المستخدم هذه الخريطة التفاعلية وواجهة مستخدم التنقّل المفصّل إلى تطبيقك.
في القسم التالي، سنقارن بين الرمز البرمجي لحزمة تطوير البرامج التلقائية في "خدمة الملاحة" مع تفعيل ميزة "الملاحة خطوة بخطوة" والرمز البرمجي لحزمة تطوير البرامج غير المرئية في "خدمة الملاحة" لكلّ من 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) الخاصة بخدمة "خرائط Google" تبدأ في وضع التشغيل بدون واجهة مستخدم، علينا ببساطة إزالة هاتين التعليمتَين. إذا كانت الفكرة هي التبديل بين وضع التشغيل بلا واجهة مستخدم رسومية ووضع التشغيل العادي (التنقّل النشط)، يمكن استخدام متغيّر لتحديد ما إذا كان يجب استخدام وضع التشغيل بلا واجهة مستخدم رسومية أم لا، على سبيل المثال:
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
بأحد مكوّنات واجهة المستخدم (مثل مفتاح التبديل) الذي سيؤدي إلى تفعيل أو إيقاف وضع "بدون رأس" وفقًا لذلك.
![]() |
![]() |
تشغيل حزمة تطوير البرامج للتنقّل مع ميزة "التنقّل النشط" (إيقاف وضع التشغيل بدون واجهة مستخدم) | التطبيق نفسه ولكن مع تشغيل حزمة تطوير البرامج (SDK) الخاصة بخدمة "خرائط Google" في وضع التشغيل بلا واجهة مستخدم رسومية |
كما هو موضّح في المثال الأيسر أعلاه، يتم تشغيل ميزة التنقّل في حزمة تطوير البرامج (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) الخاصة بخدمة "الملاحة" وما يمكننا تحقيقه في أنظمة التشغيل المختلفة في ضوء القيود المفروضة عليها. ويسمح أيضًا للعملاء بتخصيص تجربة القيادة لتجنُّب عوامل التشتيت وتحسين السلامة.
موارد إضافية
إذا كان يجب إيقاف الإشعارات أثناء التنقّل، للأسباب المذكورة أعلاه، يمكن تحقيق ذلك أيضًا. يُرجى الرجوع إلى تعديل الإشعارات خطوة بخطوة في حزمة تطوير البرامج (SDK) الخاصة بخدمة "التنقّل".