본문 바로가기

개발/06.Android

[Android] Firebase - Android12(SDK 31)을 Target할 때 FCM 변경점. (Feat. PendingIntent)

배경 : 31 올리고 extended = true, false 만 하고 apk 만들어서 전달했더니. 푸시안나간다고 회신 옴

 

내용 : 

1. 버전 31부터는 PendingIntent를 사용할 때 FLAG_IMMUTABLE이나 FLAG_MUTABLE 설정을 해줘야 한단다.

2. implementation platform('com.google.firebase:firebase-bom:29.1.0') 로 바꿔준다

3. 

해당 부분을 변경하고 빌드를 실행해보니, 사용되던 함수가 deprecated 되고 새로운 함수를 사용하도록 변경되었다.

 

FirebaseInstanceId.getInstance().instanceId.addOnSuccessListener { ... }

 

라는 형태로 사용하고 있었는데, FirebaseInstanceId가 제거되고 FirebaseMessaging으로 변경되었다.

 

FirebaseMessaging.getInstance().token.addOnSuccessListener { ... }

 

따라서 다음과 같이 함수를 수정해주었다.

 

그 후, 빌드하여 다시 한번 Push를 테스트해보니

Background에서도 정상적으로 동작하는 것을 확인할 수 있었다.

 

참고 : 

https://heegs.tistory.com/115

https://blog.ysoft.kr/48

https://firebase.google.com/support/release-notes/android

https://blacktrees.tistory.com/entry/Android-Targeting-S-version-31-and-above-requires-that-one-of-FLAGIMMUTABLE-or-FLAGMUTABLE-be-specified-when-creating-a-PendingIntent-%ED%95%B4%EA%B2%B0

 

[Android] Targeting S+ (version 31 and above) requires that one of FLAG_IMMUTABLE or FLAG_MUTABLE be specified when creating a P

안드로이드 12에서는 알림에 대한 변경이 있어서, PendingIntent를 만들 때 FLAG_MUTABLE 또는 FLAG_IMMUTABLE을 지정해야 합니다. 그렇지 않으면, 알림의 일부 속성을 업데이트하는 동안 예외가 발생할 수

blacktrees.tistory.com

 

Firebase Android SDK Release Notes

 

firebase.google.com

 

[Android] FCM 메세지 background에서 실행 안될때 - API level 31 (안드로이드 12)

플레이스토어에 targetSdkVersion이 31이하면 앱이 올라가지 않아서 31로 맞춘 후 아래 형식으로 FCM 메세지를 보내면 백그라운드에서 앱이 실행되지 않는 문제가 생겼다. { "to": "", "notification": { "title":

blog.ysoft.kr

 

[Firebase] Android12(SDK 31)을 Target할 때 FCM 변경점. (Feat. PendingIntent)

TargetSDK 31 (Android12)를 대응하는 작업 도중, FCM에서 오류가 발생하여 이를 해결하는 과정을 작성해 두려고 한다. 여기서 FCM이란, Firebase Cloud Messaging의 약자로, Firebase에서 제공해주는 무료 푸시 서

heegs.tistory.com

 

728x90