-
안드로이드13 알림 권한 수정 및 런타임에서 권한 요청 팝업 뜨게 만드는 방법Development/Etc. 2022. 9. 15. 21:23
안드로이드 13 (안드로이드 SDK 33) 부터 알림 런타임 권한이 추가되면서, 알림 사용 방법에 수정되는 부분이 있습니다.
안드로이드 13 미만 안드로이드 13 이상 첫 게임 설치시 초기 설정 알림 권한 허용 알림 권한 사용 중지 알림 권한 허용 팝업 노출되지 않음 target sdk 33 미만 target sdk 33 이상 게임 첫 설치 후 실행시 노출 따로 설정하지 않으면 노출되지 않음 manifest 에 알림 권한 추가 필요 없음 필요 없음 android.permission.POST_NOTIFICATION 우선, target SDK 가 33 미만이면서 기존에 알림을 사용하던 어플리케이션은 안드로이드 13 이상을 사용하는 기기에서 게임 설치시 따로 세팅하지 않아도 알림 권한 허용 팝업이 노출됩니다.
이에 따라 어플리케이션이 정상 작동하지 않는 이슈가 있을 수 있으니, 안드로이드 13 기기에서 확인이 꼭 필요합니다.
참고로, 어플리케이션을 설치한 상태로 OS 만 업데이트하는 경우 따로 알림 권한 요청 팝업이 노출되지 않고 기존 알림 권한을 그대로 유지하니 참고 부탁드립니다.
안드로이드 13 이상에서는 런타임에 알림 권한 허용 팝업을 노출하기 위해 새로운 권한을 선언해야합니다.
targetSdkVersion 이 33 이상일 경우에만 해당합니다.
앱 매니페스트 파일에 안드로이드 API 수준 33 에서 새로 생긴 새로운 런타임 권한, POST_NOTIFICATION 을 선언합니다.
<manifest ...> <uses-permission android:name="android.permission.POST_NOTIFICATIONS"/> <application ...> ... </application> </manifest>
(출처 : 안드로이드 공식 문서)
그 후 알림 권한 팝업을 노출시킬 부분에 코드를 추가합니다.
(아래 코드는 자바로 작성되었으며, 코드 에디터에서 작성된 것이 아니기 때문에 오타나 잘못된 부분이 있을 수 있습니다. 따라서 복사-붙여넣기를 권장하지 않습니다)
import androidx.activity.result.contract.ActivityResultContracts; import androidx.activity.result.ActivityResultLauncher; private ActivityResultLauncher<String> activityResultLauncher = registerForActivityResult(new ActivityResultContracts.RequestPermission(), isGranted -> { if (isGranted) { // 유저가 알림 권한을 허용했을 때 동작할 코드 입력 } else { // 유저가 알림 권한을 허용하지 않았을 때 동작할 코드 입력 } }); public void RequestNotificationPermission() { // POST_NOTIFICATIONS 권한은 안드로이드 SDK 33 에서 추가됨 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { if (ContextCompat.checkSelfPermission(context, Manifest.permission.POST_NOTIFICATIONS) == PackageManager.PERMISSION_GRANTED){ // 이미 알림 권한을 허용했을때 동작하는 코드 } else if (ActivityCompat.shouldShowRequestPermissionRationale(activity, Manifest.permission.POST_NOFITICATIONS)){ // 사용자가 권한 요청을 명시적으로 거부한 경우 true // 유저에게 앱을 사용하기 위해선 권한이 필요하다는 것을 설명해주어야 함 // 사용자가 권한 요청을 처음 보거나, '다시 묻지 않음'을 선택한 경우 false } else { // 권한 요청 activityResultLauncher.launch(android.Manifest.permission.POST_NOTIFICATIONS); } } }
ContextCompat.checkSelfPermission : 특정 권한을 허용했는지 반환
ActivityCompat.shouldShowRequestPermissionRationale : 권한을 요청하기 전에 UI 를 띄워야하는지 반환
androidx.activity.result.ActivityResultLauncher : ActivityResultContract 실행 프로세스를 시작하기 위한 런처
위 방법을 통해 알림 권한을 허용했는지 확인하고, 허용하지 않았다면 알림 권한 허용 팝업을 띄울 수 있습니다.
< 참고 >
안드로이드 알림 런타임 권한 문서 : https://developer.android.com/about/versions/13/changes/notification-permission?hl=ko#use
알림 런타임 권한 | Android 개발자 | Android Developers
알림 런타임 권한 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. Android 13(API 수준 33)에서는 앱에서 예외 없는 알림을 보내기 위한 새로운 런타임 권한 POST_
developer.android.com
코드 참고(코틀린) : https://twitter.com/thatfiredev/status/1563147026014957569?s=20&t=483A_N8q-b_fgmAtRZo4zw
'Development > Etc.' 카테고리의 다른 글
안드로이드 빌드툴 31 이상에서 빌드 안되는 이슈 (0) 2022.09.13 (이슈 기록) 윈도우11 업데이트 후 파이썬 실행이 안되는 이슈 (0) 2022.08.05