การย้ายข้อมูลสําหรับ Android Consumer SDK Modularization

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

หากแอป Rideshare ของคุณใช้ Consumer SDK เวอร์ชันก่อนหน้า คุณจะต้องอัปเกรดแอปเพื่อใช้สถาปัตยกรรมโมดูลนี้ ช่วงเวลานี้ คู่มือการย้ายข้อมูลจะอธิบายวิธีอัปเกรดแอป

ภาพรวม

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

ออบเจ็กต์เซสชันแสดงอินสแตนซ์การใช้งานวงจรเดียวของโมดูล เซสชันคือจุดเข้าถึง API ของโมดูล ตัวอย่างเช่น เซสชันการแชร์เส้นทางเกิดขึ้นหลังจากการเดินทางครั้งเดียว คุณโต้ตอบ ด้วยออบเจ็กต์ "เซสชัน" เพื่อตรวจสอบการเดินทาง

ออบเจ็กต์เซสชันเชื่อมโยงกับประเภทโมดูล ออบเจ็กต์เซสชัน พฤติกรรมจะลิงก์กับวงจรของออบเจ็กต์ที่ใช้ในการเริ่มต้น

สมมติว่าคุณสร้างออบเจ็กต์ TripModel เพื่อติดตาม TRIP_A หากพยายามหาออบเจ็กต์ TripModel สำหรับ TRIP_A อีกครั้ง คุณจะ รับออบเจ็กต์ TripModel เดียวกัน หากต้องการติดตาม TRIP_B ให้ระบุ ออบเจ็กต์ TripModel รายการ

สถานะเซสชัน

โดยเซสชันอาจมีสถานะอย่างใดอย่างหนึ่งต่อไปนี้

  • เซสชันที่สร้างจะแสดงด้วยออบเจ็กต์เซสชัน คุณสร้าง เซสชันด้วยการเรียกใช้เมธอด create เช่น

    JourneySharingSession sessionA = JourneySharingSession.createInstance(TripModelA)
    
  • ลงทะเบียนเซสชันที่เริ่มต้นแล้วเพื่ออัปเดตข้อมูลและค่า ขององค์ประกอบอินเทอร์เฟซผู้ใช้ คุณเริ่มเซสชันโดยการเรียกใช้ start วิธี เช่น

    sessionA.start()
    
  • เซสชันที่แสดงจะเริ่มต้นโดยอัตโนมัติ แสดง eelement ของอินเทอร์เฟซผู้ใช้ และอัปเดตตามการอัปเดตข้อมูล คุณแสดงเซสชัน โดยการเรียกใช้เมธอด showSession เช่น

    ConsumerController.showSession(sessionA)
    
  • เซสชันที่หยุดแล้วจะหยุดรีเฟรชข้อมูลและหยุดอัปเดต ของอินเทอร์เฟซผู้ใช้ คุณหยุดเซสชันโดยการเรียกใช้เมธอด stop เช่น

    sessionA.stop()
    

การใช้เฉพาะข้อมูลเท่านั้นและคอมโพเนนต์อินเทอร์เฟซผู้ใช้

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

การใช้คอมโพเนนต์ข้อมูลเท่านั้น

วิธีสร้างแอปบริการร่วมเดินทางโดยใช้คอมโพเนนต์เฉพาะข้อมูลเท่านั้น

  • เริ่มต้นออบเจ็กต์ ConsumerApi
  • รับออบเจ็กต์ TripModelManager จาก ConsumerApi
  • เริ่มตรวจสอบการเดินทางด้วย TripModelManager เพื่อรับออบเจ็กต์ TripModel
  • ลงทะเบียน Callback ในออบเจ็กต์ TripModel

ตัวอย่างต่อไปนี้แสดงวิธีใช้คอมโพเนนต์ข้อมูลเท่านั้น

TripModelManager tripManager = ConsumerApi.getTripModelManager();
TripModel tripA = tripManager.getTripModel("trip_A");
tripA.registerTripCallback(new TripModelCallback() {})

การใช้ API องค์ประกอบอินเทอร์เฟซผู้ใช้

ใช้ออบเจ็กต์ ConsumerController เพื่อเข้าถึง API องค์ประกอบอินเทอร์เฟซผู้ใช้ของโซลูชันการโดยสารและการนำส่งแบบออนดีมานด์

เพื่อสร้างแอปบริการร่วมเดินทางที่มีอินเทอร์เฟซผู้ใช้โซลูชันบริการโดยสารและการนำส่งแบบออนดีมานด์ API องค์ประกอบ:

  • เริ่มต้นออบเจ็กต์ ConsumerApi
  • รับออบเจ็กต์ TripModelManager จากออบเจ็กต์ ConsumerApi
  • รับออบเจ็กต์ TripModel จาก TripModelManager ที่ติดตามการเดินทาง 1 ครั้ง
  • เพิ่ม ConsumerMap[View/Fragment] ในมุมมองแอปพลิเคชัน
  • รับออบเจ็กต์ ConsumerController จาก ConsumerMap[View/Fragment]
  • ส่งออบเจ็กต์ TripModel ให้กับตัวควบคุมเพื่อรับออบเจ็กต์ JourneySharingSession
  • ใช้ตัวควบคุมเพื่อแสดง JourneySharingSession

