Location Permission sa mobile development: ano ito, mga antas ng access at prinsipyo ng trabaho

May-akda: IT Sectr Nai-publish: 2026-05-21 Oras ng pagbabasa: 8 min

Location Permission ay ang pahintulot na hinihiling ng isang mobile application mula sa user upang ma-access ang data tungkol sa kanyang heograpikal na lokasyon. Kung wala ang pahintulot na ito, hindi matutukoy ng application ang mga coordinate ng device, at samakatuwid ay hindi makapagbibigay ng mga function ng geolocation. Ayon sa Apple Developer Documentation, 2024, lahat ng application na gumagamit ng mga serbisyo ng lokasyon ay kinakailangang humingi ng malinaw na pahintulot ng user sa pamamagitan ng system dialog.

Mga Pangunahing Punto

  • Location Permission — sapilitang pahintulot para ma-access ang geolocation ng device sa mga mobile application.
  • Mga antas ng access ay nahahati sa background at habang ginagamit ang application sa parehong platform.
  • Android ay gumagamit ng ACCESS_FINE_LOCATION at ACCESS_COARSE_LOCATION para sa tumpak at tinatayang pagtukoy ng mga coordinate.
  • iOS ay nangangailangan ng pagdaragdag ng mga key na NSLocationWhenInUseUsageDescription at NSLocationAlwaysUsageDescription sa Info.plist.
  • Paghiling ng pahintulot ay dapat maglaman ng malinaw na paliwanag kung bakit kailangan ng application ang data ng lokasyon.

Ano ang Location Permission?

Location Permission ay isang mekanismo ng operating system na kumokontrol sa access ng mga application sa data tungkol sa heograpikal na lokasyon ng device. Kung wala ang malinaw na pahintulot ng user, hindi makukuha ng application ang mga GPS coordinate, data ng Wi-Fi network, o impormasyon tungkol sa mga cell tower.

Ang mga mobile platform na Android at iOS ay nagpapatupad ng kanilang sariling sistema ng pahintulot, ngunit ang pangkalahatang lohika ay pareho: ang application ay nagdedeklara ng mga kinakailangang pahintulot sa manifest o configuration file, pagkatapos ay hinihingi ang mga ito sa runtime. Ayon sa Android Developers, 2024, simula sa Android 10 lahat ng pahintulot ng geolocation ay nabibilang sa mapanganib na kategorya at nangangailangan ng runtime request.

Ang dahilan ng ganitong approach ay ang proteksyon ng privacy ng mga user. Ang data ng lokasyon ay nagpapahintulot sa pagbuo ng mga ruta ng paglalakbay, pagtukoy ng mga lugar ng trabaho at pahinga, pati na rin ang pagkilala ng pagkatao. Samakatuwid, ang parehong platform ay nangangailangan ng transparent na paliwanag sa dialog ng paghiling: dapat sabihin ng application ang dahilan kung bakit kailangan nito ng access sa geolocation.

Bakit kailangan ang pahintulot ng geolocation

Pahintulot ng geolocation ay kinakailangan para sa anumang application na ang functionality ay nakadepende sa kaalaman ng pisikal na lokasyon ng user. Mga mapa at nabigasyon, mga application ng paghahatid, mga serbisyo ng panahon, mga social network na may geotagging — lahat ng kategoryang ito ng software ay nangangailangan ng Location Permission.

Kung wala ang pahintulot na ito, hindi matutukoy ng application ang mga coordinate ng device sa anumang available na paraan: hindi sa pamamagitan ng GPS module, hindi sa pamamagitan ng Wi-Fi scanning, hindi sa pamamagitan ng pagtukoy ng lokasyon batay sa mga cell tower. Maaaring bawiin ng user anumang oras ang pahintulot sa mga setting ng system, pagkatapos nito dapat na tamang hawakan ng application ang pagtanggi.

Ayon sa pananaliksik ng Pew Research Center (2024), humigit-kumulang 45% ng mga user ang bumabawi ng access sa geolocation sa mga application na hindi ito ginagamit para sa pangunahing functionality. Ito ay nangangahulugan na ang developer ay dapat malinaw na magbigay-katwiran sa paghiling at mag-alok ng mga alternatibong mekanismo para sa mga tumanggi sa Location Permission.

Mga legal na kinakailangan

