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
dariConsumerApi
. - Mulai pantau perjalanan dengan
TripModelManager
untuk menerima objekTripModel
. - 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 objekConsumerApi
. - Dapatkan objek
TripModel
dariTripModelManager
yang melacak satu perjalanan. - Tambahkan
ConsumerMap[View/Fragment]
ke tampilan aplikasi. - Dapatkan objek
ConsumerController
dariConsumerMap[View/Fragment]
. - Berikan objek
TripModel
ke Pengontrol untuk mendapatkan objekJourneySharingSession
. - 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.
Metode terkait untuk FAB juga telah dihapus:
ConsumerController.isMyLocationFabEnabled()
ConsumerController.setMyLocationFabEnabled()