소프트웨어개발/Android
NotificationManager 안드로이드 타겟 33 이상 권한 문제
날개
2023. 1. 17. 18:49
기존에 잘 사용하던 로컬 알림이 안드로이드13 (API 레벨 33)을 타겟으로 빌드하니 작동하지 않습니다. 이유를 검색해 보니, 안드로이드 13에서는 노티피케이션을 위한 매니페스트 권한과, 유저에게 런타임 권한을 얻어야 사용이 가능합니다.
먼저 AndroidManifest.xml 에 노티피케이션 권한을 선언합니다.
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
런타임에서 POST_NOTIFICATIONS 의 권한을 사용자로부터 받았는지 확인하고, 받지 않았다면, 권한을 요청합니다.
if (ContextCompat.checkSelfPermission (this, Manifest.permission.POST_NOTIFICATIONS) == PackageManager.PERMISSION_GRANTED) {
// 권한을 이미 얻었습니다.
} else {
val reqPerm = registerForActivityResult(ActivityResultContracts.RequestPermission()) { isGranted ->
if (isGranted) {
} else {
}
}
reqPerm.launch(Manifest.permission.POST_NOTIFICATIONS)
}
AndroidManifest.xml 에 노티피케이션 권한을 선언해도 위와 같이 실시간 권한을 얻지 않으면, 알림이 뜨지 않는다. (설정->어플리케이션쪽에서 본인 어플리케이션을 보면 디폴트로 알림 권한기 Off 상태가 됨)