Права доступу та приватність у мобільній розробці: що це, які механізми та як налаштувати

Автор: IT Sectr Опубліковано: 2026-05-17 Час читання: 11 хв

Права доступу та приватність — одна з найважливіших і найшвидше змінюваних областей мобільної розробки. За даними Apple Developer Guidelines (2025), з моменту впровадження ATT (App Tracking Transparency) у 2021 році, рівень згоди користувачів на відстеження становить близько 20%. Розглянемо моделі дозволів на iOS та Android, вимоги приватності (ATT, Privacy Manifest, GDPR) та практичні поради щодо їх реалізації.

Головне

  • Runtime Permission — запит дозволу під час роботи застосунку (Android 6.0+, iOS 8.0+). Користувач може відмовити або надати доступ.
  • Android: Normal Permission (автоматично), Dangerous Permission (вимагає runtime-запиту). Permission Group об'єднує пов'язані дозволи.
  • iOS: ATT (App Tracking Transparency) — запит на відстеження IDFA. Privacy Manifest — опис типів зібраних даних. Info.plist Usage Description — опис мети використання кожного дозволу.
  • GDPR (Загальний регламент захисту даних) — європейський регламент захисту даних. Вимагає явної згоди користувача на збір персональних даних.
  • IDFA (iOS) та GAID/AAID (Android) — рекламні ідентифікатори, що використовуються для таргетингу та атрибуції. Для доступу до IDFA потрібен ATT.

Моделі дозволів на iOS та Android

Моделі дозволів на iOS та Android мають спільну ідею: користувач повинен дати згоду на доступ до чутливих даних (камера, мікрофон, геолокація, контакти). Однак реалізація суттєво відрізняється. Android запитує дозволи в момент використання (runtime), iOS вимагає опису мети в Info.plist і запитує при першому зверненні. Правильна реалізація прав доступу в мобільному застосунку — основа безпеки та довіри.

До Android 6.0 (API 23) всі дозволи запитувалися при встановленні — користувач або приймав усі, або не встановлював застосунок. З Android 6.0 з'явилися Runtime Permissions: застосунок запитує дозвіл у момент першої необхідності, а користувач може відмовити. iOS використовує аналогічний підхід з iOS 8.0. Знання еволюції прав доступу в мобільній розробці допомагає проектувати зрозумілий UX.

В IT Sectr ми дотримуємося принципу «мінімальних дозволів»: запитуємо лише те, що дійсно потрібно, і лише в момент, коли це необхідно. Це підвищує довіру користувачів: за даними Google (2025), застосунки, що запитують більше 5 дозволів при першому запуску, мають на 30% нижчу конверсію в реєстрацію. Ця модель прав доступу в мобільних застосунках підтверджується нашою практикою.

Параметр iOS Android
МеханізмЗапит при першому зверненні до ресурсуЗапит при першому зверненні (Runtime Permission)
Опис метиInfo.plist (Privacy — Usage Description)shouldShowRequestPermissionRationale (опціонально)
Відкликання дозволуНалаштування → ПриватністьНалаштування → Застосунки → Дозволи
ГрупуванняНемає (кожен дозвіл окремо)Permission Groups (наприклад, STORAGE)
Рекламний IDIDFA (вимагає ATT)GAID / AAID (Google Play Services)
ПриватністьPrivacy Manifest (з 2024)Data Safety Section (Google Play)

Таблиця 4. Порівняння моделей дозволів iOS та Android. Головна відмінність: iOS вимагає явного текстового опису мети використання кожного дозволу в Info.plist. Android пропонує shouldShowRequestPermissionRationale для пояснення користувачеві, навіщо потрібен дозвіл. Розуміння відмінностей у правах доступу між платформами допомагає вибрати правильну модель.

Типи дозволів (Normal, Dangerous, Runtime)

Normal Permissions — дозволи, які не становлять загрози для приватності користувача. Вони надаються автоматично при встановленні: INTERNET, ACCESS_NETWORK_STATE, VIBRATE, BLUETOOTH. Розробнику не потрібно запитувати їх у коді. Ця класифікація прав доступу відповідає рівню ризику для приватності.

Dangerous Permissions — дозволи, що вимагають доступу до особистих даних: CAMERA, RECORD_AUDIO, ACCESS_FINE_LOCATION, READ_CONTACTS, READ_CALENDAR, READ_EXTERNAL_STORAGE. Вони вимагають runtime-запиту. Permission Group — група пов'язаних дозволів: якщо користувач дозволив CAMERA, дозвіл на запис відео (RECORD_AUDIO? ні, це окрема група) — ні, CAMERA та RECORD_AUDIO в різних групах.