Ang GDPR sa Europa at batas 152-FZ sa Russia ay nangangailangan ng pagkuha ng informed consent para sa pagproseso ng data ng lokasyon. Ang application ay hindi lamang dapat humingi ng pahintulot sa pamamagitan ng system dialog, kundi magbigay din ng hiwalay na abiso tungkol sa mga layunin ng pangongolekta ng data. Ang paglabag sa mga kinakailangang ito ay nagreresulta sa mga multa hanggang 20 milyong euro o 4% ng taunang kita ng kumpanya.

Mga kahihinatnan ng kawalan ng pahintulot

Kung ang application ay hindi humihingi ng Location Permission o ang user ay tumanggi sa access, ang developer ay dapat magbigay ng backup scenario. Para sa isang mapping application, ito ay maaaring manual na pag-input ng address, para sa isang delivery application — pagpili mula sa listahan ng mga naka-save na address, para sa isang serbisyo ng panahon — pagtukoy ng lungsod batay sa IP address. Graceful degradation (maayos na pagbaba) ay isang standard practice na inirerekomenda ng Google at Apple.

Mga antas ng access sa geolocation

Mga antas ng access sa geolocation ay nagkakaiba sa Android at iOS, bagaman ang pangkalahatang ideya ay pareho: kung mas tumpak ang access, mas mahigpit na mga kinakailangan ang ipinapataw ng platform sa application.

Antas ng accessAndroidiOS
Habang ginagamitKapag aktibo lang ang applicationWhen In Use — sa application lang
BackgroundAlways — palagi, kahit sa backgroundAlways — nangangailangan ng karagdagang pagsusuri ng App Store
TinatayangACCESS_COARSE_LOCATION (katumpakan hanggang 500 m)Gamit ang opsyong Precision = Off (iOS 14+)

ACCESS_FINE_LOCATION at ACCESS_COARSE_LOCATION sa Android

ACCESS_FINE_LOCATION ay nagbibigay ng access sa tumpak na GPS coordinates na may error na ilang metro. Para sa pagdedeklara ng pahintulot na ito sa manifest, ginagamit ang constant na android.permission.ACCESS_FINE_LOCATION. ACCESS_COARSE_LOCATION naman ay nagbibigay ng tinatayang lokasyon na may katumpakan hanggang 500 metro batay sa Wi-Fi at mga cell tower.

When In Use at Always sa iOS

When In Use (habang ginagamit) ay nagpapahintulot sa application na makakuha ng coordinates lamang kapag ito ay nakabukas sa screen. Always (palagi) ay nagbibigay ng access sa geolocation kahit sa background mode, ngunit nangangailangan ng mandatoryong pagsusuri sa App Store. Simula sa iOS 14, maaaring hiwalay na patayin ng user ang tumpak na positioning para sa bawat application sa pamamagitan ng switch na Precision.

Paghiling ng Location Permission sa Android

Paghiling ng Location Permission sa Android ay ginagawa sa dalawang yugto: deklarasyon ng mga pahintulot sa manifest at runtime request sa code. Simula sa Android 6.0 (API 23), lahat ng mapanganib na pahintulot ay hinihiling habang tumatakbo ang application, hindi sa pag-install.

Deklarasyon sa manifest

Ang unang hakbang ay idagdag ang mga kinakailangang pahintulot sa file na AndroidManifest.xml. Para sa tumpak at tinatayang positioning, ginagamit ang iba't ibang constant.

xml
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />

Runtime request sa Kotlin

Pagkatapos ng deklarasyon sa manifest, dapat tawagan ang system dialog ng paghiling ng pahintulot sa code ng application. Tingnan natin ang isang halimbawa sa Kotlin gamit ang Activity Result API.

kotlin
private val locationPermissionRequest =
    registerForActivityResult(ActivityResultContracts.RequestMultiplePermissions()) { permissions ->
    when {
        permissions.getOrDefault(Manifest.permission.ACCESS_FINE_LOCATION, false) -> {
            // Nakuha ang pahintulot
            getLocation()
        }
        permissions.getOrDefault(Manifest.permission.ACCESS_COARSE_LOCATION, false) -> {
            // Tinatayang lokasyon lamang
            getCoarseLocation()
        }
        else -> {
            // Tumanggi ang user
            showLocationExplanation()
        }
    }
}

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)
    checkLocationPermission()
}

Paghawak ng pagtanggi at paulit-ulit na paghiling

Kung ang user ay tumanggi sa access, ang Android system ay hindi pinapayagan na awtomatikong muling ipakita ang dialog. Dapat tawagan ng developer ang shouldShowRequestPermissionRationale para magpakita ng paunang paliwanag. Sa paulit-ulit na pagtanggi gamit ang flag na Never Ask Again, dapat i-redirect ang user sa mga setting ng system.

