Notice
Recent Posts
Recent Comments
Link
투케이2K
215. (TWOK/ERROR) [Android] Firebase push v1 파이어베이스 푸시 V1 방식 메시지 수신 시 데이터 파싱 이슈 본문
투케이2K 에러관리
215. (TWOK/ERROR) [Android] Firebase push v1 파이어베이스 푸시 V1 방식 메시지 수신 시 데이터 파싱 이슈
투케이2K 2024. 1. 30. 20:33[환경 설정 및 설명]
프로그램 : AndroidStudio
설 명 : [Android] Firebase push v1 파이어베이스 푸시 V1 방식 메시지 수신 시 데이터 파싱 이슈
[에러 원인]
1. 기존 FCM 데이터 파싱 시 레거시 푸시 메시지 페이로드 형식만 지정되어 있어 발생하는 이슈
>> 기존 FCM 레거시 페이로드 형식 참고
{
"data" : {
"title" : "Push Test",
"body" : "Talend API 푸시테스트"
},
"to":"dvPXofxPQBSqWwACr2cW6b:APA91b...",
"Android": {
"priority": "high"
},
"priority": 10
}
>> 기존 안드로이드 FCM 메시지 파싱 참고
if(remoteMessage.getData() != null
&& remoteMessage.getData().isEmpty() == false
&& String.valueOf(remoteMessage.getData().get("title")) != null
&& String.valueOf(remoteMessage.getData().get("title")).length() > 0
&& String.valueOf(remoteMessage.getData().get("body")) != null
&& String.valueOf(remoteMessage.getData().get("body")).length() > 0) {
type = "getData"; // [타입 저장]
title = String.valueOf(remoteMessage.getData().get("title")); // [타이틀 저장]
messagae = String.valueOf(remoteMessage.getData().get("body")); // [메시지 저장]
}
[해결 방법]
1. 안드로이드 푸시 메시지 수신 시 기존 레거시 페이로드 및 V1 페이로드 모두 파싱 가능 하도록 대응 수행
>> FCM V1 페이로드 참고
{
"message": {
"token": "<기기 고유 푸시 토큰 값>",
"notification": {
"body": "Body of Your Notification in data",
"title": "Title of Your Notification in data"
}
}
}
>> 안드로이드 푸시 메시지 파싱 참고
// -----------------------------------------
if(remoteMessage.getData() != null
&& remoteMessage.getData().isEmpty() == false
&& String.valueOf(remoteMessage.getData().get("title")) != null
&& String.valueOf(remoteMessage.getData().get("title")).length() > 0
&& String.valueOf(remoteMessage.getData().get("body")) != null
&& String.valueOf(remoteMessage.getData().get("body")).length() > 0) {
type = "getData"; // [타입 저장]
title = String.valueOf(remoteMessage.getData().get("title")); // [타이틀 저장]
messagae = String.valueOf(remoteMessage.getData().get("body")); // [메시지 저장]
}
// -----------------------------------------
else if(remoteMessage.getNotification() != null
&& remoteMessage.getNotification().getTitle().isEmpty() == false
&& remoteMessage.getNotification().getBody().isEmpty() == false
&& String.valueOf(remoteMessage.getNotification().getTitle()) != null
&& String.valueOf(remoteMessage.getNotification().getTitle()).length() > 0
&& String.valueOf(remoteMessage.getNotification().getBody()) != null
&& String.valueOf(remoteMessage.getNotification().getBody()).length() > 0){
type = "getNotification"; // [타입 저장]
title = String.valueOf(remoteMessage.getNotification().getTitle()); // [타이틀 저장]
messagae = String.valueOf(remoteMessage.getNotification().getBody()); // [메시지 저장]
}
// -----------------------------------------
else {
type = "NONE"; // [타입 저장]
title = ""; // [타이틀 저장]
messagae = ""; // [메시지 저장]
}
// -----------------------------------------
반응형
'투케이2K 에러관리' 카테고리의 다른 글
Comments