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

Ответ

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

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 система предоставляет более детальный контроль, включая одноразовый доступ, и приложение не может запросить опасное разрешение повторно, если пользователь выбрал "Запретить и больше не спрашивать".

Ответ 18+ 🔞

А, слушай, вот это тема, про которую можно дохуя пиздеца наговорить! Разница между айосом и андроидом в отзыве разрешений — это просто ёперный театр, два разных мира, блядь.

Смотри, как у яблочников устроено. Заходишь ты в «Настройки», находишь там своё приложение, и там тебе, сука, как на блюдечке: камера, микрофон, геолокация, контакты... Всё по полочкам, красиво, блядь. Выключил — и приложение охренело. Но тут, понимаешь, в чём пиздец? Оно же не сдаётся, падла! В следующий раз, как полезешь в него что-то делать, оно тебе снова эту ебучую модалку сунет: «Разрешите доступ к камере?». Наглость, блядь, беспринципная! То есть отозвал ты — это типа «нет, но давай позже». Хитрая жопа, одним словом.

А теперь смотри на андроид. Тут уже посерьёзнее, блядь. Разрешения делятся на «обычные» (ну, там интернет, вибрация — похуй) и «опасные». Вот эти «опасные» — это уже наш случай, камера, микро, локация. Отзываешь ты их — и приложение нихуя не может, сидит и рыдает. Залезть в настройки приложения — это уже квест, блядь, но зато контроль полный. А с Андроида 11 вообще ввели прикол — «однократные разрешения». Дал доступ на одну сессию, закрыл приложение — всё, блядь, сбросилось, как будто и не было. Красота! И система, сука, умная стала: отозвал ты, например, доступ к камере — она автоматом может и связанные с ней одноразовые разрешения похерить. Нехуй, мол, хитрить.

И вот, блядь, самый сок. На айосе отозвал — приложение может снова попросить, надоедать, как мартышлюшка. А на андроиде, если пользователь такой злобный и ткнул «Запретить и больше не спрашивать» — это приговор, блядь! Приложение может хоть обоссаться, но запросить это разрешение снова оно уже не имеет права. Всё, пиздец, накрылось медным тазом. Надо уже пользователя в настройки системы отправлять ползать, унижаться.

Ну и код, конечно, чтобы не быть голословным. Смотри, как на андроиде проверяют, не обосралось ли что:

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

Вот так вот, коротко и ясно: «Есть доступ? Нет? Ну, сука, просим, тогда».

Короче, вывод, блядь. Айос — это как хитрая баба: «Нет» сегодня не значит «нет» завтра. Андроид — это как строгий отец: сказал «нет и не приставай» — значит, иди нахуй, пока сам не передумаешь в глубинах настроек. Волнение ебать, где справедливость?