안드로이드/SDK version

Android 12이상 Notification & BroadCastReceiver, Service StartActivity문제

코딩하는후운 2024. 3. 20. 13:33
반응형

Android 12이상 Notification & BroadCastReceiver, Service StartActivity문제

 

  • 안드로이드 OS버전 12이상에서 노티피케이션 받았을 때 푸시가 오지 않는 이슈가 발생하였다.
  • 앱종료 되어있을 때 푸시받아서 ForegroundService도 실행해 줘야 하는데 OS버전 12이상에서 백그라운드 실행을 더 제한하여 실행이 되지 않았음.

FCM의 priority를 서버에서 High로 받으니 푸시가 오는 것을 확인하였다.
또 다른 방법은 WorkManager로 마이그레이션 하라고 되어있는데 그렇게까진 하지 않았습니다.

 

ForegroundService에서 notification 문제도 발생.

remoteView로 커스텀뷰를 사용하고 BroadCastReceiver로 이벤트를 전달하여 startActivity를 처리하였는데,

OS 12이상에서는 이를 제한하였다.

앱 성능과 UX를 개선하기 위해 Android 12 이상을 타겟팅하는 앱은 알림 트램펄린으로 사용되는 서비스나 broadcast receiver에서 활동을 시작할 수 없습니다. 즉, 사용자가 알림을 탭하거나 알림 내에서 작업 버튼을 탭한 후, 앱은 서비스나 broadcast receiver 내부에서 startActivity()를 호출할 수 없습니다.

https://developer.android.com/about/versions/12/behavior-changes-12?hl=ko#notification-trampolines 

 

동작 변경사항: Android 12를 타겟팅하는 앱  |  Android Developers

Android 12를 타겟팅하는 앱에 영향을 주는 Android 12의 변경사항을 알아봅니다.

developer.android.com

 

이를 해결하기 위해 OS 12미만이상으로 나누어 notification을 수정하였습니다.

OS 12미만 : 기존 RemoteView를 이용 & BroadCastReceiver로 이벤트를 받아서 startActivity처리 (NEW_TASK)

OS 12이상 : 시스템 notification(addAction)을 통하여 intent를 전달하여 화면 이동 시켰습니다.

 

 

https://proandroiddev.com/notification-trampoline-restrictions-android12-7d2a8b15bbe2

 

Notification trampoline restrictions-Android12

Did you ever notice?

proandroiddev.com

 

반응형