GPS at mga serbisyo ng geolocation sa mga mobile app — ay mga API para sa pagtukoy ng pisikal na lokasyon ng device gamit ang mga satellite, Wi-Fi at mobile network. Ayon sa Google Android Location Guide (2025), higit sa 60% ng mga mobile app ang gumagamit ng data ng lokasyon para sa pag-personalize ng nilalaman. Ang Fused Location Provider sa Android ay nagsasama ng maraming source para pataasin ang accuracy at bawasan ang konsumo ng kuryente.
Mga pangunahing punto
GPS (Global Positioning System) — ay isang satellite navigation system na binubuo ng 31 aktibong satellite sa orbit sa taas na humigit-kumulang 20 200 km. Sa mga mobile device, ang GPS chip ay tumatanggap ng mga signal mula sa satellite at kinakalkula ang coordinates batay sa trilateration — pagsukat ng oras ng paglalakbay ng signal mula sa maraming satellite. Ang mga serbisyo ng geolocation sa mga mobile OS ay nagdaragdag sa GPS ng data mula sa Wi-Fi access points at cell tower para mapabilis ang pagtukoy ng coordinates (A-GPS) at mapabuti ang accuracy sa loob ng mga gusali. Ayon sa datos ng GPS.gov (2024), ang accuracy ng civilian GPS ay 3-5 metro sa maaliwalas na kalangitan at hanggang 15 metro sa mga lugar na may siksik na gusali.
Ang mga modernong mobile device ay sumusuporta hindi lamang sa American GPS system, kundi pati na rin sa iba pang global navigation system: Russian GLONASS (24 satellite), European Galileo (28 satellite) at Chinese BeiDou. Ang sabay-sabay na suporta ng maraming sistema ay nagpapataas ng accuracy at bilis ng pagtukoy ng coordinates — ang device ay maaaring gumamit ng hanggang 40 satellite mula sa iba’t ibang sistema para kalkulahin ang posisyon. Sa iOS at Android, ang pagpili ng satellite system ay awtomatiko sa antas ng hardware chip, hindi kailangang pamahalaan ito ng developer.
Ang proseso ng pagtukoy ng lokasyon sa isang mobile device ay binubuo ng ilang yugto: pagkolekta ng data mula sa mga source (satellite, Wi-Fi, mobile network), pagsala at pagwawasto ng mga error, pagkalkula ng coordinates at pagpapadala ng resulta sa app. Ang operating system ay namamahala sa prosesong ito sa pamamagitan ng isang pinag-isang serbisyo ng geolocation na nag-o-optimize sa gawain ng lahat ng source para makatipid ng baterya. Sa ibaba ay inilalarawan ang tatlong pangunahing source ng data ng lokasyon.
Satellite navigation ay nagbibigay ng maximum accuracy (3-5 metro), ngunit nangangailangan ng direktang tanaw ng langit. Sa loob ng mga gusali o sa siksik na urban na lugar, ang GPS signal ay maaaring humina o ganap na mawala. Ang oras ng unang pagtukoy ng posisyon (TTFF) ay 30-60 segundo sa cold start at 5-10 segundo sa hot start. Ang A-GPS (Assisted GPS) ay nagpapabilis ng start sa pamamagitan ng pag-download ng satellite ephemeris sa internet sa halip na maghintay ng data mula sa satellite.
Wi-Fi positioning ay gumagamit ng database ng MAC address ng mga access point na may kilalang coordinates. Ang accuracy ay 10-50 metro sa sakop ng Wi-Fi. Ang mga cell tower ay nagbibigay ng accuracy mula 100 metro hanggang ilang kilometro depende sa density ng tower. Ang kombinasyon ng lahat ng source (Fused Location) ay nagbibigay-daan upang makakuha ng coordinates na may makatwirang accuracy sa minimal na konsumo ng kuryente — lalo na kapag naka-off ang GPS chip o hindi available ang satellite signal.
Sa parehong platform, ang mga serbisyo ng geolocation ay naipatupad sa pamamagitan ng system API na may iba’t ibang antas ng abstraction. Ang Android ay gumagamit ng FusedLocationProviderClient mula sa Google Play Services, ang iOS ay gumagamit ng CLLocationManager mula sa Core Location. Ang parehong API ay nagbibigay-daan sa paghiling ng isang beses na posisyon o pag-subscribe sa regular na updates. Sa ibaba ay isang halimbawa ng pagkuha ng coordinates sa Android gamit ang Fused Location Provider sa Kotlin.
val fusedClient = LocationServices.getFusedLocationProviderClient(this)
val locationRequest = LocationRequest.Builder(
Priority.PRIORITY_HIGH_ACCURACY
)
.setIntervalMillis(5000)
.setMinUpdateIntervalMillis(2000)
.build()
val locationCallback = object : LocationCallback() {
override fun onLocationResult(result: LocationResult) {
result.lastLocation?.let { location ->
Log.d("Lokasyon", "Lat: ${location.latitude}, Lng: ${location.longitude}")
}
}
}
if (checkLocationPermission()) {
fusedClient.requestLocationUpdates(
locationRequest, locationCallback,
Looper.getMainLooper()
)
}
Sa halimbawa, ang LocationRequest ay naka-configure na may priority na HIGH_ACCURACY — ito ay nag-aaktibo ng GPS para sa maximum accuracy. Ang setIntervalMillis ay nagtatakda ng nais na update interval (5 segundo), setMinUpdateIntervalMillis — ang minimum interval (2 segundo). Ang callback na onLocationResult ay tinatawag tuwing ang system ay makakatanggap ng bagong coordinates. Mahalagang suriin ang pahintulot bago tawagan ang requestLocationUpdates — kung hindi, ang app ay mag-crash na may SecurityException.
import CoreLocation
let locationManager = CLLocationManager()
locationManager.delegate = self
locationManager.desiredAccuracy = kCLLocationAccuracyBest
locationManager.requestWhenInUseAuthorization()
locationManager.startUpdatingLocation()
// MARK: - CLLocationManagerDelegate
func locationManager(
_ manager: CLLocationManager,
didUpdateLocations locations: [CLLocation]
) {
guard let location = locations.last else { return }
print("Location: \(location.coordinate.latitude), \(location.coordinate.longitude)")
}
Sa iOS, ang desiredAccuracy ay tumutukoy sa accuracy ng request: ang kCLLocationAccuracyBest ay gumagamit ng lahat ng available na source (GPS + Wi-Fi + mobile network). Pagkatapos humiling ng pahintulot sa pamamagitan ng requestWhenUseAuthorization, ang system ay nagpapakita ng dialog sa user. Ang delegate na didUpdateLocations ay tumatanggap ng array ng CLLocation objects na may coordinates, altitude, bilis at direksyon. Para ihinto ang updates, tinatawag ang stopUpdatingLocation para makatipid ng baterya.
Ang access sa geolocation ay nangangailangan ng tahasang pahintulot ng user sa parehong platform. Sa Android, ginagamit ang mga pahintulot na ACCESS_FINE_LOCATION (GPS) at ACCESS_COARSE_LOCATION (Wi-Fi/mobile network). Simula sa Android 10, ang background access ay nangangailangan ng hiwalay na pahintulot na ACCESS_BACKGROUND_LOCATION. Sa iOS, tatlong level ang available: requestWhenInUseAuthorization (kapag aktibo ang app), requestAlwaysAuthorization (sa background) at time stamp para sa precise positioning. Ang Apple ay nangangailangan ng mandatoryong paglalarawan sa Info.plist: NSLocationWhenInUseUsageDescription o NSLocationAlwaysAndWhenInUseUsageDescription. Kapag wala ang mga key na ito, ang request ng pahintulot ay hindi papansinin.
Ang patuloy na paggamit ng GPS ay makabuluhang nagbabawas ng baterya — hanggang 30% kada oras ng tuloy-tuloy na trabaho sa maximum accuracy. Para sa pag-optimize ng konsumo ng kuryente, inirerekomenda na gamitin ang geolocation lamang kapag kinakailangan at ihinto ang updates kapag ang app ay pumunta sa background. Sa Android, ang FusedLocationProviderClient ay awtomatikong lumilipat sa pagitan ng GPS at network source depende sa availability at priority ng request. Sa iOS, gamitin ang significant-change location service (startMonitoringSignificantLocationChanges) para sa updates na may minimal na konsumo ng kuryente — mas mababa ang accuracy (hanggang 500 metro), ngunit halos hindi nauubos ang baterya. Gayundin, mag-apply ng batch processing: mangolekta ng coordinates sa interval na 5-10 minuto at ipadala sa server sa isang request sa pamamagitan ng WorkManager sa Android o BGTaskScheduler sa iOS. Ang pagbabawas ng frequency ng request mula 1 segundo hanggang 30 segundo ay nagbabawas ng konsumo ng kuryente ng geolocation ng 85%.
Geolocation ay ginagamit sa malawak na spectrum ng mobile apps: mula sa navigator hanggang sa serbisyo ng paghahatid. Ang pinakakaraniwang sitwasyon ay kinabibilangan ng pagpapakita ng user sa mapa, geotargeting ng advertising, pagsubaybay ng courier, geofence para sa push notification at pagsubaybay ng fitness activity. Ang bawat sitwasyon ay nangangailangan ng sariling approach sa accuracy at frequency ng updates. Sa ibaba ay isang table na may mga rekomendasyon sa configuration para sa iba’t ibang uri ng apps.
| Uri ng app | Accuracy | Interval | Background mode |
|---|---|---|---|
| Navigator | HIGH (GPS) | 1-2 seg | Oo |
| Paghahatid | BALANCED (GPS+Wi-Fi) | 10-30 seg | Oo |
| Panahon | LOW (Wi-Fi/mobile network) | Isang beses | Hindi |
| Social media | BALANCED | Kapag binuksan | Hindi |
| Fitness | HIGH (GPS) | 5-10 seg | Oo |
Sa pagdidisenyo ng functionality ng geolocation, mahalagang isaalang-alang na ang mga user ay maaaring bawiin ang pahintulot anumang oras sa pamamagitan ng system settings. Ang app ay dapat na tama na humawak ng sitwasyon kapag ang geolocation ay hindi available at magpakita ng malinaw na paliwanag kung bakit limitado ang functionality.
Geofencing — teknolohiya ng paglikha ng virtual na hangganan sa mapa, kung saan kapag na-cross ay makakatanggap ng notification ang app. Sa Android, ang geofence ay naipatupad sa pamamagitan ng GeofencingClient mula sa Google Play Services, sa iOS — sa pamamagitan ng CLCircularRegion mula sa Core Location. Sa pagpasok o paglabas ng zone, ginigising ng system ang app at nagpapadala ng event kahit na ang app ay sarado o na-minimize. Ito ay ginagamit para sa push notification kapag lumalapit sa tindahan, mga paalala ng gawain batay sa lokasyon at automation ng IoT devices. Ang maximum na bilang ng geofence ay limitado: sa Android — 100, sa iOS — 20 sabay-sabay. Ang minimum na radius ng zone ay 50 metro sa parehong platform, kung hindi ay maaaring hindi gumana ang system dahil sa error ng pagtukoy ng lokasyon. Sa pagpasok ng zone, ang system ay nag-start ng Intent sa Android o tumatawag ng delegate na locationManager:didEnterRegion sa iOS.
Mga madalas itanong
Ang GPS sa smartphone ay isang built-in na receiver ng signal ng satellite navigation system na tumutukoy ng coordinates na may accuracy na 3-5 metro. Sa mga device ay available din ang GLONASS, Galileo at BeiDou para pataasin ang accuracy at bilis ng positioning.
Ang GPS ay tanging satellite method ng pagtukoy ng coordinates. Ang mga serbisyo ng geolocation ay nagsasama ng GPS, Wi-Fi positioning at data ng cell tower para sa mas mabilis at energy-efficient na pagtukoy ng lokasyon, lalo na sa loob ng mga gusali.
Tawagan ang requestWhenInUseAuthorization() o requestAlwaysAuthorization() sa isang instance ng CLLocationManager. Idagdag dati ang NSLocationWhenInUseUsageDescription sa Info.plist na may malinaw na teksto ng dahilan ng paggamit ng geolocation.
Gamitin ang FusedLocationProviderClient sa Android at significant-change location service sa iOS. Taasan ang interval sa pagitan ng request sa 10-30 segundo, i-off ang updates kapag naka-off ang screen at mag-apply ng batch na pagpapadala ng coordinates sa server.
Oo, nang walang GPS ay maaaring matukoy ang tinatayang lokasyon sa pamamagitan ng Wi-Fi access points (accuracy 10-50 metro) o cell tower (accuracy 100-5000 metro). Sa Android, para dito ginagamit ang ACCESS_COARSE_LOCATION.
Buod
Gagawa kami ng mobile application na turnkey
Gumagawa ang IT Sectr ng mga iOS at Android application para sa mga startup at negosyo mula noong 2017. Magpapayo kami sa iyo at magmumungkahi ng pinakamahusay na solusyon.
Basahin din