Catch up on everthing we announced at this year's Firebase Summit. Learn more

FCM 등록 토큰 관리 모범 사례

FCM API를 사용하여 프로그래밍 방식으로 전송 요청을 작성하는 경우 시간이 지남에 따라 오래된 등록 토큰이 있는 비활성 장치에 메시지를 전송하여 리소스를 낭비하고 있음을 알 수 있습니다. 이 상황은 Firebase 콘솔에 보고된 메시지 전송 데이터 또는 BigQuery로 내보낸 데이터에 영향을 주어 전송 속도가 급격히(실제로는 유효하지 않음) 하락하는 것으로 나타날 수 있습니다. 이 가이드에서는 효율적인 메시지 대상 지정 및 유효한 배달 보고를 보장하기 위해 취할 수 있는 몇 가지 조치에 대해 설명합니다.

기본 모범 사례

FCM API를 사용하여 전송 요청을 프로그래밍 방식으로 작성하는 모든 앱에서 따라야 하는 몇 가지 기본 관행이 있습니다. 주요 모범 사례는 다음과 같습니다.

  • 서버에 등록 토큰을 저장합니다. 서버의 중요한 역할은 각 클라이언트의 토큰을 추적하고 활성 토큰의 업데이트된 목록을 유지하는 것입니다. 코드와 서버에 토큰 타임스탬프를 구현하고 이 타임스탬프를 정기적으로 업데이트하는 것이 좋습니다.
  • 오래된 될 저장된 토큰을 제거합니다. 잘못된 토큰 응답의 명백한 경우에 토큰을 제거하는 것 외에도 토큰이 오래되었다는 다른 징후를 모니터링해야 할 수도 있습니다. 이 가이드에서는 이를 달성하기 위한 몇 가지 옵션에 대해 설명합니다.

등록 토큰 검색 및 저장

앱을 처음 시작할 때 FCM SDK는 클라이언트 앱 인스턴스에 대한 등록 토큰을 생성합니다. 이것은 API의 대상 지정 전송 요청에 포함하거나 대상 대상 주제에 대한 주제 구독에 추가해야 하는 토큰입니다.

우리의 클라이언트 설치 가이드에서 언급 한 바와 같이, 앱 타임 스탬프와 함께 앱 서버에이 초기 시작시 토큰과 저장을 검색합니다. 이 타임스탬프는 FCM SDK에서 제공하지 않으므로 코드와 서버에서 구현해야 합니다.

또한 다음과 같이 토큰이 변경될 때마다 토큰을 서버에 저장하고 타임스탬프를 업데이트하는 것이 중요합니다.

  • 앱이 새 기기에서 복원됩니다.
  • 사용자가 앱을 제거/재설치합니다.
  • 사용자가 앱 데이터를 지웁니다.

FCM 백엔드에서 잘못된 토큰 응답 감지

FCM에서 잘못된 토큰 응답을 감지하고 잘못된 것으로 알려진 등록 토큰을 시스템에서 삭제하여 응답해야 합니다. HTTP v1 API를 사용하는 경우 이러한 오류 메시지는 전송 요청이 유효하지 않거나 잘못된 토큰을 대상으로 지정되었음을 나타낼 수 있습니다.

  • UNREGISTERED (HTTP 404)
  • INVALID_ARGUMENT (HTTP 400)

참조 ErrorCode가를 자세한 내용은.

대상 토큰에 대해 이러한 응답 중 하나를 받은 경우 이 토큰의 기록은 다시는 유효하지 않으므로 삭제하는 것이 안전합니다. 그러나 토큰이 실제로 유효하지 않지만 표시가 없는 경우가 여전히 있다는 점을 명심하십시오. 예를 들어 FCM 백엔드는 기기가 영구적으로 오프라인 상태가 되었는지 여부를 확인할 수 없는 경우가 있습니다.

등록 토큰 신선도 보장

