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

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

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

ภาพรวม

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

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

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

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

สถานะเซสชัน

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

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

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

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

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

    sessionA.stop()
    

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

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

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

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

  • เริ่มต้นออบเจ็กต์ ConsumerApi
  • รับออบเจ็กต์ TripModelManager จาก ConsumerApi
  • เริ่มตรวจสอบการเดินทางด้วย TripModelManager เพื่อรับออบเจ็กต์ TripModel
  • ลงทะเบียนโค้ดเรียกกลับในออบเจ็กต์ 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();

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

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

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

Consumer SDK ไม่จำเป็นต้องใช้สิทธิ์ FINE_LOCATION อีกต่อไป

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

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

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

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()