Runtime Permission — це виклик ActivityCompat.requestPermissions() на Android або запит через CLLocationManager.requestWhenInUseAuthorization() на iOS. Користувач може відповісти: Grant (дозволити), Deny (заборонити) або «Більше не питати» (на Android після двох відмов). Налаштування прав доступу в мобільному застосунку вимагає врахування поведінки користувача.

Runtime Permission

Runtime Permission на Android вимагає перевірки поточного статусу перед кожним використанням. Метод shouldShowRequestPermissionRationale() повертає true, якщо користувач уже відмовив — це сигнал показати діалог з поясненням. На iOS аналог — перевірка статусу: .notDetermined, .denied, .authorized, .restricted. Приватність мобільного застосунку вимагає постійного моніторингу статусу дозволів.

kotlin
// Kotlin — запит runtime-дозволу на камеру
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("Для сканування QR-кодів потрібен доступ до камери")
            }
            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()
        }
    }
}

Цей код показує правильний патерн: перевірка статусу → показ пояснення (якщо потрібно) → запит дозволу → обробка результату. shouldShowRequestPermissionRationale — важливий метод: якщо користувач уже відмовив, покажіть діалог з поясненням, навіщо потрібен дозвіл. Без цього користувач може назавжди заборонити доступ.

Приватність (ATT, Privacy Manifest, IDFA)

ATT (App Tracking Transparency) — фреймворк Apple (iOS 14.5+), що вимагає явної згоди користувача на відстеження. Без згоди IDFA (Identifier for Advertisers) повертає нулі. За даними Flurry (2025), рівень згоди на ATT становить 15–25% залежно від регіону та типу застосунку. Управління правами доступу в мобільному застосунку починається з вибору правильного фреймворку.

Privacy Manifest — обов'язковий файл (з 2024 року для нових застосунків, з 2025 — для оновлень), в якому розробник декларує, які типи даних збирає застосунок та для яких цілей. Apple перевіряє відповідність Privacy Manifest реальній поведінці застосунку на рев'ю. Приватність у мобільному застосунку має бути задокументована.

App Tracking Transparency (ATT)

ATT вимагає додати Info.plist ключ NSUserTrackingUsageDescription з описом, навіщо потрібне відстеження, і викликати ATTrackingManager.requestTrackingAuthorization(). Важливо: чи варто запитувати ATT до показу GDPR-згоди? Ні, ATT — це окремий запит від Apple. В ЄС спочатку покажіть GDPR-банер, потім ATT. Права доступу в мобільному застосунку на iOS вимагають обов'язкового налаштування ATT.

IDFA використовується для рекламної атрибуції та персоналізації. На Android аналог — GAID (Google Advertising ID) або AAID (Amazon Advertising ID). З Android 13+ з'явилося runtime-дозвіл для доступу до GAID (com.google.android.gms.permission.AD_ID). Приватність мобільного застосунку вимагає контролю над рекламними ідентифікаторами.

GDPR та згода користувача

GDPR (Загальний регламент захисту даних) — регламент ЄС, що діє з травня 2018 року. Він вимагає: явної згоди на збір персональних даних, права на управління правами доступу, видалення даних (right to be forgotten), повідомлення про витоки даних та призначення DPO (Data Protection Officer) для великих компаній. Регламент також визначає прозору модель прав доступу в мобільних застосунках.

Для мобільних застосунків GDPR означає: показ банера згоди при першому запуску (з чітким описом, які дані збираються та для яких цілей), можливість відмовитися від необов'язкових дозволів, кнопка «Видалити обліковий запис» у налаштуваннях. Популярні інструменти для GDPR: OneTrust, Consent Management Platform (CMP) від Google, Usercentrics. Забезпечення приватності в мобільному застосунку вимагає інтеграції CMP.

В IT Sectr ми впроваджуємо GDPR-згоду на етапі онбордингу: користувач бачить зрозумілий опис, вибирає, які дані дозволяє збирати, і може змінити вибір у налаштуваннях. Це не лише юридична вимога, але й фактор довіри: прозорі застосунки мають на 20% вищий retention (дані IT Sectr, 2024). Приватність мобільного застосунку та управління правами доступу — ключові фактори утримання користувачів.

