Firebase Cloud Messaging 엔드포인트의 Amazon SNS 관리 - Amazon Simple Notification Service

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

Firebase Cloud Messaging 엔드포인트의 Amazon SNS 관리

디바이스 토큰 관리 및 유지 관리

다음 단계에 따라 모바일 애플리케이션의 푸시 알림을 전달할 수 있습니다.

  1. 모든 디바이스 토큰, 해당 Amazon SNS 엔드포인트 ARN 및 타임스탬프를 애플리케이션 서버에 저장합니다.

  2. 모든 기한 경과 토큰을 제거하고 해당 Amazon SNS 엔드포인트 ARN을 삭제합니다.

앱이 처음 시작되면 디바이스에 대한 디바이스 토큰(등록 토큰이라고도 함)을 받게 됩니다. 이 디바이스 토큰은 디바이스의 운영 체제에 의해 민팅되며 FCM 애플리케이션에 연결됩니다. 이 디바이스 토큰을 받으면 Amazon SNS에 플랫폼 엔드포인트로 등록할 수 있습니다. 디바이스 토큰, Amazon SNS 플랫폼 엔드포인트 ARN 및 타임스탬프를 애플리케이션 서버 또는 다른 영구 스토어에 저장하여 저장하는 것이 좋습니다. 디바이스 토큰을 검색하고 저장하도록 FCM 애플리케이션을 설정하려면 Google Firebase 설명서의 등록 토큰 검색 및 저장을 참조하세요.

최신 토큰을 유지하는 것이 중요합니다. 사용자의 디바이스 토큰은 다음 조건에서 변경될 수 있습니다.

  1. 모바일 애플리케이션이 새 디바이스에 복원됩니다.

  2. 사용자가 애플리케이션을 제거하거나 업데이트합니다.

  3. 사용자가 애플리케이션 데이터를 지웁니다.

디바이스 토큰이 변경되면 해당 Amazon SNS 엔드포인트를 새 토큰으로 업데이트하는 것이 좋습니다. 이렇게 하면 Amazon SNS가 등록된 디바이스와의 통신을 계속할 수 있습니다. 모바일 애플리케이션 내에서 다음 의사 코드를 구현하여 이 작업을 수행할 수 있습니다. 활성화된 플랫폼 엔드포인트를 생성하고 유지 관리하는 권장 방법을 설명합니다. 이 접근 방식은 모바일 애플리케이션이 시작될 때마다 또는 백그라운드에서 예약된 작업으로 실행할 수 있습니다.

의사 코드

다음 FCM 의사 코드를 사용하여 디바이스 토큰을 관리하고 유지 관리합니다.

retrieve the latest token from the mobile OS if (endpoint arn not stored) # first time registration call CreatePlatformEndpoint store returned endpoint arn endif call GetEndpointAttributes on the endpoint arn if (getting attributes encountered NotFound exception) #endpoint was deleted call CreatePlatformEndpoint store returned endpoint arn else if (token in endpoint does not match latest) or (GetEndpointAttributes shows endpoint as disabled) call SetEndpointAttributes to set the latest token and enable the endpoint endif endif

토큰 업데이트 요구 사항에 대한 자세한 내용은 Google의 Firebase 설명서의 정규 기준으로 토큰 업데이트를 참조하세요.

잘못된 토큰 감지

메시지가 잘못된 디바이스 토큰을 사용하여 FCM v1 엔드포인트로 전송되면 Amazon SNS는 다음 예외 중 하나를 수신합니다.

  • UNREGISTERED(HTTP 404) - Amazon SNS가 이 예외를 수신하면 InvalidPlatformTokenFailureType와 함께 전송 실패 이벤트를 수신하며 엔드포인트와 연결된 플랫폼 토큰의 FailureMessage가 유효하지 않습니다. 이 예외를 제외하고 전송에 실패하면 Amazon SNS가 플랫폼 엔드포인트를 비활성화합니다.

  • INVALID_ARGUMENT(HTTP 400) - Amazon SNS가 이 예외를 수신하면 디바이스 토큰 또는 메시지 페이로드가 유효하지 않음을 의미합니다. 자세한 내용은 Google Firebase 설명서의 ErrorCode를 참조하세요.

이러한 경우 중 하나에서 INVALID_ARGUMENT를 반환할 수 있으므로 Amazon SNS는 InvalidNotificationFailureType을 반환하고 알림 본문의 FailureMessage는 유효하지 않습니다. 이 오류가 발생하면 페이로드가 올바른지 확인합니다. 올바른 경우 디바이스 토큰이 최신 상태인지 확인합니다. 이 예외를 제외하고 전송에 실패해도 Amazon SNS는 플랫폼 엔드포인트를 비활성화하지 않습니다.

InvalidPlatformToken 전송 실패 이벤트가 발생하는 또 다른 경우는 등록된 디바이스 토큰이 해당 메시지를 전송하려는 애플리케이션에 속하지 않는 경우입니다. 이 경우 Google은 SENDER_ID_MISMATCH 오류를 반환합니다. 이 예외를 제외하고 전송에 실패하면 Amazon SNS가 플랫폼 엔드포인트를 비활성화합니다.

애플리케이션에 대한 전송 상태 로깅을 설정할 때 FCM v1 API에서 수신한 모든 관찰된 오류 코드를 CloudWatch에서 사용할 수 있습니다.

애플리케이션에 대한 전송 이벤트를 수신하려면 사용 가능한 애플리케이션 이벤트 섹션을 참조하세요.

기한 경과 토큰 제거

엔드포인트 디바이스로의 메시지 전송이 실패하기 시작하면 토큰은 오래된 것으로 간주됩니다. Amazon SNS는 이러한 기한 경과 토큰을 플랫폼 애플리케이션의 비활성화된 엔드포인트로 설정합니다. 비활성화된 엔드포인트에 게시하면 Amazon SNS는 EndpointDisabledFailureType을 사용하여 EventDeliveryFailure 이벤트를 반환하고 엔드포인트의 FailureMessage는 비활성화됩니다. 애플리케이션의 전송 이벤트를 수신하려면 사용 가능한 애플리케이션 이벤트 섹션을 참조하세요.

Amazon SNS에서 이 오류가 발생하면 플랫폼 애플리케이션에서 기한 경과 토큰을 제거하거나 업데이트해야 합니다.