kotlin
private fun checkLocationPermission() {
    when {
        ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) ==
            PackageManager.PERMISSION_GRANTED -> {
            getLocation()
        }
        ActivityCompat.shouldShowRequestPermissionRationale(this,
            Manifest.permission.ACCESS_FINE_LOCATION) -> {
            showRationaleDialog {
                requestLocationPermission()
            }
        }
        else -> {
            openAppSettings()
        }
    }
}

Paghiling ng Location Permission sa iOS

Paghiling ng Location Permission sa iOS ay nangangailangan ng pagdaragdag ng mga espesyal na key sa file na Info.plist at pagtawag sa pamamaraan ng klase na CLLocationManager. Ang Apple ay nagbibigay ng espesyal na atensyon sa privacy, kaya ang teksto ng paliwanag sa dialog ng paghiling ay dapat na tiyak hangga't maaari.

Configuration ng Info.plist

Para humiling ng lokasyon sa iOS, kailangan magdagdag ng isa o parehong key sa Info.plist: NSLocationWhenInUseUsageDescription para sa access habang ginagamit at NSLocationAlwaysAndWhenInUseUsageDescription para sa background access. Ang halaga ng bawat key ay isang string na ipapakita sa user sa dialog.

xml
<key>NSLocationWhenInUseUsageDescription</key>
<string>Kailangan ng application ang iyong lokasyon upang ipakita ang mga pinakamalapit na punto sa mapa.</string>
<key>NSLocationAlwaysAndWhenInUseUsageDescription</key>
<string>Kailangan ng application ng access sa geolocation sa background upang subaybayan ang ruta.</string>

Paghiling sa Swift

Sa Swift code, ang paghiling ay ginagawa sa pamamagitan ng isang instance ng CLLocationManager. Depende sa kinakailangang antas ng access, tinatawag ang requestWhenInUseAuthorization o requestAlwaysAuthorization.

swift
import CoreLocation

class LocationManager: NSObject, CLLocationManagerDelegate {
    private let manager = CLLocationManager()

    func requestLocationAccess() {
        manager.delegate = self
        manager.requestWhenInUseAuthorization()
    }

    func locationManagerDidChangeAuthorization(_ manager: CLLocationManager) {
        switch manager.authorizationStatus {
        case .authorizedWhenInUse, .authorizedAlways:
            startLocationUpdates()
        case .denied, .restricted:
            showSettingsAlert()
        case .notDetermined:
            break
        }
    }
}

Pagkakaiba sa pagitan ng mga platform

Hindi tulad ng Android, ang iOS ay hindi nagbibigay sa developer ng paraan upang suriin ang shouldShowRequestPermissionRationale. Ang system mismo ang nagpapasya kung kailan ipapakita ang paliwanag. Bukod dito, sa iOS ang user ay maaari lamang magbago ng pahintulot sa pamamagitan ng mga setting ng system — hindi maaaring tawagan muli ng application ang system dialog pagkatapos gumawa ng pagpili ang user. RequestAlwaysAuthorization ay unang humihingi ng When In Use, pagkatapos, pagkatapos makuha ang unang pahintulot, isang hiwalay na dialog para sa background access.

Mga pinakamahusay na kasanayan sa pagtatrabaho sa geolocation

Mga pinakamahusay na kasanayan sa pagtatrabaho sa Location Permission ay tumutulong na bawasan ang mga pagtanggi ng user at matugunan ang mga kinakailangan ng mga app store. Ang Google at Apple ay nag-publish ng mga rekomendasyon na ang pagsunod ay nagpapataas ng posibilidad ng pag-apruba ng application.

Humingi ng pahintulot sa konteksto

Huwag ipakita ang dialog ng paghiling ng Location Permission kaagad sa paglunsad ng application. Ang user na kakabukas pa lang ng application ay hindi pa nauunawaan kung bakit kailangan niyang magbigay ng access sa geolocation. Contextual request ay nangangahulugan na ang dialog ay lilitaw sa sandaling ang user ay talagang nangangailangan ng function na nangangailangan ng pahintulot. Halimbawa, kapag pinindot ang button na “Hanapin ang pinakamalapit na tindahan”.

Ipaliwanag ang dahilan nang maaga

