Dokumen ini menjelaskan praktik terbaik tentang cara mengoptimalkan konsumsi daya di aplikasi navigasi seluler yang Anda buat menggunakan Navigation SDK. Pada saat yang sama, dokumen ini menjelaskan kompromi yang perlu dipertimbangkan saat menerapkan praktik ini. Secara khusus, dokumen ini membahas hal-hal berikut:
- Sumber konsumsi daya tinggi, diurutkan dari yang tertinggi hingga terendah.
- Strategi untuk mengoptimalkan konsumsi daya, berdasarkan urutan kepentingannya, dimulai dengan kecepatan frame.
- Strategi pengguna akhir untuk mengedukasi pengguna aplikasi Anda tentang cara mengelola penggunaan perangkat mereka saat bernavigasi.
Mengapa Anda harus mengoptimalkan aplikasi navigasi?
Bergantung pada situasi mereka, pengguna aplikasi Anda mungkin menjalankan panduan navigasi dalam jangka waktu yang lama. Misalnya, pengemudi dan kurir pengiriman dapat bekerja berjam-jam, menyelesaikan tugas di wilayah yang tidak dikenal. Dalam kasus ini, mereka sangat mengandalkan panduan belokan demi belokan dalam aplikasi. Hal ini menyebabkan beberapa masalah umum:
- Baterai cepat habis dan ketersediaan pengisi daya. Penggunaan navigasi yang berat dapat menyebabkan baterai perangkat habis lebih cepat dari yang diharapkan. Meskipun banyak pengguna dapat mengatasi masalah ini dengan mengisi daya perangkat di dalam kendaraan, pengemudi kendaraan roda dua tidak dapat melakukannya.
- Throttling perangkat karena panas. Bahkan pengguna yang terus mengisi daya perangkatnya dapat mengalami masalah. Konsumsi daya yang tinggi dalam jangka waktu yang lama dapat menyebabkan perangkat menjadi panas, sehingga mengakibatkan throttling termal dan penurunan performa berikutnya.
Aplikasi navigasi belokan demi belokan mengandalkan fitur yang mengonsumsi daya besar seperti layar, GPS, dan komunikasi radio dengan menara seluler, jadi praktik terbaiknya adalah mengoptimalkan penggunaan daya aplikasi seluler Anda. Selain itu, Anda harus mempertimbangkan kebutuhan penggunaan daya audiens target agar dapat membuat kompromi yang sesuai antara performa dan pengoptimalan konsumsi daya.
Apa yang paling banyak mengonsumsi daya?
Bagian ini membagi aktivitas dalam aplikasi yang terkait dengan konsumsi daya tinggi menjadi dua kategori:
- Rendering layar
- Pembaruan lokasi
Rendering layar
Rendering layar biasanya menyebabkan konsumsi daya tertinggi di aplikasi navigasi seluler. Setiap kali perangkat menggambar peta dan elemen UI lainnya di layar, perangkat mengandalkan pemrosesan GPU dan CPU. Demikian pula, saat pengguna membiarkan layar tersebut tetap aktif dalam waktu yang lama, hal itu juga menggunakan lebih banyak daya.
Sampai batas tertentu, Anda dapat memperkirakan konsumsi daya yang tinggi dari pengemudi atau penumpang yang mengandalkan peta yang terlihat untuk menavigasi, terutama jika mereka menggunakan aplikasi secara terus-menerus selama berjam-jam. Dalam skenario ini, aplikasi juga melakukan rendering dengan kecepatan yang lebih tinggi di layar karena peta kemudian diperbarui secara real time. Dalam beberapa kasus, layar dapat digambar ulang hampir terus-menerus, terutama saat pengguna berkendara dari satu lokasi ke lokasi lain tanpa berhenti.
Pembaruan lokasi
Selain rendering layar, dua aktivitas navigasi lainnya menggunakan daya perangkat:
- Penggunaan GPS dan menara BTS
- Pembaruan dan berbagi lokasi, seperti untuk memberikan perkiraan waktu tiba atau melaporkan posisi kendaraan dalam armada.
Komunikasi radio seluler dan GPS mengandalkan operasi start-up yang boros daya: GPS harus menemukan satelit dan radio seluler harus bernegosiasi dengan menara dan membuat koneksi. Karena alasan ini, pada dasarnya aplikasi berjalan terus-menerus selama navigasi, meskipun radio seluler tetap aktif selama 20-30 detik dalam upaya untuk meminimalkan biaya penyiapan. Sistem operasi mengontrol setelan ini yang tidak dapat Anda konfigurasi dengan mudah di aplikasi.
Untuk pembaruan lokasi, penggunaan daya bervariasi berdasarkan faktor yang tidak dapat diprediksi. Misalnya, jarak antara perangkat dan BTS seluler menentukan penggunaan daya, karena perangkat akan menggunakan sinyal minimum yang diperlukan untuk melanjutkan navigasi agar tidak beralih tower. Oleh karena itu, perangkat yang bernavigasi di area dengan konektivitas buruk akan menggunakan lebih banyak daya daripada perangkat yang berada di dekat stasiun pangkalan. Selain itu, beberapa aplikasi dapat membagikan update lokasi dengan layanan pengelolaan armada pusat, dan oleh karena itu perlu berkomunikasi dengan server untuk melakukannya.
Mengoptimalkan penggunaan daya aplikasi Anda
Tantangan untuk mengoptimalkan penggunaan daya di aplikasi navigasi adalah aplikasi ini sangat bergantung pada resource yang boros daya, sehingga membatasi opsi Anda untuk mengurangi dampak tanpa melakukan kompromi seperti membatasi penggunaan layar. Bagian ini memberikan daftar pendekatan yang dapat Anda lakukan saat mengoptimalkan aplikasi, dari yang paling berdampak hingga yang paling tidak berdampak.
Mengubah kecepatan frame
Layar memperbarui apa yang ditampilkannya pada frekuensi yang dikenal sebagai kecepatan frame, biasanya diukur dalam frame per detik (FPS). Karena rendering layar menggunakan pemrosesan CPU dan GPU yang signifikan, Anda dapat mengurangi kecepatan frame untuk menghemat daya.
Jika Anda mengurangi kecepatan frame, rendering peta dan gestur interaktif (seperti menggeser, melakukan zoom, atau memutar) dapat terlihat kurang lancar. Untuk menyeimbangkan efisiensi daya dengan pengalaman pengguna yang responsif, Anda dapat mempertahankan kecepatan frame dasar yang rendah dan meningkatkannya secara dinamis selama interaksi pengguna yang aktif.
Di perangkat iOS, Maps SDK for iOS mengekspos properti preferredFrameRate diGMSMapView untuk mengontrol kecepatan frame. Tabel berikut menunjukkan nilai GMSFrameRate yang dapat Anda sesuaikan:
| Nilai Swift | Nilai Objective-C | Deskripsi |
|---|---|---|
.powerSave |
kGMSFrameRatePowerSave |
Gunakan kecepatan frame minimum untuk menghemat penggunaan baterai. |
.conservative |
kGMSFrameRateConservative |
Gunakan kecepatan frame median untuk memberikan rendering yang lebih lancar dan menghemat siklus pemrosesan. |
.maximum |
kGMSFrameRateMaximum |
Gunakan kecepatan frame maksimum untuk perangkat (30 FPS untuk perangkat kelas bawah, 60 FPS untuk perangkat kelas atas). |
Sebagai referensi, lihat GMSFrameRate dalam dokumentasi Navigation SDK for iOS.
Untuk menetapkan kecepatan frame pilihan secara langsung, tetapkan nilai ke
mapView.preferredFrameRate:
Swift
// Reduce the frame rate to conserve battery:
mapView.preferredFrameRate = .powerSave
Objective-C
// Reduce the frame rate to conserve battery:
mapView.preferredFrameRate = kGMSFrameRatePowerSave;
Menyesuaikan kecepatan frame secara dinamis selama gestur
Kecepatan frame yang lebih rendah dapat membuat interaksi pengguna (seperti menggeser, memperbesar, dan memutar) terasa tersendat-sendat. Anda dapat menjaga interaksi tetap lancar sekaligus menghemat daya dengan meningkatkan kecepatan frame untuk sementara ke maksimum selama gestur pengguna, lalu kembali ke kecepatan frame hemat daya saat gestur berakhir.
Untuk melakukannya, terapkan protokol GMSMapViewDelegate dan terapkan
metode berikut:
- Di
mapView:willMove:, periksa apakah gerakan kamera dimulai oleh gestur pengguna. Jikagestureadalahtrue, tetapkanpreferredFrameRateke maksimum. - Di
mapView:idleAtCameraPosition:, pulihkanpreferredFrameRateke mode hemat daya saat kamera tidak ada aktivitas.
Contoh kode berikut menunjukkan cara menyesuaikan kecepatan frame secara dinamis selama gestur pengguna:
Swift
class YourViewController: UIViewController {
@IBOutlet weak var mapView: GMSMapView!
override func viewDidLoad() {
super.viewDidLoad()
mapView.delegate = self
// Set a baseline low frame rate to conserve power:
mapView.preferredFrameRate = .powerSave
}
}
// MARK: - GMSMapViewDelegate
extension YourViewController: GMSMapViewDelegate {
func mapView(_ mapView: GMSMapView, willMove gesture: Bool) {
// Increase frame rate during user gestures for smooth interaction:
if gesture {
mapView.preferredFrameRate = .maximum
}
}
func mapView(_ mapView: GMSMapView, idleAt position: GMSCameraPosition) {
// Restore the power-saving frame rate when gestures finish:
mapView.preferredFrameRate = .powerSave
}
}
Objective-C
@interface YourViewController : UIViewController <GMSMapViewDelegate>
@end
@implementation YourViewController {
GMSMapView *_mapView;
}
- (void)viewDidLoad {
[super viewDidLoad];
_mapView.delegate = self;
// Set a baseline low frame rate to conserve power:
_mapView.preferredFrameRate = kGMSFrameRatePowerSave;
}
#pragma mark - GMSMapViewDelegate
- (void)mapView:(GMSMapView *)mapView willMove:(BOOL)gesture {
// Increase frame rate during user gestures for smooth interaction:
if (gesture) {
mapView.preferredFrameRate = kGMSFrameRateMaximum;
}
}
- (void)mapView:(GMSMapView *)mapView
idleAtCameraPosition:(GMSCameraPosition *)position {
// Restore the power-saving frame rate when gestures finish:
mapView.preferredFrameRate = kGMSFrameRatePowerSave;
}
@end
Menavigasi tanpa peta
Meskipun Anda tidak dapat mengontrol cara pengguna akhir menyetel kecerahan layar perangkatnya atau durasi layar tetap aktif, Anda dapat memberikan opsi untuk panduan navigasi tanpa peta. Hal ini akan memungkinkan pengguna akhir memilih opsi tersebut untuk menghemat daya. Misalnya, jika pengemudi sering bekerja di kawasan yang sama, mereka mungkin tidak memerlukan panduan berbasis peta sesering mungkin. Navigasi tanpa peta dapat diaktifkan dengan menetapkan tujuan dan memulai panduan di Navigation SDK, tetapi tidak menampilkan peta.
Tambahkan baris kode untuk menyembunyikan GMSMapView:
mapView.isHidden = true
Navigation SDK akan terus memperbarui lokasi yang disesuaikan dengan jalan, perkiraan waktu tiba, dan jarak perjalanan yang tersisa, dan aplikasi Anda masih dapat berlangganan semua peristiwa yang dimunculkan oleh SDK saat pengemudi melanjutkan perjalanan. Hal ini tidak sesuai untuk setiap kasus penggunaan dan bukan saran yang baik dalam kasus saat pengemudi perlu melihat peta dan mengikuti panduan visual. Screenshot berikut mengilustrasikan perbandingan berdampingan saat beralih tampilan peta selama navigasi aktif.
|
|
Menggunakan gaya peta gelap
Pertimbangkan untuk menerapkan gaya visual peta agar menggunakan tema gelap untuk mengurangi jumlah energi yang diperlukan untuk merender peta di layar.
Navigation SDK merender petanya menggunakan Google Maps SDK for iOS, yang berisi opsi untuk menata gaya tampilan peta non-navigasi di aplikasi Anda. Tampilan navigasi juga mendukung mode gelap paksa. Fitur ini mungkin tidak memengaruhi setiap perangkat dengan cara yang sama karena perbedaan jenis layar, tetapi memungkinkan penghematan daya dalam beberapa kasus. Sebuah studi baru-baru ini menemukan bahwa jumlah daya yang dihemat oleh mode gelap di beberapa layar bergantung pada seberapa terang layar tersebut pada awalnya. Misalnya, mode gelap menghemat lebih banyak daya pada layar yang disetel ke kecerahan penuh daripada layar yang kecerahannya sudah disesuaikan ke 30-50% dari maksimum. Hal ini penting untuk dipertimbangkan saat menggunakan mode gelap untuk aplikasi Anda, karena penghematan daya akan relatif terhadap cara pengguna akhir menyetel kecerahan layar mereka.
Untuk mempelajari lebih lanjut cara mengubah UI Navigasi, lihat Mengubah UI navigasi.
Gaya visual peta berbasis cloud memerlukan ID peta yang merepresentasikan konfigurasi peta sisi server yang telah dibuat di project Konsol Google Anda. Untuk mengetahui informasi selengkapnya tentang cara membuat ID peta, lihat dokumentasi developer ID peta. Untuk mengetahui detail selengkapnya tentang cara mendesain dan men-deploy gaya peta berbasis Cloud, lihat dokumentasi developer tentang membuat dan mengelola gaya peta berbasis Cloud.
Mengubah frekuensi pembaruan lokasi GPS
Saat mempertimbangkan penggunaan daya dari update lokasi yang dikirim dari perangkat, fokuslah pada frekuensi update lokasi, bukan jumlah data yang dikirim dalam transmisi.
Anda tidak dapat mengontrolnya secara langsung di Navigation SDK . Saran yang sama berlaku untuk penggunaan sumber lokasi non-GPS (Seluler dan Wi-Fi).
Mengedukasi pengguna
Pengguna aplikasi Anda mungkin ingin mengetahui cara mengoptimalkan konsumsi daya. Untuk membantu mengurangi konsumsi daya di aplikasi mereka, sarankan pengguna Anda untuk melakukan hal berikut:
- Mengunci ponsel
- Menempatkan aplikasi navigasi di latar belakang
- Gunakan navigasi tanpa peta jika memungkinkan
- Mengurangi kecerahan layar, baik dengan menggunakan mode gelap untuk layar OLED dan AMOLED, atau dengan mengaktifkan kecerahan adaptif
- Menjaga perangkat tetap dingin
- Menghubungkan ke Wi-Fi dalam kendaraan jika tersedia
Mengukur konsumsi daya
Anda dapat menggunakan alat kelas profesional untuk mengukur konsumsi daya, tetapi alat tersebut sering kali sulit didapatkan atau mahal. Alat pembuatan profil aplikasi dan IDE seperti Power Profiler di Android Studio dan panel Penggunaan Baterai di XCode Organizer mengukur konsumsi daya, tetapi sulit untuk menghilangkan efek proses latar belakang atau menetapkan dasar performa untuk mengukur performa. Dalam beberapa kasus, pembatasan perangkat dapat mencegah akses ke data yang diperlukan.
Anda dapat menggunakan hardware pemantauan daya khusus dan mengubah konfigurasi koneksi baterai, serta produk dan layanan komersial tersedia untuk membantu Anda melakukannya. Perhatikan bahwa memodifikasi perangkat dengan cara ini dapat membatalkan garansi perangkat.