Згода повинна бути: добровільною (ні — означає ні), конкретною (не можна зібрати згоду «на все»), інформованою (користувач знає, на що погоджується) та однозначною (потрібна активна дія — галочка, кнопка). Попередньо встановлені галочки (pre-ticked consent) заборонені GDPR. Штрафи за порушення — до 4% глобального обороту або 20 млн євро. Правильне налаштування прав доступу в мобільному застосунку допомагає уникнути штрафів.

Практичні поради

На основі досвіду IT Sectr — кілька практичних рекомендацій щодо роботи з дозволами та приватністю. Запитуйте дозволи в контексті: покажіть екран, який пояснює, навіщо потрібен дозвіл, перед системним діалогом. Наприклад, перед запитом камери покажіть: «Для сканування QR-коду нам потрібен доступ до камери» — це підвищує ймовірність згоди на 40%. Права доступу в мобільних застосунках мають запитуватися в контексті використання.

Не запитуйте всі дозволи при першому запуску. Contextual permission request (запит у момент використання) дає на 60% вищу конверсію, ніж запит при онбордингу. Обробляйте відмову gracefully: якщо користувач відмовив, не блокуйте функціональність, а запропонуйте альтернативу (наприклад, ручне введення адреси замість геолокації). Приватність у мобільному застосунку виграє від такого підходу.

Для iOS обов'язково додайте Privacy Manifest (з 2025 — обов'язково для всіх застосунків). Для Android вкажіть Data Safety Section у Google Play Console. Зберігайте статус усіх дозволів локально та синхронізуйте з налаштуваннями системи. Регулярно перевіряйте відповідність вимогам — законодавство змінюється швидко. Модель прав доступу та приватність мобільного застосунку вимагають постійного аудиту.

Часті запитання

Що таке ATT (App Tracking Transparency)?

ATT — фреймворк Apple (iOS 14.5+), що вимагає явного запиту на відстеження користувача. Без згоди IDFA повертає нулі. Запит ATT повинен містити зрозумілий опис мети відстеження. Рівень згоди — 15–25% залежно від застосунку. Права доступу в мобільному застосунку на iOS вимагають зрозумілого опису мети відстеження.

У чому різниця між Normal та Dangerous Permission на Android?

Normal Permissions надаються автоматично при встановленні — не вимагають запиту (INTERNET, VIBRATE). Dangerous Permissions вимагають runtime-запиту (CAMERA, LOCATION, MICROPHONE) — користувач може відмовити в будь-який момент. Normal не впливає на приватність, Dangerous — доступ до особистих даних.

Як GDPR впливає на мобільні застосунки?

GDPR вимагає: явної згоди на збір даних, можливості видалити обліковий запис і дані, повідомлення про витоки. Для застосунків потрібно: банер згоди при першому запуску, чіткий опис цілей збору даних, кнопка «Видалити обліковий запис» у налаштуваннях, включаючи управління правами доступу. Штраф — до 4% обороту.

Що таке IDFA та навіщо він потрібен?

IDFA (Identifier for Advertisers) — унікальний рекламний ідентифікатор пристрою на iOS. Використовується для таргетингу реклами та атрибуції встановлень. З iOS 14.5 для доступу до IDFA потрібно отримати згоду через ATT. На Android аналог — GAID (Google Advertising ID). Приватність мобільного застосунку вимагає контролю над рекламними ідентифікаторами.

Підсумки

  • Runtime Permission — сучасна модель запиту дозволів «у момент використання», а не при встановленні. Підвищує довіру користувачів.
  • Android: Normal (автоматичні) та Dangerous (runtime) дозволи. Permission Groups для групування. shouldShowRequestPermissionRationale для пояснення.
  • iOS: ATT (App Tracking Transparency) для IDFA. Privacy Manifest (обов'язковий з 2025). Usage Description в Info.plist для кожного дозволу.
  • GDPR — європейський регламент: явна згода, право на видалення, прозорість. Штрафи до 4% обороту. Інструменти: OneTrust, Google CMP.
  • IDFA (iOS) та GAID/AAID (Android) — рекламні ідентифікатори. Для IDFA потрібен ATT (рівень згоди 15–25%).
  • Найкращі практики: контекстні запити (на 60% вища конверсія), graceful handling відмови, Privacy Manifest, регулярний аудит відповідності.
  • Права доступу в мобільному застосунку та приватність — основа довіри користувачів. Прозорі застосунки мають retention на 20% вищий (дані IT Sectr, 2024).

Ми розробимо мобільний застосунок під ключ

IT Sectr створює застосунки для iOS та Android для стартапів і бізнесу з 2017 року. Ми проконсультуємо вас і запропонуємо найкраще рішення.

Обговорити проект