Nav SDK - โหมดไม่มีส่วนหัว

บทนำ

Navigation SDK (Nav SDK) มีฟีเจอร์การนำทางแบบเลี้ยวต่อเลี้ยวที่ดีที่สุด ซึ่งเป็นประโยชน์อย่างมากต่อลูกค้าและคนขับ โดยเฉพาะคนขับมือใหม่หรือคนขับที่ไม่คุ้นเคยกับภูมิภาค อย่างไรก็ตาม มีกรณีการใช้งานบางกรณีที่บริษัทไม่ต้องการดึงความสนใจของคนขับออกจากถนนด้วย UI การนำทางแบบเลี้ยวต่อเลี้ยว แต่ยังต้องการติดตามตำแหน่งของยานพาหนะและฟังเหตุการณ์ที่เกี่ยวข้องกับเส้นทางที่ยานพาหนะกำลังวิ่งอยู่ ตัวอย่างเช่น คนขับรถบรรทุก โดยเฉพาะอย่างยิ่งหากกำลังขนส่งวัตถุอันตราย นอกจากนี้ บริษัทอื่นๆ ที่ทำการจัดส่งโดยใช้รูปแบบต่างๆ เช่น การเดินในระยะทางสั้นๆ อาจไม่จำเป็นต้องเปิดใช้การนำทางแบบเลี้ยวต่อเลี้ยว ซึ่งจะช่วยประหยัดแบตเตอรี่ของอุปกรณ์

ขอบเขต

เอกสารนี้อธิบายวิธีที่บริษัทต่างๆ สามารถซ่อนแผนที่การนำทาง (มุมมอง) จาก Nav SDK และยังคงได้รับประโยชน์จากฟีเจอร์ทั้งหมดของ Nav SDK ในส่วนที่เกี่ยวกับการติดตามตำแหน่ง การสมัครรับข้อมูลเหตุการณ์ และการเรียกกลับ ข้อมูลที่รวบรวมจาก Nav SDK ในโหมดไม่มีส่วนหัวสามารถใช้เพื่อปรับปรุงความสามารถในการติดตามยานพาหนะและทำความเข้าใจเวลาถึงโดยประมาณ (ETA) ได้แม่นยำยิ่งขึ้น ซึ่งจะนำไปสู่ความโปร่งใสและประสิทธิภาพในท้ายที่สุด

Navigation SDK เป็นไลบรารี Android / iOS แบบเนทีฟที่เพิ่มลงในแอปของคนขับ ในบริบทของการเคลื่อนที่ SDK นี้มีหน้าที่รับผิดชอบสิ่งต่อไปนี้

  • รับตำแหน่งที่ปรับให้เข้ากับถนนจากแอปที่เรียกใช้ ตำแหน่งที่ปรับให้เข้ากับถนนมีความแม่นยำมากกว่า FusedLocationProvider (FLP) ของ Android เนื่องจากใช้เครือข่ายถนนของ Google เพื่อปรับตำแหน่งให้เข้ากับส่วนของถนนที่ใกล้ที่สุด ซึ่งทำให้เวลาถึงโดยประมาณและข้อมูลอื่นๆ จาก FLP แม่นยำมากขึ้น
  • ประสบการณ์การนำทางแบบเลี้ยวต่อเลี้ยวที่ช่วยให้คนขับเดินทางจากจุด A ไปยังจุด B ได้อย่างมีประสิทธิภาพ โดยคำนึงถึงการจราจรแบบเรียลไทม์และข้อจำกัดอื่นๆ ของเส้นทาง
  • ทริกเกอร์เหตุการณ์ตามความคืบหน้าของเส้นทาง ตำแหน่ง ความเร็ว ฯลฯ ผ่าน Listener เหตุการณ์และการเรียกกลับที่ลงทะเบียนไว้

ประสบการณ์ใช้งานเริ่มต้น

เมื่อลูกค้าติดตั้งใช้งาน Nav SDK เราจะถือว่าลูกค้าต้องการฟีเจอร์การนำทางแบบเลี้ยวต่อเลี้ยว ด้วยเหตุนี้ เอกสารประกอบของ Nav SDK (Android และ iOS) จึงมีวิธีการติดตั้งใช้งาน Nav SDK โดยเปิดใช้การนำทางแบบเลี้ยวต่อเลี้ยว

