notes
Android - 런타임 권한
Manifest와 런타임 권한 요청·거절 후 처리 흐름 정리.
카메라·알림·위치를 Manifest에만 적고 넘어갔다가, 런타임 다이얼로그에서 막힌 적이 한두 번이 아니다. 요즘 권한은 설치 시 ≠ 사용 시다.
Android
- Manifest
<uses-permission> - Android 6+ 위험 권한은 런타임 요청
- 알림은 13+
POST_NOTIFICATIONS별도
val launcher = registerForActivityResult(RequestPermission()) { granted ->
if (granted) openCamera() else /* 설정으로 유도 */
}
launcher.launch(Manifest.permission.CAMERA)
거절 후 다시 묻기 전에 shouldShowRequestPermissionRationale을 본다. “다시 묻지 않음”이면 설정 화면으로.
iOS
Info.plist 사용 설명 문자열(NSCameraUsageDescription 등)이 없으면 그냥 크래시/거절.
AVCaptureDevice.requestAccess(for: .video) { ok in
DispatchQueue.main.async { /* UI */ }
}
알림은 UNUserNotificationCenter.requestAuthorization.
내가 지키는 순서
기능 버튼 누른 직후에 요청한다. 앱 켜자마자 권한 폭탄은 거절률만 올린다.