Modularisasi Migrasi untuk Android Consumer SDK

Consumer SDK untuk Android 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 Sesi yang menyimpan status antarmuka pengguna. Pada Consumer SDK versi sebelumnya, aplikasi mengalir di antara status. Dengan arsitektur modular ini, Anda dapat membuat objek Sesi dan memiliki opsi untuk menampilkan sesi di peta. Jika tidak ada sesi yang ditampilkan, peta akan kosong. Tidak ada lagi status "kosong" atau "diinisialisasi".

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

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

Misalkan Anda membuat objek TripModel untuk melacak trip_A. Jika mencoba mendapatkan objek TripModel untuk trip_A lagi, Anda akan mendapatkan objek TripModel yang sama. Untuk melacak trip_B, dapatkan objek TripModel baru.

Status sesi

Sesi dapat berada dalam salah satu dari beberapa status:

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

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

    sessionA.start()
    
  • Sesi yang ditampilkan dimulai secara otomatis. Elemen 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 berhenti berhenti memuat ulang datanya dan berhenti mengupdate elemen antarmuka penggunanya. Anda menghentikan sesi dengan memanggil metode stop. Contoh:

    sessionA.stop()
    

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:

  • 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

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

Untuk membuat aplikasi transportasi online dengan API elemen antarmuka pengguna Rides and Deliveries Solution:

  • 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, 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);

Memusatkan kembali peta

Fragmen atau tampilan peta tidak lagi diperbesar ke lokasi pengguna saat diinisialisasi jika tidak ada sesi yang aktif. Fitur ini akan tetap otomatis melakukan zoom untuk menampilkan sesi Berbagi Perjalanan yang aktif selama fitur Kamera Otomatis diaktifkan. Kamera Otomatis diaktifkan secara default.

Pada versi sebelumnya, Anda akan menggunakan kode berikut untuk menempatkan kamera di tengah untuk sesi 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 AutoCamera di versi sebelumnya, Anda harus 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 Kustom

Metode terkait untuk FAB juga telah dihapus:

ConsumerController.isMyLocationFabEnabled()
ConsumerController.setMyLocationFabEnabled()