Modularisasi Migrasi untuk Android Consumer SDK

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

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

Ringkasan

Arsitektur modular Consumer SDK memperkenalkan objek Session yang menyimpan status antarmuka pengguna. Di versi sebelumnya Consumer SDK, yaitu aplikasi yang mengalir di antara status. Dengan pada arsitektur modular ini, Anda membuat objek Session dan memiliki opsi untuk menampilkan sesi di peta. Jika tidak ada sesi ditampilkan, peta kosong. Tidak ada lagi "kosong" atau "diinisialisasi" status.

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

Objek Session dikaitkan dengan jenis modul. Objek Session ditautkan ke siklus proses objek yang digunakan untuk menginisialisasinya.

Misalkan Anda membuat objek TripModel untuk melacak TRIP_A. Jika Anda mencoba mendapatkan objek TripModel untuk TRIP_A lagi, Anda akan dapatkan objek TripModel yang sama. Untuk melacak TRIP_B, dapatkan Objek TripModel.

Status sesi

Sesi dapat berada dalam salah satu status berikut:

  • Sesi yang dibuat direpresentasikan oleh objek Sesi. Anda membuat sesi dengan memanggil metode create. Contoh:

    JourneySharingSession sessionA = JourneySharingSession.createInstance(TripModelA)
    
  • Sesi dimulai didaftarkan untuk pembaruan data dan nilai elemen antarmuka penggunanya. Anda memulai sesi dengan memanggil Metode start. Contoh:

    sessionA.start()
    
  • Sesi yang ditampilkan dimulai secara otomatis. Ini menampilkan elemen antarmuka pengguna dan memperbaruinya sebagai respons terhadap pembaruan data. Anda menampilkan sesi dengan memanggil metode showSession. Contoh:

    ConsumerController.showSession(sessionA)
    
  • Sesi yang dihentikan akan berhenti memuat ulang datanya dan berhenti mengupdatenya elemen antarmuka pengguna. Anda menghentikan sesi dengan memanggil metode stop. Contoh:

    sessionA.stop()
    

Menggunakan komponen antarmuka pengguna dan khusus 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:

  • Lakukan inisialisasi objek ConsumerApi.
  • Dapatkan objek TripModelManager dari ConsumerApi.
  • Mulai pantau perjalanan dengan TripModelManager untuk menerima objek TripModel.
  • Daftarkan callback pada objek TripModel.

Contoh berikut menunjukkan cara menggunakan komponen khusus data:

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

Menggunakan API elemen antarmuka pengguna

Menggunakan objek ConsumerController untuk mengakses API elemen antarmuka pengguna Solusi Perjalanan dan Pengiriman On-demand.

Untuk membuat aplikasi transportasi online dengan antarmuka pengguna Solusi Perjalanan dan Pengiriman On-demand API elemen:

  • Inisialisasi objek ConsumerApi.
  • Dapatkan objek TripModelManager dari objek ConsumerApi.
  • Dapatkan objek TripModel dari TripModelManager yang melacak satu perjalanan.
  • Tambahkan ConsumerMap[View/Fragment] ke tampilan aplikasi.
  • Dapatkan objek ConsumerController dari ConsumerMap[View/Fragment].
  • Berikan objek TripModel ke Pengontrol untuk mendapatkan objek JourneySharingSession.
  • Gunakan Pengontrol untuk menampilkan JourneySharingSession.

Contoh berikut menunjukkan cara menggunakan API antarmuka pengguna:

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

Perubahan kode arsitektur modular

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

Izin akses lokasi

Izin FINE_LOCATION tidak lagi diperlukan oleh Consumer SDK.

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:

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

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

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

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

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

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

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

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

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

Penekanan peta

Tampilan atau fragmen peta tidak lagi memperbesar ke lokasi pengguna saat inisialisasi ketika tidak ada sesi yang aktif. Ini akan tetap zoom otomatis untuk menampilkan sesi Berbagi Perjalanan yang aktif selama saat fitur Kamera Otomatis diaktifkan. Kamera Otomatis diaktifkan secara default.

Di versi sebelumnya, Anda akan menggunakan kode berikut untuk menempatkan kamera di tengah untuk sesi yang aktif saat ini:

consumerController.centerMapForState()

Dengan menggunakan arsitektur modular, Anda akan menggunakan kode berikut:

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

Untuk menonaktifkan fitur Kamera Otomatis di versi sebelumnya, Anda akan menggunakan kode berikut:

consumerController.disableAutoCamera(true);

Dengan menggunakan arsitektur modular, Anda akan menggunakan kode berikut:

consumerController.setAutoCameraEnabled(false);

Penyesuaian

FAB kustom Solusi Perjalanan dan Pengiriman On-demand telah dihapus dari peta.

FAB khusus

Metode terkait untuk FAB juga telah dihapus:

ConsumerController.isMyLocationFabEnabled()
ConsumerController.setMyLocationFabEnabled()