메시지 우선순위 설정
용어
다운스트림 - 상위에서 하위로 보내는 것 (FCM 서버 -> 디바이스들에 설치된 앱)
다운스트림의 경우, 우선 순위로 [보통, normal], [높은, high] 을 할당할 수 있다. 우선순위에 대해 다음과 같이 작동한다.
- 보통 우선순위
- ''데이터 메시지'' 는 기본적으로 보통 우선순위를 가진다. (바꿀 수 있음)
- 절전 모드인 기기에서 네트워크 연결을 열지 않으며 배터리 절약을 위해 전송 지연이 발생할 수 있음
- 사용 예 : [새로운 이메일 알림],[데이터 동기화] 등 시간이 크게 중요하지 않은 메시지의 경우 보통 우선순위 사용을 고려한다.
- 높은 우선순위
- ''알림 메시지''는 기본적으로 높은 우선순위를 가진다.(바꿀 수 있음)
- FCM에서 즉시 메시지를 전송하려고 시도한다.
- 메시지 전송이 가능한 경우, FCM 서비스에서 기기의 절전 모드를 해제하고 앱 서버로 연결되는 네트워크를 열 수 있다.
- 높은 우선순위가 필요한 경우
- 메신저, 채팅, 음성 통화 알림 기능이 포함된 앱은 일반적으로 네트워크 연결을 열고 FCM에서 지연 없이 기기로 메시지를 전송할 수 있는지 확인해야 한다. (1)즉시 전달해야 하는 메시지이며, (2)사용자의의 즉각적인 상호작용이 필요한 경우, 높은 메시지를 사용한다.
- 보통 우선순위보다 배터리가 더 많이 소모된다는 것은 유념해야 한다.
업스트림 - 하위에서 상위로 보내는 것(디바이스들에 설치된 앱 -> FCM 서버(또는 기타 다른 서버..))
메시지 우선순위 설정 값 : normal , high
- 자세한 내용은 HTTP 또는 XMPP의 서버 참조를 참조하세요.
- iOS 클라이언트 앱의 경우 보통 및 높은 우선순위는 APN 우선순위 수준 5 및 10과 유사합니다. iOS 관련 동작에 대한 자세한 내용은 APN 문서를 참조하세요. Android 관련 동작의 세부정보는 잠자기 및 앱 대기 최적화를 참조하세요.
example
잡지 구독자에게 새 콘텐츠를 다운로드할 수 있다고 알리는 보통 우선순위 메시지의 예
{
"to": "bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
"priority": "normal",
"notification": {
"body": "This week's edition is now available.",
"title": "NewsMagazine.com",
"icon": "new"
},
"data": {
"volume": "3.21.15",
"contents": "http://www.news-magazine.com/world-week/21659772"
}
}
메시지 수명 설정
보통 메시지를 보내면, FCM에서 바로 전송된다. 하지만 바로 전송하는 것이 불가능한 경우도 있다. FCM은 앱이 과도한 리소르를 소비하고 배터리 수명에 부정적인 영향을 미치는 것을 방지하기 위해 FCM이 의도적으로 메시지를 지연할 수 있다.
- ex) 안드로이드인 경우 : 기기 꺼진 상태, 오프라인 상태, 기타 사용 불가능한 상태일 때
일부 앱들은 지연된 메시지가 전혀 필요하지 않을 수도 있다. 예를 들어, 영상 채팅 알림은 통화가 종료되면 지연된 메시지가 필요없으며, 이벤트 초대 메시지인 경우 이벤트 종료된 후에 수신된 메시지는 의미가 없어진다.
메시지 최대 수명 지정 방법 (17년4월18일 현재 iOS 지원 안함. 나중에 문서 업데이트 확인 필요)
- HTTP 및 XMPP 요청에서 모두 지원되는 time_to_live 매개변수를 사용
- 이 매개변수의 값은 [최소 0초 ~ 최대 2,419,200초(4주)] 까지 지정 가능하다.
- 이는 FCM이 메시지를 저장하여 전송 시도하는 최대 기간에 해당
- 이 필드가 포함되지 않은 요청은 최대 기간인 4주가 기본 값.
사용 예
- 만료일이 있는 초대 이벤트 (유효한 초대 기간까지만 메시지를 받도록 할 때)
- 영상 채팅 수신 전화 (최대 전화 요청 기간을 설정할 때)
- '지금 즉시 전송' 이나 '절대 전송 안함' 을 보장하려 할때.
- 단 : 이 때는 즉지 전송할 수 없는 메시지는 삭제된다는 점에 유의
- 장 : 저장되지 않으므로 알림 메시지를 보낼 때 지연 시간이 최소화됨
Example
{
"collapse_key": "demo",
"to": "xyz",
"data": {
"key1": "value1",
"key2": "value2"
},
"time_to_live": 3
}