Modularisasi Migrasi untuk iOS Consumer SDK

Consumer SDK untuk iOS memungkinkan Anda membuat aplikasi Transportasi Online menggunakan arsitektur modular. Anda dapat menggunakan bagian-bagian API yang ingin digunakan untuk aplikasi tertentu, dan mengintegrasikannya dengan API Anda sendiri. Consumer SDK API untuk berbagai fitur dienkapsulasi ke dalam modul terpisah.

Jika aplikasi Transportasi Online menggunakan Consumer SDK versi sebelumnya, Anda harus mengupgrade aplikasi tersebut untuk menggunakan arsitektur modular ini. Panduan migrasi ini menjelaskan cara mengupgrade aplikasi Anda.

Ringkasan

Arsitektur modular Consumer SDK memperkenalkan objek MapViewSession yang menyimpan status antarmuka pengguna. Pada Consumer SDK versi sebelumnya, aplikasi mengalir di antara status. Dengan arsitektur modular ini, Anda akan membuat objek MapViewSession dan memiliki opsi untuk menampilkan sesi di peta. Jika tidak ada sesi yang ditampilkan, peta akan menampilkan konten yang sama seperti yang hanya menggunakan Maps SDK for iOS.

Objek MapViewSession mewakili instance penggunaan siklus proses tunggal dari modul. Sesi adalah titik akses ke API modul. Misalnya, sesi Berbagi Perjalanan mengikuti satu perjalanan. Anda berinteraksi dengan objek JourneySharingSession untuk memantau perjalanan.

Objek TripModel

Pada Consumer SDK versi sebelumnya, instance TripService hanya memungkinkan Anda memantau satu perjalanan live dalam satu waktu. Dengan menggunakan objek TripModel, Anda dapat memantau beberapa perjalanan live dalam satu instance TripService. Instance TripModel dapat dibuat dari TripService, dan setiap instance TripModel terikat ke perjalanan tertentu.

Instance TripModel memanggil peristiwa update jika pelanggan terdaftar sedang dalam perjalanan ketika diupdate.

Objek TripModel juga dapat digunakan untuk membuat instance objek JourneySharingSession.

MapViewSession negara bagian

Instance MapViewSession hanya dapat ditambahkan dalam satu mapView dalam satu waktu, dan dapat berada dalam salah satu dari dua status berikut:

  • Status GMTCMapViewSessionStateInactive menunjukkan bahwa MapViewSession ini belum ditambahkan ke mapView, atau telah dihapus dari mapView. Setelah instance MapViewSession dihapus dari mapView, metode didRemoveFromMapView dipanggil.

    Memanggil metode hideMapViewSession atau hideAllMapViewSessions akan menghapus mapViewSession dari mapView:

    [_mapView hideMapViewSession:mapViewSessionA];
    

    atau

    [_mapView hideAllMapViewSessions];
    
  • Status GMTCMapViewSessionStateActive menunjukkan bahwa MapViewSession ini telah ditambahkan ke mapView. Saat instance MapViewSession telah ditambahkan ke mapView, metode didAddToMapView akan dipanggil. Memanggil metode showMapViewSession akan menambahkan mapViewSession ke mapView target:

    [_mapView showMapViewSession:mapViewSessionA];
    

Menggunakan komponen antarmuka pengguna dan hanya data

Anda dapat membuat aplikasi transportasi online menggunakan komponen khusus data atau API elemen antarmuka pengguna yang disediakan oleh Solusi Perjalanan dan Pengiriman On-demand.

Menggunakan komponen khusus data

Untuk membuat aplikasi transportasi online menggunakan komponen khusus data:

  1. Lakukan inisialisasi objek GMTCServices dengan menentukan ID penyedia dan penyedia token akses.
  2. Dapatkan properti tripService dari instance bersama objek GMTCServices.
  3. Membuat atau mengambil instance objek GMTCTripModel untuk perjalanan yang ditentukan menggunakan metode tripModelForTripName dari objek tripService.
  4. Daftarkan callback untuk instance GMTCTripModel guna memulai pemantauan perjalanan.

Contoh berikut menunjukkan cara menggunakan komponen khusus data:

[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];

Menggunakan API elemen UI

Ikuti prosedur berikut untuk membuat aplikasi Konsumen dengan API elemen antarmuka pengguna Solusi Perjalanan dan Pengiriman On-demand:

  1. Lakukan inisialisasi objek GMTCServices dengan menentukan ID penyedia dan penyedia token akses.
  2. Lakukan inisialisasi objek GMTCMapView untuk merender peta dasar.
  3. Dapatkan properti tripService dari instance bersama objek GMTCServices.
  4. Membuat atau mengambil instance objek GMTCTripModel untuk perjalanan yang ditentukan menggunakan metode tripModelForTripName dari objek tripService.
  5. Buat objek GMTCJourneySharingSession dengan instance GMTCTripModel.
  6. Tampilkan objek GMTCJourneySharingSession di mapView.
  7. Daftarkan callback untuk instance GMTCTripModel guna memulai pemantauan perjalanan.

Contoh berikut menunjukkan cara menggunakan API antarmuka pengguna:

[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];

Perubahan kode arsitektur modular

Jika aplikasi Transportasi Online Anda menggunakan Consumer SDK versi sebelumnya, arsitektur modular yang diperbarui memerlukan beberapa perubahan pada kode Anda. Bagian ini menjelaskan beberapa perubahan tersebut.

Pemantauan perjalanan

Arsitektur modular yang diperbarui memerlukan perubahan kode untuk pengguna lapisan data dan antarmuka pengguna.

Pada versi sebelumnya, pengguna lapisan data mungkin menangani pemantauan perjalanan menggunakan kode berikut:

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

Dengan menggunakan arsitektur modular, pengguna lapisan data akan menggunakan kode berikut:

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

Pada versi sebelumnya, antarmuka pengguna mungkin menangani pemantauan perjalanan menggunakan kode berikut:

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

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

Dengan menggunakan arsitektur modular, pengguna antarmuka pengguna akan menggunakan kode berikut:

// 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];