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

บทนำ

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

ขอบเขต

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

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

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

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

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

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