ما المقصود بالتنقل المخصص؟

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

ما هي تجربة التنقل المخصص؟

  • بدء التنقّل - يمكنك إنشاء جلسة تنقُّل كما هو الحال مع تجربة التنقّل في Google، لا تزال تجربة التنقّل المخصّصة تتضمن إنشاء مثيل التنقُّل وإعداد الوجهة. مع ذلك، من خلال تجربة تنقّل مخصّصة، يمكنك تحقيق ذلك من خلال إنشاء جلسة تنقّل أولاً باستخدام GMSNavigationServices. وجلسة التنقّل هي عنصر لا يحمل الحالة على واجهة المستخدم ويمكن أن يعمل إما باستخدام وحدة تحكّم في طرق العرض أو بدون وحدة تحكّم في طرق العرض.

    مشاهدة العرض التوضيحي: يحتوي تنزيل حزمة SDK للتنقل باستخدام عرض توضيحي يمكنك تشغيله للاطّلاع على مثال لتجربة تنقّل تتبدّل بين الإرشادات المفصّلة من خلال التنقّل العادي إلى تجربة التنقّل التي تعرض فقط موقع الجهاز الذي يتحرك على طول خط متعدد الطرق.

  • التنقل النشط - تُقدمه. إليك اختلاف رئيسي آخر بين تجربة التنقل التي توفرها Google وتجربة التنقل المخصصة. وبدلاً من تسليم الإرشادات إلى مدير الأحداث المضمَّن في حزمة تطوير البرامج (SDK) الخاصة بالتنقّل، يمكنك تفعيل خلاصة الاتّجاهات المفصّلة وتنفيذ معالِجات الأحداث من خلال GMSNavigatorListener. يتيح ذلك لتجربتك الاستجابة للأحداث الموضّحة في قسم الاستماع إلى أحداث التنقّل.

  • إنهاء التنقل - تُقدمه. كما هو الحال مع تجربة التنقل في Google، يتطلب التنقل المخصص أيضًا إنهاء التنقل بالطريقة المناسبة لتجربة التطبيق.

يوضِّح الجدول التالي بعض سيناريوهات التنقّل المخصّصة.

مثال على سيناريو

الخطوات عالية المستوى

يجب تقديم إرشادات نصية فقط للسائق على الأجهزة الصغيرة، مثل المركبات ذات العجلتين.

يمكنك إنشاء أداة التنقّل وإعداد الإرشادات المفصّلة كخلاصة بيانات على جهاز مزوّد بشاشة صغيرة أثناء تشغيل المستكشف على الهاتف الجوّال للسائق خارج إطار العرض الفوري. يمكنك الاطّلاع على تفعيل خلاصة البيانات المفصّلة.

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

يجب أن يسمح تطبيقك للسائقين بالدخول والخروج من تجربة التنقّل على Google حسب الحاجة، بدون تبديل إعدادات برنامج التنقّل لوضع الوجهة والرحلة.

بالنسبة إلى عملاء "الخدمات المتنقلة": غالبًا ما يسافر السائقون على مسارات ثابتة مألوفة ولا يحتاجون إلى أي توجيه على الإطلاق، ولكنّك تحتاج إلى طريقة لضمان أن يتمكّن نظام إدارة المركبات من إدارة عمليات التسليم أو الرحلات.

إعداد مستكشف. يمكنك تحديد الوجهة والحصول على إشعارات بشأن الموقع الجغرافي. ادمج حزمة Driver SDK في تطبيقك. وللحصول على مزيد من التفاصيل، يمكنك الاطّلاع على بدء استخدام Driver SDK لخيار الرحلات والتسليمات عند الطلب أو Last Mile Fleet Solution.

إنشاء إرشادات مخصّصة

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