ตัวอย่างต่อไปนี้แสดงวิธีใช้ API ของอินเทอร์เฟซผู้ใช้

TripModelManager tripManager = ConsumerApi.getTripModelManager();
TripModel tripA = TripModelManager.getTripModel("trip_A");

// Session is NOT automatically started when created.
JourneySharingSession jsSessionA = JourneySharingSession.createInstance(tripA);
JourneySharingSession jsSessionB = JourneySharingSession.createInstance(tripB);

// But a session is automatically started when shown.
ConsumerController.showSession(jsSessionA);
ConsumerController.showSession(jsSessionB); // hides trip A; shows trip B.
ConsumerController.hideAllSessions(); // don't show any sessions

// Unregister listeners and delete UI elements of jsSessionA.
consumerController.showSession(jsSessionA);
jsSessionA.stop();
// Recreates and shows UI elements of jsSessionA.
jsSessionA.start();

การเปลี่ยนแปลงโค้ดสถาปัตยกรรมโมดูล

หากแอป Rideshare ของคุณใช้ Consumer SDK เวอร์ชันก่อนหน้า สถาปัตยกรรมโมดูลที่อัปเดตแล้วจะต้องทำการเปลี่ยนแปลงบางอย่างกับโค้ดของคุณ ส่วนนี้จะอธิบายการเปลี่ยนแปลงดังกล่าวบางส่วน

สิทธิ์เข้าถึงตำแหน่ง

ไม่ต้องใช้สิทธิ์ FINE_LOCATION แล้ว โดย Consumer SDK

การตรวจสอบการเดินทาง

สถาปัตยกรรมโมดูลที่อัปเดตแล้วจำเป็นต้องมีการเปลี่ยนแปลงโค้ดสำหรับทั้ง ชั้นข้อมูลและอินเทอร์เฟซผู้ใช้

ในเวอร์ชันก่อนหน้านี้ ผู้ใช้ชั้นข้อมูลอาจจัดการ การตรวจสอบการเดินทางโดยใช้รหัสต่อไปนี้:

ConsumerApi.initialize()
TripModelManager manager = ConsumerApi.getTripManager()
manager.setActiveTrip("trip_id")
manager.registerActiveTripCallback(new TripModelCallback() {})

เมื่อใช้สถาปัตยกรรมโมดูล ผู้ใช้ชั้นข้อมูลจะใช้ โค้ดต่อไปนี้

ConsumerApi.initialize()
TripModelManager manager = ConsumerApi.getTripManager()
TripModel tripA = TripModelManager.getTrip("trip_A")
tripA.registerTripCallback(new TripModelCallback() {})

ในเวอร์ชันก่อนหน้า ผู้ใช้อินเทอร์เฟซผู้ใช้อาจจัดการการตรวจสอบการเดินทาง โดยใช้โค้ดต่อไปนี้

ConsumerApi.initialize()
TripModelManager manager = ConsumerApi.getTripManager()
manager.setActiveTrip("trip_id")

ConsumerController controller = consumerGoogleMap.getConsumerController();
consumerController.startJourneySharing()

เมื่อใช้สถาปัตยกรรมโมดูล ผู้ใช้อินเทอร์เฟซผู้ใช้จะใช้ โค้ดต่อไปนี้

ConsumerApi.initialize()
TripModelManager manager = ConsumerApi.getTripManager()
TripModel tripA = TripModelManager.getTripModel("trip_A");

ConsumerController controller = consumerGoogleMap.getConsumerController();
JourneySharingSession jsSessionA = JourneySharingSession.createInstance(tripA);
controller.showSession(jsSessionA);

การกำหนดจุดศูนย์กลางของแผนที่

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

ในเวอร์ชันก่อนหน้านี้ คุณจะต้องใช้โค้ดต่อไปนี้เพื่อให้กล้องอยู่ตรงกลาง สำหรับเซสชันที่ใช้งานอยู่ในปัจจุบัน:

consumerController.centerMapForState()

เมื่อใช้สถาปัตยกรรมโมดูล คุณจะใช้โค้ดต่อไปนี้

CameraUpdate cameraUpdate = consumerController.getCameraUpdate()
if (cameraUpdate != null) {
   googleMap.animateCamera(cameraUpdate);
   // OR googleMap.moveCamera(cameraUpdate);
}

หากต้องการปิดใช้ฟีเจอร์กล้องอัตโนมัติในเวอร์ชันก่อนหน้า คุณจะใช้โค้ดต่อไปนี้

consumerController.disableAutoCamera(true);

เมื่อใช้สถาปัตยกรรมโมดูล คุณจะใช้โค้ดต่อไปนี้

consumerController.setAutoCameraEnabled(false);

การปรับแต่ง

นำ FAB ที่กำหนดเองของโซลูชันการโดยสารและการนำส่งแบบออนดีมานด์ออกจากแผนที่แล้ว

FAB ที่กำหนดเอง

ทั้งยังนำวิธีการที่เกี่ยวข้องสำหรับ FAB ออกด้วย ได้แก่

ConsumerController.isMyLocationFabEnabled()
ConsumerController.setMyLocationFabEnabled()