메시지 수명 설정

메시지를 보내면 보통 FCM에서 바로 전송됩니다. 하지만 바로 전송하는 것이 불가능한 경우도 있습니다. 예를 들어 기기를 사용할 수 없거나 FCM에서 앱이 과도한 리소스를 소비하여 배터리 수명이 부정적인 영향을 받지 않도록 의도적으로 메시지를 지연할 수 있습니다.

이러한 경우 FCM은 메시지를 저장한 후 최대한 빨리 전송합니다. 대부분의 경우 문제가 없지만 일부 앱은 지연 없이 알림을 전송해야 합니다. 예를 들어 수신 전화 알림이나 이벤트 초대입니다.

Android, 웹에서는 메시지의 최대 수명을 지정할 수 있습니다. 값의 길이가 0초에서 2,419,200초(28일) 사이여야 하며 FCM이 메시지를 저장하여 전송 시도하는 최대 기간에 해당합니다. 이 필드가 포함되지 않은 요청은 기본적으로 최대 기간인 4주 동안 지속됩니다.

iOS에서는 ApnsConfig 객체에서 apns-expiration 헤더를 설정할 수 있습니다. 자세한 내용은 Sending notification requests to APNs(APNs에 알림 요청 보내기)에 관한 Apple 문서를 참고하세요.

다음은 이 기능을 사용할 수 있는 몇 가지 예입니다.

  • 영상 채팅 수신 전화
  • 만료일이 있는 초대 이벤트
  • 캘린더 일정

메시지 수명을 지정할 경우의 또 다른 장점은 FCM에서 TTL(수명) 값이 0초인 메시지에 축소형 메시지 제한을 적용하지 않는다는 점입니다. ttl 값이 0이면 즉시 전송할 수 없는 메시지는 삭제된다는 점에 유의하세요. 그러나 이러한 메시지는 저장되지 않으므로 알림 메시지를 보낼 때 지연 시간이 최소화됩니다.

다음은 TTL이 포함된 요청의 예시입니다.

{
  "message":{
    "token":"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
    "data":{
      "Nick" : "Mario",
      "body" : "great match!",
      "Room" : "PortugalVSDenmark"
    },
    "apns":{
      "headers":{
        "apns-expiration":"1604750400"
      }
    },
    "android":{
      "ttl":"4500s"
    },
    "webpush":{
      "headers":{
        "TTL":"4500"
      }
    }
  }
}

메시지의 수명

앱 서버가 FCM에 메시지를 게시한 후 메시지 ID를 다시 수신했다고 해서 메시지가 이미 기기로 전송되었다는 의미는 아닙니다. 대신 전송이 수락되었다는 의미입니다. 메시지가 전송되는 시점은 여러 요인에 따라 달라집니다.

기기가 연결되어 있지만 잠자기 상태인 경우 FCM은 기기에서 잠자기 상태가 해제될 때까지 우선순위가 낮은 메시지를 저장합니다. collapse_key가 설정되어 있고 축소 키와 등록 토큰이 동일한 기존 메시지가 전송 대기 중이라면 이전 메시지가 삭제되고 새 메시지로 대체됩니다. 하지만 축소 키가 설정되어 있지 않으면 나중에 전송할 수 있도록 새 메시지와 이전 메시지 모두 저장됩니다.

기기가 FCM에 연결되어 있지 않으면 연결이 설정될 때까지 메시지가 저장됩니다. 연결이 설정되면 FCM이 대기 중인 모든 메시지를 기기로 전송합니다. 기기가 다시 연결되지 않으면 결국 메시지 제한 시간이 초과되어 FCM 스토리지에서 삭제됩니다. ttl 플래그가 설정되지 않은 한 기본 제한 시간은 4주입니다. FCM에서 기기로 메시지를 전송하려고 할 때 앱이 제거된 경우 FCM이 메시지를 즉시 삭제하고 등록 토큰을 무효화합니다. 이후 이 기기로 메시지를 보내려고 시도하면 NotRegistered 오류가 발생합니다.

Android 기기의 경우 기기가 FCM에 연결되지 않은 시간이 1개월을 초과하면 FCM은 여전히 메시지를 수신하지만 메시지를 즉시 삭제합니다. 데이터 메시지를 마지막으로 보낸 지 4주가 지나기 전에 기기가 연결되면 클라이언트가 onDeletedMessages() 콜백을 수신합니다.

Android 또는 Apple 플랫폼에서의 메시지 전송에 대한 자세한 정보를 확인하려면 Apple 및 Android 기기에서 열린 전송 메시지 수와 Android 앱의 노출수 데이터가 기록된 FCM 보고 대시보드를 사용하면 됩니다.