В чём разница в отзыве разрешений между iOS и Android?

«В чём разница в отзыве разрешений между iOS и Android?» — вопрос из категории Мобильное тестирование, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Основное отличие заключается в гибкости управления и поведении системы после отзыва.

iOS:

  • Управление осуществляется в системных настройках приложения (Настройки > [Имя приложения]).
  • Пользователь может отключить доступ к камере, микрофону, геолокации, контактам и т.д.
  • После отзыва приложение при следующем обращении к функциональности может запросить разрешение снова.

Android:

  • Разрешения делятся на обычные (normal) и опасные (dangerous). Отзыв в основном касается опасных разрешений.
  • Отозвать можно в Настройки > Приложения > [Имя приложения] > Разрешения.
  • Начиная с Android 11 (API 30) появились однократные разрешения (для текущей сессии использования приложения).
  • После отзыва опасного разрешения система может автоматически сбрасывать однократные разрешения для связанных функций.

Пример проверки разрешения на Android (Kotlin):

if (ContextCompat.checkSelfPermission(
        this,
        Manifest.permission.CAMERA
    ) != PackageManager.PERMISSION_GRANTED
) {
    // Разрешение не предоставлено, нужно запросить
    ActivityCompat.requestPermissions(
        this,
        arrayOf(Manifest.permission.CAMERA),
        REQUEST_CODE_CAMERA
    )
}

Ключевое отличие: На iOS отзыв разрешения — это временное ограничение, которое приложение может попытаться обойти через новый запрос. На Android система предоставляет более детальный контроль, включая одноразовый доступ, и приложение не может запросить опасное разрешение повторно, если пользователь выбрал "Запретить и больше не спрашивать".