Notice
Recent Posts
Recent Comments
Link
투케이2K
18. (TWOK/STUDY) [투케이 학습] : Firebase FCM V1 푸시 알림 전송 방식 학습 본문
[제 목]
[투케이 학습] : Firebase FCM V1 푸시 알림 전송 방식 학습
[설 명]
=====================================================
[FCM 변경 관련 이슈]
=====================================================
1. 기존에 사용하던 FCM 레거시 HTTP 알림 메시지 발송 방식이 2023-06-20 일에 중단 되는 이슈
>> 기존 레거시 FCM 방식을 FCM V1 방식으로 마이그레션 필요
=====================================================
[FCM V1 기술 관련 내용]
=====================================================
1. 액세스 토큰을 통한 보안 향상 :
>> HTTP v1 API는 OAuth2 보안 모델에 따라 수명이 짧은 액세스 토큰을 사용합니다
>> 액세스 토큰 만료 시간은 최대 1시간 설정으로, 기존 API 에서 사용하는 서버키 방식 보다 보안에 뛰어 납니다
2. 보다 효율적인 플랫폼에 따른 메시지 맞춤설정 :
>> 메시지 본문의 경우 HTTP v1 API는 모든 대상 인스턴스에 전달되는 공용 키는 물론 플랫폼에 따라 메시지를 맞춤설정할 수 있는 플랫폼별 키 가 있습니다
>> 플랫폼별 키를 사용하면 메시지 하나로 여러 클라이언트 플랫폼에 약간 다른 페이로드를 전송하는 '재정의'를 만들 수 있습니다
3. 새 클라이언트 플랫폼 버전을 위한 확장성 강화 및 미래 경쟁력 확보 :
>> HTTP v1 API는 Apple 플랫폼, Android, 웹에 제공되는 메시지 옵션을 완전히 지원합니다
>> 플랫폼별로 JSON 페이로드에 자체 정의된 블록이 있으므로 FCM에서 필요에 따라 새 버전과 새 플랫폼으로 API를 확장할 수 있습니다
4. 기기 그룹 메시징 관리 지원 제외
>> HTTP v1은 기기 그룹에 메시지를 보낼 수 있지만 관리는 지원하지 않습니다
=====================================================
[서버] : [FCM V1 메시지 발송 관련 흐름도]
=====================================================
1. 관리자는 파이어베이스 콘솔에서 [비공개 키] 파일 발급 (JSON 파일)
2. 관리자는 서버 특정 디렉토리에 발급 받은 [비공개 키] 를 삽입 및 환경 변수 설정 수행
3. 푸시 서버에서는 [비공개 키] 를 통해 [사용자 인증 수행] 및 푸시 발송에 필요한 [액세스 토큰 발급] 요청
4. 푸시 서버에서는 [액세스 토큰 발급] 이 완료 된 경우 HTTP 요청 [URL 정의], [헤더 값 추가], [메시지 발송 JSON 페이로드] 정의 수행
>> URL (POST) : https://fcm.googleapis.com/v1/projects/<PROJECT_UNIQUE_ID : 파이어베이스 콘솔에서 확인>/messages:send
>> Header : Authorization: Bearer <OAUTH_2_ACCESS_TOKEN : 액세스 토큰>
>> Body :
----------------------------------------------------------------------
[토픽 지정 발송]
{
"message": {
"topic": "news",
"notification": {
"title": "Breaking News",
"body": "New news story available."
},
"data": {
"story_id": "story_12345"
}
}
}
----------------------------------------------------------------------
[특정 타겟 기기 발송]
{
"message":{
"token": <특정 기기 푸시 알림 토큰>,
"notification":{
"body":"This is an FCM notification message!",
"title":"FCM Message"
}
}
}
----------------------------------------------------------------------
5. 푸시 알림 메시지 발송 실시
=====================================================
[모바일] : [FCM V1 메시지 표시 관련 흐름도]
=====================================================
1. 프로젝트에 파이어베이스 FCM 라이브러리 적용
2. 프로젝트에서 푸시 알림 토큰 확인 및 실시간 푸시 알림 서비스 확인 클래스 작성
>> 네이티브에서 FCM V1 방식 푸시 알림 토큰은 기존 레거시 FCM 과 동일하게 취득 사용
3. 네이티브에서 획득한 푸시 알림 토큰을 푸시 알림 서버에서 발송할 수 있도록 DB 에 토큰 저장 API 호출 실시
>> 기기 토큰 변경 시점 참고 : 새 기기에서 앱 복원, 사용자가 앱 제거/재설치, 사용자가 앱 데이터 소거
4. 실시간 푸시 알림 메시지가 도착 시 변경 된 푸시 알림 페이로드 형식에 맞게 JSON 데이터 파싱 수행
5. 푸시 알림 메시지 표시 수행
>> 안드로이드 인 경우 오레오 (Oreo) 버전 이상 사전) 알림 채널 생성 필요
>> 안드로이드, IOS 모두 푸시 알림 표시를 위해 사전) 사용자로 부터 알림 표시 권한 획득 필요
=====================================================
[FCM V1 적용 관련 서비스 유의 사항]
=====================================================
1. 푸시 서버는 FCM 메시지 발송 시 유효한 액세스 토큰으로 메시지를 발송해야하므로, 메시지 발송 전) 액세스 토큰 유효성 검사 필요
>> 액세스 토큰 발급 요청으로 확인 수행
2. HTTP v1 API 에서 특정 기기 타겟으로 메시지 발송 시 등록 된 토큰이 잘못된 경우에 따른 사용자 고지 처리
>> 푸시 서버에서 유효하지 않은 토큰인 경우 UNREGISTERED(HTTP 404), INVALID_ARGUMENT(HTTP 400) 리턴
>> 해당 응답 값을 받은 특정 기기는 DB 업데이트 필요 : 유효하지 않은 토큰 사용 기기, 갱신 필요 플래그값 저장 (ex : token (Y, N))
>> 사용자가 앱 실행 후 API 호출 및 토큰 유효성 값 확인 후 메인 화면에 푸시 사용 가능 여부 표시
=====================================================
[FCM V1 적용 마이그레이션 참고 사이트]
=====================================================
1. 서버 마이그레이션 참고 : https://firebase.google.com/docs/cloud-messaging/migrate-v1?hl=ko#java_1
2. 기기 토큰 관리 가이트 문서 : https://firebase.google.com/docs/cloud-messaging/manage-tokens?hl=ko
3. 샘플 액세스 토큰 확인 oauth 사이트 : https://developers.google.com/oauthplayground/
반응형
'투케이2K 학습정리' 카테고리의 다른 글
Comments