본문 바로가기
[클라이언트]/[Android Kotlin]

POST_NOTIFICATIONS 에 대해

by Hevton 2023. 5. 21.
반응형

Android 13부터 POST_NOTIFICATIONS를 이용해야 알림이 허용된다.

TargetSDK 33 부터는, 직접 요청하지 않으면 권한이 허용되지 않는다는 말이다.

이를 간단하 해결하려면 targetsdk를 32로 내리면 된다

 

근데 나는 이걸 Manifest에 넣어두기만 하고, 런타임으로 권한을 요청하진 않았다.

 

그랬더니 ForegroundService가 잘 동작하지 않느냐? 그건 아니다. 동작은 잘 한다

 

 


알림 설정을 거부하면 ForegroundService가 동작하지 않는건가?

Foreground Service는 여전히 동작하지만, 알림이 표시되지 않는 것뿐입니다. Foreground Service는 앱이 사용자와 상호작용하고 있을 때 계속 실행되어야 하는 서비스입니다. 따라서 Foreground Service는 사용자에게 명확히 보여져야 하지만, Android 13에서는 POST_NOTIFICATION 권한이 거부되면 알림이 표시되지 않을 뿐입니다. 대신 사용자는 Foreground Services Task Manager를 사용하여 Foreground Service가 실행 중인지 확인할 수 있습니다.

 

 


 

나의 대응

targetSDKVersion을 32로 낮춰서, 따로 런타임으로 POST_NOTIFICATIONS를 요청하지 않아도 되게끔 했고

(33으로 올리면, 디바이스가 33 이상일 경우 POST_NOTIFICATIONS 권한을 직접 런타임으로 제작해서 요청해줘야한다)

 

targetSDKVersion을 32로 낮추면 런타임으로 알아서 요청되므로, (기기가 33이면 요청, 33아니면 자동허용)

createNotification 하는 시기에 자동으로 요청되기에 그 시기를 TimerService -> EntryActivity로 변경해줬다.

 

 


 

SDK 33일때는 POST_NOTIFICATIONS 를 기록하고, 런타임 권한까지 요청해야 해야 notification이 뜬다.

 

참고: 앱은 포그라운드 서비스를 실행하기 위해 POST_NOTIFICATIONS 권한을 요청할 필요가 없습니다. 그러나 이전 버전의 Android에서와 마찬가지로 앱은 포그라운드 서비스를 시작할 때 알림을 포함해야 합니다.

-> 없어도 동작은 한다 (FSG에서 관리해주기때문이다). 하지만 노티피케이션을 보여주려면 저렇게 해야한다.

 

 

아무튼 targetsdk 33을 하면 상대적으로 복잡하다. 난 그래서 32로 일단 낮췄다.

https://developer.android.com/about/versions/13/changes/notification-permission?hl=ko 

 

알림 런타임 권한  |  Android 개발자  |  Android Developers

이제 Android 14 베타를 사용할 수 있습니다. 지금 사용해 보시고 의견을 알려 주세요. 알림 런타임 권한 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. Android 

developer.android.com

 

 

런타임 권한 요청

https://wingsnote.com/274

 

NotificationManager 안드로이드 타겟 33 이상 권한 문제

기존에 잘 사용하던 로컬 알림이 안드로이드13 (API 레벨 33)을 타겟으로 빌드하니 작동하지 않습니다. 이유를 검색해 보니, 안드로이드 13에서는 노티피케이션을 위한 매니페스트 권한과, 유저에

wingsnote.com

 

 

 

+ Android 12 Notification trampoline 제한 

https://itandhumanities.tistory.com/79

 

Android 12 - Notification trampoline restrictions

안드로이드 12의 주요 업데이트 중 하나인데, 노티를 클릭해서 서비스나 브로드캐스트를 실행하고 다시 엑티비티를 실행하는 흐름을 제한하는 것이다. 대신 펜딩인텐트에서 바로 엑티비티를 실

itandhumanities.tistory.com

 

반응형