Firebase Cloud Messaging(FCM) 엔드포인트 관리 - Amazon Simple Notification Service

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

Firebase Cloud Messaging(FCM) 엔드포인트 관리

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

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

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

  2. 모든 오래된 토큰을 제거하고 해당 Amazon SNS 엔드포인트 를 삭제합니다ARNs.

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

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

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

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

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

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

의사(Pseudo) 코드

다음 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 엔드포인트로 전송되면 AmazonSNS은 다음 예외 중 하나를 수신합니다.

  • UNREGISTERED (HTTP 404) - Amazon이 이 예외를 SNS 수신하면 의 FailureType , 엔드포인트InvalidPlatformToken와 연결된 플랫폼 토큰FailureMessage의 가 유효한 가 아닌 전송 실패 이벤트를 받게 됩니다. 이 예외를 제외하고 전송에 실패하면 AmazonSNS은 플랫폼 엔드포인트를 비활성화합니다.

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

는 이러한 경우 중 하나에서 반환될 INVALID_ARGUMENT 수 있으므로 AmazonSNS은 FailureType 의 를 반환InvalidNotification하고 알림 본문FailureMessage의 는 유효하지 않습니다. 이 오류가 발생하면 페이로드가 올바른지 확인합니다. 올바른 경우 디바이스 토큰이 인지 확인합니다 up-to-date. 이 예외를 제외하고 AmazonSNS은 전송에 실패할 때 플랫폼 엔드포인트를 비활성화하지 않습니다.

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

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

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

오래된 토큰 제거

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

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