Přístupová oprávnění a soukromí — jedna z nejdůležitějších a nejrychleji se měnících oblastí mobilního vývoje. Podle Apple Developer Guidelines (2025) je od zavedení ATT (App Tracking Transparency) v roce 2021 míra souhlasu uživatelů se sledováním přibližně 20%. Pojďme prozkoumat modely oprávnění na iOS a Android, požadavky na ochranu soukromí (ATT, Privacy Manifest, GDPR) a praktické tipy pro jejich implementaci.
Hlavní body
Modely oprávnění na iOS a Android sdílejí společnou myšlenku: uživatel musí souhlasit s přístupem k citlivým údajům (kamera, mikrofon, geolokace, kontakty). Implementace se však výrazně liší. Android žádá o oprávnění v okamžiku použití (runtime), iOS vyžaduje popis účelu v Info.plist a žádá při prvním přístupu. Správná implementace přístupových oprávnění v mobilní aplikaci je základem bezpečnosti a důvěry.
Před Androidem 6.0 (API 23) byla všechna oprávnění vyžadována při instalaci — uživatel buď všechna přijal, nebo aplikaci nenainstaloval. S Androidem 6.0 byla zavedena Runtime Permissions: aplikace žádá o oprávnění v okamžiku první potřeby a uživatel může odmítnout. iOS používá podobný přístup od iOS 8.0. Pochopení vývoje přístupových oprávnění v mobilním vývoji pomáhá navrhovat intuitivní UX.
V IT Sectr se řídíme principem «minimálních oprávnění»: žádáme pouze o to, co je skutečně potřeba, a pouze tehdy, když je to nutné. To zvyšuje důvěru uživatelů: podle Google (2025) mají aplikace, které při prvním spuštění požadují více než 5 oprávnění, o 30% nižší míru konverze registrace. Tento model přístupových oprávnění v mobilních aplikacích potvrzuje naše praxe.
| Parametr | iOS | Android |
|---|---|---|
| Mechanismus | Žádost při prvním přístupu ke zdroji | Žádost při prvním přístupu (Runtime Permission) |
| Popis účelu | Info.plist (Privacy — Usage Description) | shouldShowRequestPermissionRationale (volitelné) |
| Odvolání oprávnění | Nastavení → Soukromí | Nastavení → Aplikace → Oprávnění |
| Sdružování | Ne (každé oprávnění zvlášť) | Permission Groups (např. STORAGE) |
| Reklamní ID | IDFA (vyžaduje ATT) | GAID / AAID (Google Play Services) |
| Soukromí | Privacy Manifest (od 2024) | Data Safety Section (Google Play) |
Tabulka 4. Srovnání modelů oprávnění iOS a Android. Hlavní rozdíl: iOS vyžaduje výslovný textový popis účelu použití každého oprávnění v Info.plist. Android nabízí shouldShowRequestPermissionRationale k vysvětlení uživateli, proč je oprávnění potřeba. Pochopení rozdílů v přístupových právech mezi platformami pomáhá vybrat správný model.
Normal Permissions — oprávnění, která nepředstavují hrozbu pro soukromí uživatele. Udělují se automaticky při instalaci: INTERNET, ACCESS_NETWORK_STATE, VIBRATE, BLUETOOTH. Vývojář je nemusí žádat v kódu. Tato klasifikace přístupových oprávnění odpovídá úrovni rizika pro soukromí.
Dangerous Permissions — oprávnění vyžadující přístup k osobním údajům: CAMERA, RECORD_AUDIO, ACCESS_FINE_LOCATION, READ_CONTACTS, READ_CALENDAR, READ_EXTERNAL_STORAGE. Vyžadují runtime žádost. Permission Group — skupina souvisejících oprávnění: pokud uživatel povolil CAMERA, oprávnění k nahrávání videa (RECORD_AUDIO? ne, to je samostatná skupina) — ne, CAMERA a RECORD_AUDIO jsou v různých skupinách.
Runtime Permission — volání ActivityCompat.requestPermissions() na Androidu nebo žádost přes CLLocationManager.requestWhenInUseAuthorization() na iOS. Uživatel může odpovědět: Grant (povolit), Deny (odmítnout) nebo «Neptat se znovu» (na Androidu po dvou odmítnutích). Konfigurace přístupových oprávnění v mobilní aplikaci vyžaduje zohlednění chování uživatele.
Runtime Permission na Androidu vyžaduje kontrolu aktuálního stavu před každým použitím. Metoda shouldShowRequestPermissionRationale() vrací true, pokud uživatel již odmítl — to je signál k zobrazení dialogu s vysvětlením. Na iOS je ekvivalentem kontrola stavu: .notDetermined, .denied, .authorized, .restricted. Soukromí mobilní aplikace vyžaduje neustálé monitorování stavu oprávnění.
// Kotlin — žádost o runtime oprávnění pro kameru
class CameraActivity : AppCompatActivity() {
companion object {
private const val CAMERA_PERMISSION_CODE = 100
}
private fun requestCameraPermission() {
when {
ContextCompat.checkSelfPermission(
this, Manifest.permission.CAMERA
) == PackageManager.PERMISSION_GRANTED -> {
openCamera()
}
shouldShowRequestPermissionRationale(Manifest.permission.CAMERA) -> {
showRationaleDialog("Pro skenování QR kódů je vyžadován přístup ke kameře")
}
else -> {
requestPermissions(
arrayOf(Manifest.permission.CAMERA),
CAMERA_PERMISSION_CODE
)
}
}
}
override fun onRequestPermissionsResult(
requestCode: Int,
permissions: Array<String>,
grantResults: IntArray
) {
if (requestCode == CAMERA_PERMISSION_CODE &&
grantResults.firstOrNull() == PackageManager.PERMISSION_GRANTED
) {
openCamera()
}
}
}
Tento kód ukazuje správný vzor: zkontroluj stav → zobraz vysvětlení (pokud je potřeba) → požádej o oprávnění → zpracuj výsledek. shouldShowRequestPermissionRationale je důležitá metoda: pokud uživatel již odmítl, zobrazte dialog vysvětlující, proč je oprávnění potřeba. Bez toho může uživatel trvale odmítnout přístup.
ATT (App Tracking Transparency) — framework Apple (iOS 14.5+), který vyžaduje výslovný souhlas uživatele se sledováním. Bez souhlasu vrací IDFA (Identifier for Advertisers) nuly. Podle Flurry (2025) je míra přijetí ATT 15–25% v závislosti na regionu a typu aplikace. Správa přístupových oprávnění v mobilní aplikaci začíná výběrem správného frameworku.
Privacy Manifest — povinný soubor (od 2024 pro nové aplikace, od 2025 pro aktualizace), ve kterém vývojář deklaruje, jaké typy dat aplikace shromažďuje a pro jaké účely. Apple během recenze kontroluje soulad Privacy Manifest se skutečným chováním aplikace. Soukromí v mobilní aplikaci musí být zdokumentováno.
ATT vyžaduje přidání klíče Info.plist NSUserTrackingUsageDescription s popisem, proč je sledování potřeba, a volání ATTrackingManager.requestTrackingAuthorization(). Důležité: máte žádat o ATT před zobrazením souhlasu GDPR? Ne, ATT je samostatná žádost Apple. V EU nejprve zobrazte banner GDPR, poté ATT. Přístupová oprávnění v mobilní aplikaci na iOS vyžadují povinnou konfiguraci ATT.
IDFA se používá pro reklamní atribuci a personalizaci. Na Androidu je ekvivalentem GAID (Google Advertising ID) nebo AAID (Amazon Advertising ID). Od Androidu 13+ existuje runtime oprávnění pro přístup k GAID (com.google.android.gms.permission.AD_ID). Soukromí mobilní aplikace vyžaduje kontrolu nad reklamními identifikátory.
GDPR (Obecné nařízení o ochraně osobních údajů) — nařízení EU platné od května 2018. Vyžaduje: výslovný souhlas se shromažďováním osobních údajů, právo na správu přístupových oprávnění, právo na výmaz údajů (právo být zapomenut), oznámení o porušení zabezpečení údajů a jmenování DPO (pověřence pro ochranu osobních údajů) pro velké společnosti. Nařízení také definuje transparentní model přístupových oprávnění v mobilních aplikacích.
Pro mobilní aplikace GDPR znamená: zobrazení banneru souhlasu při prvním spuštění (s jasným popisem, jaké údaje jsou shromažďovány a pro jaké účely), možnost odmítnout nepovinná oprávnění a tlačítko «Smazat účet» v nastavení. Populární nástroje GDPR: OneTrust, platforma pro správu souhlasu (CMP) od Googlu, Usercentrics. Zajištění soukromí v mobilní aplikaci vyžaduje integraci CMP.
V IT Sectr implementujeme souhlas GDPR během onboardingu: uživatel vidí jasný popis, vybírá, která data může shromažďovat, a může svou volbu změnit v nastavení. To není jen právní požadavek, ale také faktor důvěry: transparentní aplikace mají o 20% vyšší retenci (data IT Sectr, 2024). Soukromí mobilní aplikace a správa přístupových oprávnění jsou klíčovými faktory udržení uživatelů.
Souhlas musí být: dobrovolný (ne znamená ne), konkrétní (nelze shromažďovat souhlas «pro všechno»), informovaný (uživatel ví, k čemu dává souhlas) a jednoznačný (vyžaduje se aktivní akce — zaškrtávací políčko, tlačítko). Předem zaškrtnutá políčka jsou GDPR zakázána. Pokuty za porušení — až 4% globálního obratu nebo 20 milionů eur. Správná konfigurace přístupových oprávnění v mobilní aplikaci pomáhá vyhnout se pokutám.
Na základě zkušeností IT Sectr — několik praktických doporučení pro práci s oprávněními a soukromím. Žádejte o oprávnění v kontextu: zobrazte obrazovku, která vysvětluje, proč je oprávnění potřeba, před systémovým dialogem. Například před žádostí o kameru zobrazte: «Potřebujeme přístup ke kameře pro skenování QR kódů» — to zvyšuje pravděpodobnost souhlasu o 40%. Přístupová oprávnění v mobilních aplikacích by měla být vyžadována v kontextu použití.
Nežádejte o všechna oprávnění při prvním spuštění. Kontextová žádost o oprávnění (žádost v okamžiku použití) poskytuje o 60% vyšší konverzi než žádost během onboardingu. Odmítnutí zpracujte s grácií: pokud uživatel odmítne, neblokujte funkčnost, ale nabídněte alternativu (např. ruční zadání adresy místo geolokace). Soukromí v mobilní aplikaci z tohoto přístupu těží.
Pro iOS nezapomeňte přidat Privacy Manifest (od 2025 povinný pro všechny aplikace). Pro Android uveďte sekci bezpečnosti údajů v Google Play Console. Ukládejte stav všech oprávnění lokálně a synchronizujte s nastavením systému. Pravidelně kontrolujte shodu — legislativa se rychle mění. Model přístupových oprávnění a soukromí mobilní aplikace vyžaduje neustálý audit.
Často kladené otázky
ATT je framework Apple (iOS 14.5+), který vyžaduje výslovnou žádost o sledování uživatele. Bez souhlasu vrací IDFA nuly. Žádost ATT musí obsahovat jasný popis účelu sledování. Míra přijetí je 15–25% v závislosti na aplikaci. Přístupová oprávnění v mobilní aplikaci na iOS vyžadují jasný popis účelu sledování.
Normal Permissions se udělují automaticky při instalaci — není vyžadována žádost (INTERNET, VIBRATE). Dangerous Permissions vyžadují runtime žádost (CAMERA, LOCATION, MICROPHONE) — uživatel může kdykoli odmítnout. Normal neovlivňuje soukromí; Dangerous poskytuje přístup k osobním údajům.
GDPR vyžaduje: výslovný souhlas se shromažďováním údajů, možnost smazat účet a údaje, oznámení o narušení. Pro aplikace: banner souhlasu při prvním spuštění, jasný popis účelů shromažďování údajů, tlačítko «Smazat účet» v nastavení, včetně správy přístupových oprávnění. Pokuta — až 4% obratu.
IDFA (Identifier for Advertisers) je jedinečný reklamní identifikátor zařízení na iOS. Používá se pro cílení reklam a atribuci instalací. Od iOS 14.5 je pro přístup k IDFA vyžadován souhlas prostřednictvím ATT. Na Androidu je ekvivalentem GAID (Google Advertising ID). Soukromí mobilní aplikace vyžaduje kontrolu nad reklamními identifikátory.
Shrnutí
Vyvineme mobilní aplikaci na klíč
IT Sectr vytváří aplikace pro iOS a Android pro startupy a podniky od roku 2017. Poradíme vám a navrhneme nejlepší řešení.