Android 13 Notification Permission 알림권한허용

Android 12 까지는 앱에서 별도의 권한을 받지 않고 Notification 을 띄울 수 있었다. (활성화 상태가 디폴트값)

앱 설정에서 Notification 알림 활성을 통해 Notification 권한을 조정할수 있었다.

하지만, Android 13 부터는 Notificatioin 권한이 기본적으로 비활성 상태이며 유저가 권한을 허용해주어야만 활성화 상태가 된다.

AndroidManifest 에서 Notificatioin 권한을 요청할 수 있다. 

Target SDK API 33 이상에서만 권한 수가가 가능하며, 그 이후는 기존 안드로이드 권한 요청과 동일하다.


<manifest ...>
    <uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>
    <application ...>
        ...
    </application>
</manifest>
    


Target SDK 33인 앱이 Android 12 이하의 디바이스에 설치된다면?

기존 안드로이드 OS에서는 따로 알림 관련된 권한 요청이 없었다.

POST_NOTIFICATIONS 해당 권한 요청을 아무리 보내도 권한 알림 팝업은 노출되지 않는다.

알림 권한은 기존과 동일하게 설정에 들어가서 활성화/비활성화를 진행하며 기본 앱 진입 시 무조건 활성화 상태로 진입되게 된다.


Target SDK 32인 앱이 Android 13 이상의 디바이스에 설치된다면?

Android 13 부터는 Notification 권한이 존재한다. 그러나 Target SDK 33 이상부터 알림 관련 퍼미션을 정의할 수 있다. (android.permission.POST_NOTIFICATIONS)

notificationChannel을 등록할 때 자동으로 알림 권한 팝업이 노출된다

POST_NOTIFICATIONS (Notification Permission) 은 Target SDK API 33 이상부터 추가 가능

Target SDK API 32 이하의 앱이 Android 13 디바이스에 설치되면 Notification Channel을 등록할 때 자동으로 Notification 권한 요청 팝업이 나옴

Target SDK API 33 이상의 앱이 Android 13 디바이스에 설치되면 Notification 권한요청을 개발자가 원하는 타이밍에 노출 가능

Target SDK API 33 이상의 앱이 Android 12 이하 디바이스에 설치되면 기존과 동일하게 Notification 권한 요청 없이 사용 가능

Target SDK API 32 앱을 33으로 업데이트 시 기존 알림 권한 동의 상태라면 업데이트 이후 기본으로 허용이지만 예외 있음

(기기에따라 자동으로 허용되지 않고 다시 한 번 권한을 얻어야하는 경우가 있음)



//알림권한허용 팝업 (AOS 13부터)
private fun postNotificationCheck() {
    Log.d("postNotificationCheck()")

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
        TedPermission.with(this)
            .setPermissionListener(postNotificationListener)
            .setPermissions(Manifest.permission.POST_NOTIFICATIONS)
            .check()

        SharedPref.getInstance().setShowPostNotificationPopup(true)
    }
}

private val postNotificationListener: PermissionListener = object : PermissionListener {
    override fun onPermissionGranted() {
        Log.d("postNotificationListener onPermissionGranted()")
    }

    override fun onPermissionDenied(deniedPermissions: List) {
        Log.d("postNotificationListener onPermissionDenied()")

        CommonDialog(this,
            getString(R.string.common_noti_label),
            getString(R.string.perm_post_notification_denied_message),
            false,
            object : DialogClickListener {
                override fun onPositiveClick() {
                    //알림설정화면 이동    
                    openAppNotificationSettings(this)
                }

                override fun onNegativeClick() {
                }

            })
    }
}


** 주의사항

Android 13에서는 Notification 권한 요청을 기존 권한들과 동일한 방식으로 요청하며

Android 12에서는 Notification 권한이 기본적으로 무조건 활성화 상태였다면

Android 13에서는 Notification 권한이 기본적으로 비활성화 상태이며 

사용자가 권한을 허용해줘야 활성화 상태가 됩니다.


그외에 알림권한과 관련된 유용한 정보들은 공식문서를 통해서 확인하실 수 있습니다.

https://developer.android.com/about/versions/13/changes/notification-permission


댓글

이 블로그의 인기 게시물

아이랑스토리 어플리케이션 개인정보처리방침

Jetpack Compose Navigation 정리

Jetpack Compose 기초정리