Ответ
Основное отличие заключается в гибкости управления и поведении системы после отзыва.
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
)
}
Вот так вот, коротко и ясно: «Есть доступ? Нет? Ну, сука, просим, тогда».
Короче, вывод, блядь. Айос — это как хитрая баба: «Нет» сегодня не значит «нет» завтра. Андроид — это как строгий отец: сказал «нет и не приставай» — значит, иди нахуй, пока сам не передумаешь в глубинах настроек. Волнение ебать, где справедливость?