تختلف هذه العملية عن العملية الموضّحة في صفحة التنقل في المسار على النحو التالي:

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

  1. أنشئ جلسة تنقّل باستخدام GMSNavigationService.createNavigationSession وابدأ التنقّل من خلال مكالمة setDestination. عندما تستدعي تجربة التنقّل في Google أداة التنقّل من خلال عرض خريطة التنقّل، يتحكّم GMSNavigationServices في بث الأحداث ويستقبله من جلسة التنقّل بشكل مستقل من مثيل واجهة المستخدم. وهذا يعني أنه يمكن تشغيله بدون واجهة مستخدم أو تمريره إلى أي تجربة مستندة إلى واجهة المستخدم. باستخدام هذه النهج، يستمر تشغيل جلسة التنقل في تطبيقك حتى تتم إزالة المرجع الأخير منه.
  2. تحديد مقدم خدمة مواقع جغرافية تم التقاطها على الطريق. استخدِم مزوِّد خدمة الموقع الجغرافي إذا كنت تريد أن يتم تتبُّع موقعك الجغرافي باستمرار في تطبيقك، كما هو الحال عند عرض طريقة عرض تنقُّل مع نقطة زرقاء على طول المسار.
  3. يمكنك إعداد أداة معالجة الحدث للحصول على إرشادات مفصّلة من خلال تطبيق بروتوكول GMSNavigatorListener. بعد ذلك، قم بتحويل هذه المعلومات إلى كل ما هو مطلوب لتجربة التنقل المخصصة. على سبيل المثال:
    1. تنفيذ الحقول النصية فقط لبث الشاشة البسيطة للاتجاهات.
    2. تصميم الحقول وتعبئتها لواجهة المستخدم الخاصة بك.
  4. إعداد محاكي التنقل. هذا ضروري للتطوير والاختبار.

إنشاء جلسة تنقّل مستقلة

تُظهر مقتطفات الرمز التالية من العرض التوضيحي التنقل الذي تم إنشاؤه بشكل مستقل عن وحدة التحكم في العرض. يضيف الكود بعد ذلك خريطة نظرة عامة تم تكوينها لإظهار الموقع الحالي الملتقط على الطريق.

// Create the navigation session.

 _navigationSession = [GMSNavigationServices createNavigationSession];
 GMSRoadSnappedLocationProvider *roadSnappedLocationProvider =
     _navigationSession.roadSnappedLocationProvider;
 [roadSnappedLocationProvider startUpdatingLocation];
 GMSNavigator *navigator = _navigationSession.navigator;
 [navigator addListener:self];
 navigator.voiceGuidance = GMSNavigationVoiceGuidanceSilent;
 navigator.sendsBackgroundNotifications = NO;
 _navigationSession.started = YES;
​​ [navigator setDestinations:@[ destination ]
                   callback:^(GMSRouteStatus routeStatus) {
                      // …handle changes in route status.
                    }];

 // Add an overview map.
 _mapView = [[GMSMapView alloc] initWithFrame:CGRectZero];
 [self.mainStackView addArrangedSubview:_mapView];
 [self.mainStackView setNeedsLayout];
 _mapView.settings.compassButton = YES;
 _mapView.delegate = self;
 _mapView.myLocationEnabled = YES;
 _mapView.roadSnappedMyLocationSource = roadSnappedLocationProvider;

تمرير التنقل من تجربة مخصصة إلى تجربة Google

يوضح مقتطف الرمز هذا كيف يمكن لتطبيقك السماح للمستخدم بالدخول إلى تجربة التنقل في Google من تجربة تنقل مخصّصة. يوضح مقتطف الرمز هذا أيضًا كيفية إجراء تطبيقك هذا الانتقال أثناء مشاركة الخريطة.

`UIButton *button = [UIButton buttonWithType:UIButtonTypePlain`];

[`button addTarget:self action:@selector(didTapEnterGoogleNavigationButton:)
forControlState:[_directionsButton addTarget:self`];

`…`

[`_mapView enableNavigationWithSession:_navigationSession`];