ใน Android การแสดงผลแผนที่การนำทางแบบเลี้ยวต่อเลี้ยวในแอปทำได้โดยใช้ SupportNavigationFragment หรือ NavigationView ส่วนใน iOS จะใช้ GMSMapView องค์ประกอบ UI เหล่านี้จะเพิ่มแผนที่แบบโต้ตอบและ UI การนำทางแบบเลี้ยวต่อเลี้ยวลงในแอป

ในส่วนถัดไป เราจะเปรียบเทียบโค้ด Nav SDK เริ่มต้นที่เปิดใช้การนำทางแบบเลี้ยวต่อเลี้ยวกับโค้ด Nav SDK แบบไม่มีส่วนหัวสำหรับทั้ง 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

หากต้องการให้ Nav SDK เริ่มทำงานในโหมดไม่มีส่วนหัว เราเพียงแค่ต้องนำคำสั่ง 2 รายการนั้นออก หากต้องการสลับระหว่างโหมดไม่มีส่วนหัวกับโหมดมีส่วนหัว (การนำทางที่ใช้งานอยู่) คุณสามารถใช้ตัวแปรเพื่อกำหนดว่าจะต้องใช้โหมดไม่มีส่วนหัวหรือไม่ เช่น

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 สามารถลิงก์กับคอมโพเนนต์ UI (เช่น การสลับ) ที่จะเปิดหรือปิดใช้โหมดไม่มีส่วนหัวตามความเหมาะสม

alt_text alt_text
Nav SDK ทำงานโดยเปิดใช้การนำทางที่ใช้งานอยู่ (โหมดไม่มีส่วนหัวปิดอยู่) แอปเดียวกันแต่ตอนนี้ Nav SDK ทำงานในโหมดไม่มีส่วนหัว

อย่างที่เห็นในตัวอย่างทางด้านขวาด้านบน การนำทางของ Nav 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
  }()

ดูลักษณะที่ปรากฏ ซึ่งหน้าจอจะขึ้นอยู่กับวิธีที่ติดตั้งใช้งาน UI และภาพหน้าจอเป็นเพียงภาพประกอบเพื่อแสดงให้เห็นถึงผลของการซ่อน mapView

alt_text alt_text
การนำทางที่ใช้งานอยู่ทำงานบน

แอปตัวอย่าง iOS

แอปเดียวกันในโหมดไม่มีส่วนหัว

ข้อควรพิจารณาในการติดตั้งใช้งาน

เนื่องจากโหมดไม่มีส่วนหัวเป็นเพียงการซ่อนแผนที่การนำทางจากหน้าจอ จึงช่วยประหยัดเวลาอยู่หน้าจอเท่านั้น ซึ่งจะช่วยให้แบตเตอรี่ของอุปกรณ์ใช้งานได้นานขึ้น อย่างไรก็ตาม เนื่องจาก Nav SDK จะทำงานต่อไป การอัปเดตตำแหน่งและการเรียกกลับเหตุการณ์ทั้งหมดจะทริกเกอร์ตามปกติ ดังนั้นการกำหนดค่านี้จึงไม่มีผลข้างเคียง

บทสรุป

เอกสารนี้แสดงให้เห็นถึงความยืดหยุ่นของ Nav SDK และสิ่งที่เราทำได้ในระบบปฏิบัติการต่างๆ ตามข้อจำกัดของระบบ นอกจากนี้ยังช่วยให้ลูกค้าปรับแต่งประสบการณ์การใช้งานของคนขับเพื่อหลีกเลี่ยงสิ่งรบกวนและปรับปรุงความปลอดภัย

แหล่งข้อมูลเพิ่มเติม

หากต้องปิดใช้การแจ้งเตือนระหว่างการนำทางเนื่องจากเหตุผลที่กล่าวไว้ข้างต้น คุณก็ทำได้เช่นกัน โปรดดูที่แก้ไขการแจ้งเตือนแบบเลี้ยวต่อเลี้ยวใน Nav SDK