토큰이 최신인지 오래된 것인지 확인하는 것이 항상 간단한 것은 아닙니다. 모든 경우를 다루기 위해 토큰이 부실하다고 생각되는 경우에 대한 임계값을 채택해야 합니다. 우리의 권장 사항은 두 달입니다. 2개월이 지난 토큰은 비활성 장치일 가능성이 높습니다. 그렇지 않으면 활성 장치가 토큰을 새로 고쳤을 것입니다.

정기적으로 토큰 업데이트

서버의 모든 등록 토큰을 주기적으로 검색하고 업데이트하는 것이 좋습니다. 이를 위해서는 다음이 필요합니다.

  • (예 : 해당 API 호출을 사용하여 토큰 현재 검색하는 클라이언트 응용 프로그램에서 응용 프로그램 로직을 추가 token(completion): 애플 플랫폼 또는 대한 getToken() 안드로이드에 대한) 다음 타임 스탬프 (저장 용 앱 서버에 현재 토큰을 보내 ). 이것은 모든 클라이언트/토큰을 포함하도록 구성된 월간 작업일 수 있습니다.
  • 토큰 변경 여부에 관계없이 정기적으로 토큰의 타임스탬프를 업데이트하는 서버 로직을 추가합니다.

어떤 타이밍 패턴을 따르든 토큰을 주기적으로 업데이트해야 합니다. 한 달에 한 번 업데이트 빈도는 배터리 영향과 비활성 등록 토큰 감지 사이에서 균형을 잘 잡을 수 있습니다. 이 새로 고침을 수행하면 비활성화된 모든 장치가 다시 활성화될 때 등록을 새로 고칠 것입니다. 매주보다 더 자주 새로 고침을 수행하면 이점이 없습니다.

주제에서 오래된 토큰 구독 취소

오래된 등록 토큰을 제거하기 위해 주제 구독을 관리하는 것도 또 다른 고려 사항입니다. 여기에는 두 단계가 포함됩니다.

  1. 앱은 한 달에 한 번 및/또는 등록 토큰이 변경될 때마다 주제를 다시 구독해야 합니다. 이것은 앱이 다시 활성화될 때 구독이 자동으로 다시 나타나는 자가 치유 솔루션을 형성합니다.
  2. 응용 프로그램 인스턴스 2 개월 (또는 자신의 실효 창) 유휴 상태 인 경우에는 사용 주제에서 탈퇴해야 중포 기지 관리 SDK를 FCM을 백엔드에서 토큰 / 주제 매핑을 삭제합니다.

이 두 단계의 이점은 팬아웃할 부실 토큰이 더 적기 때문에 팬아웃이 더 빨리 발생하고 부실 앱 인스턴스가 다시 활성화되면 자동으로 재구독된다는 것입니다.

배달 성공 측정

일반적으로 적극적으로 사용되는 앱 인스턴스에서 관찰되거나 캡처된 작업을 기반으로 메시지를 타겟팅하는 것이 좋습니다. 이는 구독자 수가 많은 주제에 정기적으로 메시지를 보내는 경우 특히 중요합니다. 해당 구독자 중 일부가 실제로 비활성 상태인 경우 시간이 지남에 따라 전달 통계에 미치는 영향이 상당할 수 있습니다.

메시지를 토큰으로 타겟팅하기 전에 다음을 고려하십시오.

  • Google 애널리틱스, BigQuery에서 캡처된 데이터 또는 기타 추적 신호가 토큰이 활성 상태임을 나타냅니까?
  • 이전 배달 시도가 일정 기간 동안 지속적으로 실패했습니까?
  • 지난 2개월 동안 서버에서 등록 토큰이 업데이트되었습니까?
  • 안드로이드 장치의 경우 않습니다 FCM 데이터 API 로 인해 메시지 전달 실패의 높은 비율을보고 droppedDeviceInactive ?

배송에 대한 자세한 내용은 이해 메시지 전달을 .