Bago ang system dialog, ipakita ang iyong sariling screen ng paliwanag (pre-permission screen). Dito, sabihin kung bakit kailangan ng application ang geolocation, anong data ang kinokolekta at kung paano ito gagamitin. Pagkatapos mag-click ang user ng “Pahintulutan” sa iyong screen, ipakita ang system dialog. Ayon sa data ng Appsflyer (2024), ang approach na ito ay nagpapataas ng conversion ng pahintulot ng 25-35%.

Huwag humingi ng Always nang hindi kinakailangan

Ang background access sa geolocation ay kailangan lamang para sa mga application na gumagana sa background: navigator, activity tracker, delivery application. Kung ang iyong application ay nangangailangan lamang ng coordinates kapag ang screen ay bukas, humingi ng When In Use. Tatanggihan ng App Store ang application kung ang Always ay hindi functional na makatwiran. Sa Android, ang background access ay karagdagang kinokontrol sa pamamagitan ng pahintulot na ACCESS_BACKGROUND_LOCATION.

Mga Madalas Itanong

Ano ang mangyayari kung tumanggi ang user sa Location Permission?

Dapat tamang hawakan ng application ang pagtanggi at mag-alok ng alternatibong scenario. Halimbawa, manual na pag-input ng address o pagtukoy ng lungsod batay sa IP address. Ang system dialog ay hindi muling ipinapakita — dapat i-redirect ang user sa mga setting.

Maaari bang humingi ng Location Permission nang walang paliwanag?

Sa teknikal na paraan oo, ang system dialog ay maaaring tawagan nang walang paunang screen. Gayunpaman, ang conversion ng pahintulot nang walang paliwanag ay 30-40%, habang may paunang screen ito ay 60-75%. Inirerekomenda ng Apple at Google na laging ipaliwanag ang dahilan ng paghiling.

Paano suriin ang status ng Location Permission sa Android?

Gamitin ang ContextCompat.checkSelfPermission gamit ang constant na Manifest.permission.ACCESS_FINE_LOCATION. Ang pamamaraan ay nagbabalik ng PERMISSION_GRANTED o PERMISSION_DENIED, na nagpapahintulot sa pagtukoy ng kasalukuyang status nang hindi tinatawag ang system dialog.

Ano ang pagkakaiba ng ACCESS_FINE_LOCATION at ACCESS_COARSE_LOCATION?

ACCESS_FINE_LOCATION ay nagbibigay ng access sa tumpak na GPS coordinates na may error na 3-10 metro. ACCESS_COARSE_LOCATION ay nagbibigay ng tinatayang lokasyon na may katumpakan hanggang 500 metro batay sa Wi-Fi at mga cell tower. Sa Android 12+, ang developer ay maaaring humingi ng parehong pahintulot nang sabay-sabay.

Kailangan ba ang Location Permission para sa mga BLE scanner?

Sa Android, para sa pag-scan ng mga BLE device ay kinakailangan ang ACCESS_FINE_LOCATION o ACCESS_COARSE_LOCATION, dahil ang mga signal ng BLE ay maaaring gamitin para sa triangulation ng posisyon. Sa iOS para sa BLE, sapat na ang Bluetooth pahintulot, hindi kailangan ang Location Permission.

Buod

  • Location Permission — pangunahing mekanismo ng proteksyon ng privacy na kumokontrol sa access ng mga application sa geolocation ng device.
  • Mga antas ng access ay kinabibilangan ng habang ginagamit (When In Use) at background (Always) sa iOS, pati na rin ang tumpak (ACCESS_FINE_LOCATION) at tinatayang (ACCESS_COARSE_LOCATION) sa Android.
  • Android ay nangangailangan ng deklarasyon ng mga pahintulot sa manifest at runtime request sa pamamagitan ng Activity Result API simula sa API 23.
  • iOS ay nangangailangan ng pagdaragdag ng mga key sa Info.plist at pagtawag ng mga pamamaraan ng CLLocationManager na may mandatoryong pagbanggit ng dahilan sa teksto ng paghiling.
  • Contextual request — pinakamahusay na kasanayan kung saan lumilitaw ang dialog sa sandali ng pangangailangan, hindi sa paglunsad ng application.
  • Pre-permission screen ay nagpapataas ng conversion ng pahintulot ng 25-35% ayon sa data ng Appsflyer (2024).
  • Pagtanggi ng user ay nangangailangan ng graceful degradation — alternatibong scenario nang hindi gumagamit ng geolocation.

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.

Pag-usapan ang proyekto

Basahin din