Significant Location Change (SLC) adalah layanan iOS untuk memantau perpindahan besar perangkat, yang memberi tahu aplikasi hanya saat terjadi perubahan signifikan pada koordinat geografis. Berbeda dengan pelacakan GPS real-time, SLC menggunakan menara seluler untuk menentukan lokasi, memastikan konsumsi daya minimal. Menurut dokumentasi Apple Developer, 2025, Significant Location Change memungkinkan aplikasi menerima pembaruan geolokasi tanpa kerja GPS terus-menerus, menghemat hingga 90% baterai dibandingkan dengan pelacakan terus-menerus.
Poin utama
Significant Location Change (SLC) adalah layanan geolokasi iOS hemat energi yang tertanam dalam framework Core Location. Ini dirancang untuk aplikasi yang perlu melacak perpindahan besar pengguna tanpa menggunakan modul GPS secara terus-menerus. SLC aktif secara otomatis saat transisi antara menara seluler dan memberi tahu aplikasi melalui delegat CLLocationManagerDelegate dengan metode didUpdateLocations.
Berbeda dengan pelacakan level GPS (standar startUpdatingLocation), SLC tidak memerlukan aktivitas prosesor dan chip GPS yang terus-menerus. iOS menggunakan sinyal menara seluler untuk menentukan perkiraan lokasi dan menjalankan aplikasi hanya saat mendeteksi perbedaan koordinat yang signifikan. Ini memungkinkan aplikasi untuk “tidur” di antara pembaruan, mengonsumsi energi minimum.
SLC tersedia di semua perangkat dengan modul seluler sejak iOS 5. Di iPod Touch dan iPad Wi-Fi Only, layanan ini tidak tersedia karena untuk menentukan koordinat justru digunakan menara seluler. Core Location secara otomatis memutuskan peristiwa mana yang dianggap signifikan — pengembang tidak dapat mengonfigurasi sensitivitas SLC atau menentukan jarak minimum untuk pemicu.
SLC sangat cocok untuk aplikasi yang tidak memerlukan akurasi tinggi geolokasi: pelacak cuaca, layanan pengiriman, aplikasi pencarian objek terdekat, analitik tempat yang dikunjungi. SLC juga digunakan oleh sistem iOS untuk mengaktifkan geofencing dalam mode hemat daya. Aplikasi navigasi memerlukan pelacakan GPS yang lebih akurat.
Significant Location Change bekerja berdasarkan analisis identifikasi menara seluler (Cell ID) yang diterima perangkat saat terhubung ke jaringan. iOS memelihara basis data koordinat menara dan dapat menentukan perkiraan lokasi tanpa mengaktifkan GPS. Saat perangkat beralih ke menara baru, sistem membandingkan lokasi baru dan sebelumnya, dan jika perbedaannya signifikan, menjalankan aplikasi untuk memproses peristiwa.
Sistem menggunakan pendekatan klaster: ruang geografis dibagi menjadi klaster dengan radius tertentu. SLC menghasilkan peristiwa hanya saat melintasi batas klaster, bukan pada setiap perpindahan mikro di dalamnya. Ini mencegah panggilan longsor aplikasi saat bergerak dalam satu zona cakupan (misalnya, di gedung atau lingkungan). Akurasi SLC berkisar dari 500 meter hingga beberapa kilometer tergantung pada kepadatan menara seluler.
Saat iOS mendeteksi perubahan signifikan, ia membangunkan aplikasi dari status latar belakang (jika tidak berjalan) dan meneruskan peristiwa ke delegat Core Location. Aplikasi mendapatkan waktu singkat untuk pemrosesan (sekitar 10–30 detik waktu latar belakang) — dalam waktu ini harus memproses koordinat dan, jika perlu, merencanakan pembaruan yang lebih akurat melalui GPS.
SLC memiliki hak istimewa untuk membangunkan aplikasi dari status Suspended atau Background. Jika aplikasi dimatikan oleh sistem karena kekurangan memori, SLC akan memulai ulang (relaunch) di latar belakang. Untuk ini, aplikasi harus berlangganan ke UIApplication.LaunchOptionsKey.location dalam metode didFinishLaunchingWithOptions. Setelah memproses peristiwa, sistem dapat kembali mengalihkan aplikasi ke status Suspended.
Pemicu SLC ditentukan secara eksklusif oleh sistem iOS — pengembang tidak dapat memengaruhi secara programatis perubahan koordinat mana yang dianggap “signifikan”. Namun ada skenario terdokumentasi di mana SLC dijamin menghasilkan peristiwa. Memahami pemicu ini membantu pengembang merancang perilaku aplikasi yang benar.
Cell tower change — pemicu utama SLC. Saat perangkat beralih antara menara seluler (saat bergerak di kota, jalan raya), sistem memeriksa apakah koordinat antara menara lama dan baru cukup berubah. Jika ya — peristiwa dihasilkan. Di lingkungan perkotaan dengan jaringan menara yang padat, SLC dapat aktif setiap 1–3 kilometer.
Jika aplikasi lain atau layanan sistem (misalnya, “Temukan iPhone”, navigasi) mengaktifkan modul GPS, SLC juga dapat menerima pembaruan koordinat yang akurat. Ini adalah efek samping: GPS menentukan lokasi tepat, dan iOS meneruskannya ke semua aplikasi yang berlangganan SLC. Namun, tidak dapat diandalkan pada pemicu ini — tidak dijamin.
Meskipun SLC tidak menggunakan Wi-Fi secara langsung, pergantian jaringan Wi-Fi dapat secara tidak langsung menyebabkan peristiwa jika perangkat menerima koordinat baru melalui Apple Location Service (lokasi berdasarkan basis data Wi-Fi). iOS melakukan hash koordinat titik akses Wi-Fi dan menggunakannya untuk mempertajam posisi di antara pergantian menara.
| Pemicu | Jaminan | Penundaan | Akurasi |
|---|---|---|---|
| Pergantian menara seluler | Tinggi | 1–30 dtk | 500 m – 3 km |
| GPS aplikasi lain | Rendah | Saat itu juga | Hingga 10 m |
| Pergantian Wi-Fi | Sedang | Hingga 5 mnt | 100–500 m |
iOS menyediakan beberapa mekanisme untuk mendapatkan geolokasi, masing-masing dengan akurasi, konsumsi daya, dan skenario penggunaan sendiri. Significant Location Change menempati ceruk antara perkiraan kasar melalui menara dan pelacakan GPS yang akurat, menawarkan keseimbangan optimal untuk aplikasi yang tidak memerlukan akurasi tinggi real-time.
Standard Location Service (startUpdatingLocation()) menggunakan GPS, Wi-Fi, dan menara seluler untuk menentukan koordinat dengan akurasi maksimal. Akurasi hingga 10 meter, tetapi konsumsi daya tinggi — modul GPS aktif terus-menerus. Cocok untuk navigasi, pelacak kebugaran, aplikasi AR. SLC, sebaliknya, tidak menggunakan GPS terus-menerus dan memiliki akurasi 500 meter atau lebih rendah.
Region Monitoring melacak masuk dan keluar dari zona geografis yang ditentukan. Berbeda dengan SLC, pengembang sendiri menentukan batas wilayah (radius dari 100 meter). Geofencing menggunakan SLC sebagai mekanisme bantu — sistem pertama menentukan perkiraan lokasi melalui SLC, kemudian mengaktifkan GPS untuk penentuan masuk/keluar yang tepat. Jumlah maksimum wilayah yang dilacak — 20.
Visit Monitoring — layanan khusus iOS 8+ yang melacak kunjungan tempat (kedatangan dan kepergian). Ini menggunakan kombinasi SLC dan sinyal lain untuk menentukan kapan pengguna berhenti di suatu tempat dan kapan meninggalkannya. Visit Monitoring lebih hemat energi daripada SLC karena menghasilkan lebih sedikit peristiwa dan menggunakan pembelajaran mesin pada perangkat.
| Layanan | Akurasi | Konsumsi daya | Latar belakang |
|---|---|---|---|
| SLC | 500 m – 3 km | Sangat rendah | Ya |
| GPS Standar | Hingga 10 m | Tinggi | Memerlukan izin |
| Geofencing | Dari 100 m | Rendah | Ya |
| Visit Monitoring | Hingga 100 m | Sangat rendah | Ya |
SLC adalah cara paling hemat energi untuk mendapatkan geolokasi di iOS, selain Visit Monitoring. Menurut Apple, SLC mengonsumsi sekitar 0,1–0,5% baterai per jam dalam skenario penggunaan tipikal, sedangkan pelacakan GPS terus-menerus dapat mengonsumsi 5–10% per jam. Penghematan dicapai karena modul GPS hanya diaktifkan untuk waktu singkat untuk memverifikasi koordinat pada setiap peristiwa.
iOS mengelola konsumsi daya SLC melalui optimalisasi baterai. Jika sistem melihat bahwa aplikasi terlalu sering memproses peristiwa SLC (misalnya, perangkat bergerak dengan kereta dan pergantian menara yang sering menghasilkan banyak peristiwa), iOS dapat untuk sementara mengurangi frekuensi notifikasi. Ini adalah mekanisme otomatis — pengembang tidak dapat mematikannya.
Dengan setiap rilis utama iOS, Apple memperketat kebijakan akses latar belakang ke geolokasi. Mulai iOS 13, dialog permintaan izin untuk penggunaan lokasi latar belakang berubah: pengguna harus secara eksplisit memilih “Always” (Selalu), bukan hanya “While Using” (Saat Menggunakan). Tanpa izin Always, SLC tidak akan berfungsi saat aplikasi berada di latar belakang atau dimatikan oleh sistem.
Mari kita lihat implementasi lengkap Significant Location Change di Swift. Contoh ini mencakup konfigurasi CLLocationManager, permintaan izin Always, memulai pemantauan, penanganan peristiwa, dan dukungan mulai ulang aplikasi setelah dimatikan oleh sistem. Kode menggunakan Swift modern dengan async/await untuk pemrosesan koordinat dan tugas latar belakang melalui BGTaskScheduler.
import CoreLocation
import UIKit
class LocationManager: NSObject, CLLocationManagerDelegate {
private let manager = CLLocationManager()
override init() {
super.init()
manager.delegate = self
manager.pausesLocationUpdatesAutomatically = true
manager.desiredAccuracy = kCLLocationAccuracyThreeKilometers
}
func requestAlwaysAuthorization() {
manager.requestAlwaysAuthorization()
}
func startSignificantLocationUpdates() {
manager.startMonitoringSignificantLocationChanges()
}
func locationManager(_ manager: CLLocationManager,
didUpdateLocations locations: [CLLocation]) {
guard let location = locations.last else { return }
Task.detached {
await LocationProcessor.handleLocationUpdate(location)
}
}
func locationManager(_ manager: CLLocationManager,
didFailWithError error: Error) {
Logger.log("SLC error: \(error.localizedDescription)")
}
}
Jika aplikasi dimatikan oleh sistem, SLC secara otomatis akan memulai ulang saat peristiwa baru terjadi. Di AppDelegate harus ditambahkan pemeriksaan mulai melalui peristiwa lokasi dengan UIApplication.LaunchOptionsKey.location. Setelah mulai ulang, aplikasi harus menginisialisasi CLLocationManager dan memanggil startMonitoringSignificantLocationChanges() untuk melanjutkan pemantauan.
class AppDelegate: NSObject, UIApplicationDelegate {
private let manager = LocationManager()
func application(_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions:
[UIApplication.LaunchOptionsKey: Any]?) -> Bool {
if launchOptions?.keys.contains(.location) == true {
Logger.log("App relaunched by SLC event")
}
manager.requestAlwaysAuthorization()
manager.startSignificantLocationUpdates()
return true
}
}
Penggunaan Significant Location Change yang benar memerlukan keseimbangan antara fungsionalitas dan efisiensi energi. Apple secara ketat mengontrol akses latar belakang ke geolokasi, dan aplikasi yang menyalahgunakan SLC atau menggunakannya tanpa kebutuhan yang jelas berisiko ditolak saat publikasi di App Store.
Di Info.plist harus ditambahkan string justifikasi: NSLocationAlwaysAndWhenInUseUsageDescription dan NSLocationWhenInUseUsageDescription. Deskripsi harus menjelaskan dengan jelas mengapa aplikasi memerlukan akses latar belakang ke geolokasi. App Review membaca string ini dan dapat menolak aplikasi jika justifikasi tidak cukup atau formulasi tidak jelas. Contoh: “Aplikasi ini menggunakan SLC untuk memperbarui prakiraan cuaca saat Anda bepergian.”
Jangan menjalankan operasi mahal (lokasi GPS, permintaan jaringan) pada setiap peristiwa SLC. SLC dapat menghasilkan puluhan peristiwa per jam saat bergerak dengan transportasi. Gunakan debounding: simpan waktu pembaruan penuh terakhir dan lewati pemrosesan jika kurang dari 5–10 menit sejak pembaruan sebelumnya. Ini akan menghemat baterai dan lalu lintas jaringan.
Untuk pemrosesan jangka panjang setelah peristiwa SLC, gunakan BGTaskScheduler. Saat aplikasi menerima peristiwa SLC, aplikasi dapat menjadwalkan tugas latar belakang melalui BGProcessingTaskRequest atau BGAppRefreshTaskRequest. Ini memungkinkan menunda operasi intensif sumber daya (sinkronisasi dengan server, analisis rute) ke jendela eksekusi latar belakang terdekat, tanpa memblokir aliran utama respons SLC.
Pertanyaan yang sering diajukan
Significant Location Change (SLC) adalah layanan iOS hemat energi untuk memantau perpindahan besar perangkat berdasarkan menara seluler. Mengonsumsi hingga 90% lebih sedikit energi daripada pelacakan GPS terus-menerus dan cocok untuk aplikasi yang tidak memerlukan akurasi tinggi geolokasi.
Akurasi SLC berkisar dari 500 meter hingga 3 kilometer tergantung pada kepadatan menara seluler. Di lingkungan perkotaan akurasinya lebih tinggi (mendekati 500 m), di daerah pedesaan — lebih rendah (hingga beberapa kilometer). SLC tidak dirancang untuk penentuan koordinat yang tepat — ini adalah sumber daya untuk pemantauan perkiraan perpindahan.
Panggil CLLocationManager.requestAlwaysAuthorization() setelah menambahkan string NSLocationAlwaysAndWhenInUseUsageDescription di Info.plist. Mulai iOS 13, pengguna harus secara eksplisit memilih “Always” (Selalu) di dialog sistem. Tanpa izin ini, SLC tidak berfungsi di latar belakang.
Ya, SLC dapat memulai ulang aplikasi jika dimatikan oleh sistem karena kekurangan memori. Saat mulai, periksa UIApplication.LaunchOptionsKey.location dalam metode didFinishLaunchingWithOptions dan panggil startMonitoringSignificantLocationChanges() untuk melanjutkan pemantauan.
SLC hanya menggunakan menara seluler dan tidak mengaktifkan GPS terus-menerus, memberikan penghematan baterai hingga 90%. Akurasi — dari 500 m hingga 3 km. Standard Location Service menggunakan GPS, Wi-Fi, dan menara, akurasi hingga 10 m, tetapi mengonsumsi lebih banyak energi. SLC cocok untuk pemantauan latar belakang, GPS — untuk navigasi.
Ringkasan
Kami akan mengembangkan aplikasi seluler turnkey
IT Sectr membuat aplikasi iOS dan Android untuk startup dan bisnis sejak 2017. Kami akan memberi saran dan mengusulkan solusi terbaik.
Baca juga