소프트웨어개발/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 상태가 됨)