การย้ายข้อมูลสําหรับส่วนผู้บริโภคของ iOS SDK

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

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

ภาพรวม

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

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

วัตถุ TripModel รายการ

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

กิจกรรมการเรียกอินสแตนซ์ TripModel หากสมาชิกที่ลงทะเบียนอยู่ในการเดินทางเมื่อมีการอัปเดต

นอกจากนี้ คุณยังใช้ออบเจ็กต์ TripModel เพื่อสร้างอินสแตนซ์ของออบเจ็กต์ JourneySharingSession ได้ด้วย

MapViewSession รัฐ

คุณเพิ่มอินสแตนซ์ MapViewSession ใน mapView ได้ครั้งละ 1 รายการเท่านั้น และอาจอยู่ในสถานะใดสถานะหนึ่งจาก 2 สถานะต่อไปนี้

  • สถานะ GMTCMapViewSessionStateInactive บ่งบอกว่ายังไม่ได้เพิ่ม MapViewSession นี้ลงใน mapView หรือถูกนำออกจาก mapView เมื่อนำอินสแตนซ์ MapViewSession ออกจาก mapView แล้ว ระบบจะเรียกใช้เมธอด didRemoveFromMapView

    การเรียกใช้เมธอด hideMapViewSession หรือ hideAllMapViewSessions จะนำ mapViewSession ออกจาก mapView:

    [_mapView hideMapViewSession:mapViewSessionA];
    

    หรือ

    [_mapView hideAllMapViewSessions];
    
  • สถานะ GMTCMapViewSessionStateActive บ่งบอกว่าได้เพิ่ม MapViewSession นี้ลงใน mapView แล้ว เมื่อมีการเพิ่มอินสแตนซ์ของ MapViewSession ไปยัง mapView ระบบจะเรียกใช้เมธอด didAddToMapView การเรียกใช้เมธอด showMapViewSession จะเพิ่ม mapViewSession ลงใน mapView เป้าหมาย:

    [_mapView showMapViewSession:mapViewSessionA];
    

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

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

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

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

  1. เริ่มต้นออบเจ็กต์ GMTCServices โดยระบุรหัสผู้ให้บริการและผู้ให้บริการโทเค็นเพื่อการเข้าถึง
  2. รับพร็อพเพอร์ตี้ tripService จากอินสแตนซ์ที่แชร์ของออบเจ็กต์ GMTCServices
  3. สร้างหรือเรียกข้อมูลอินสแตนซ์ของออบเจ็กต์ GMTCTripModel สำหรับการเดินทางที่ระบุโดยใช้เมธอด tripModelForTripName ของออบเจ็กต์ tripService
  4. ลงทะเบียนโค้ดเรียกกลับสำหรับอินสแตนซ์ GMTCTripModel เพื่อเริ่มตรวจสอบการเดินทาง

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

[GMTCServices setAccessTokenProvider:[[AccessTokenProvider alloc] init]
                          providerID:yourProviderID];
GMTCTripService *tripService = [GMTCServices sharedServices].tripService;

// Create a tripModel instance for listening to updates to the trip specified by this trip name.
GMTCTripModel *tripModel = [tripService tripModelForTripName:tripName];

// Register for the trip update events.
[tripModel registerSubscriber:self];

// To stop listening for the trip update.
[tripModel unregisterSubscriber:self];

การใช้ API ขององค์ประกอบ UI

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

  1. เริ่มต้นออบเจ็กต์ GMTCServices โดยระบุรหัสผู้ให้บริการและผู้ให้บริการโทเค็นเพื่อการเข้าถึง
  2. เริ่มต้นออบเจ็กต์ GMTCMapView เพื่อแสดงแผนที่ฐาน
  3. รับพร็อพเพอร์ตี้ tripService จากอินสแตนซ์ที่แชร์ของออบเจ็กต์ GMTCServices
  4. สร้างหรือเรียกข้อมูลอินสแตนซ์ของออบเจ็กต์ GMTCTripModel สำหรับการเดินทางที่ระบุโดยใช้เมธอด tripModelForTripName ของออบเจ็กต์ tripService
  5. สร้างออบเจ็กต์ GMTCJourneySharingSession ด้วยอินสแตนซ์ GMTCTripModel
  6. แสดงออบเจ็กต์ GMTCJourneySharingSession ใน mapView
  7. ลงทะเบียนโค้ดเรียกกลับสำหรับอินสแตนซ์ GMTCTripModel เพื่อเริ่มตรวจสอบการเดินทาง

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

[GMTCServices setAccessTokenProvider:[[AccessTokenProvider alloc] init]
                          providerID:yourProviderID];
GMTCTripService *tripService = [GMTCServices sharedServices].tripService;

// Create a tripModel instance for listening to updates to the trip specified by this trip name.
GMTCTripModel *tripModel = [tripService tripModelForTripName:tripName];
GMTCJourneySharingSession *journeySharingSession =
  [[GMTCJourneySharingSession alloc] initWithTripModel:tripModel];

// Add the journeySharingSession instance on the mapView for UI updating.
[self.mapView showMapViewSession:journeySharingSession];

// Register for the trip update events.
[tripModel registerSubscriber:self];

// To remove the JourneySharingSession from the mapView:
[self.mapView hideMapViewSession:journeySharingSession];

// To stop listening for the trip update.
[tripModel unregisterSubscriber:self];

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

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

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

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

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

GRCTripRequest *tripRequest =
    [[GRCTripRequest alloc] initWithRequestHeader:[GRSRequestHeader defaultHeader]
                                         tripName:tripName
                          autoRefreshTimeInterval:1];
GRCTripService *tripService = [GRCServices sharedServices].tripService;
[tripService registerServiceSubscriber:self];
[tripService setActiveTripWithRequest:tripRequest];

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

GMTCTripService *tripService = [GMTCServices sharedServices].tripService;
GMTCTripModel *tripModel = [tripService tripModelForTripName:tripName];
tripModel.options.autoRefreshTimeInterval = 1;
[tripModel registerSubscriber:self];

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

// Show the Journey Sharing user interface.
[self.mapView startTripMonitoring];

// Hide the Journey Sharing user interface.
[self.mapView resetCustomerState];

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

// Show the Journey Sharing user interface.
GMTCJourneySharingSession *journeySharingSession =
  [[GMTCJourneySharingSession alloc] initWithTripModel:tripModel];
[self.mapView showMapViewSession:journeySharingSession];

// Hide the Journey Sharing user interface.
[self.mapView hideMapViewSession:journeySharingSession];