푸시 알림 엔드포인트가 활성화되지 않는 이유는 무엇인가요?

3분 분량
0

Amazon SNS 엔드포인트(Android 또는 iOS 디바이스)에 푸시 알림을 보낼 때마다 엔드포인트가 비활성화됩니다.

간략한 설명

Amazon Simple Notification Service(SNS)는 모바일 디바이스에 푸시 알림 메시지를 전송할 수 있습니다. 이러한 메시지는 모바일 애플리케이션에 배지 업데이트, 사운드 알림 또는 메시지 알림으로 표시됩니다.

디바이스 토큰을 플랫폼 애플리케이션에 엔드포인트로 추가하면 해당 엔드포인트의 Enabled 값이 True로 설정됩니다. SNS가 알림을 게시하면 Apple Push Notification Service(APNs) 또는 Firebase Cloud Messaging(FCM)과 같은 푸시 알림 서비스에 연결됩니다. 그러면 푸시 알림 서비스가 메시지를 모바일 디바이스로 전송합니다.

푸시 알림 서비스가 모바일 디바이스와 통신할 수 없는 경우 메시지 전송 실패에 대한 피드백을 SNS에 보냅니다. 알림 서비스에서 엔드포인트가 유효하지 않다고 표시하면 SNS가 엔드포인트를 비활성화된 것으로 표시(Enabled 속성이 False로 설정됨)합니다. 엔드포인트가 비활성화되면 SNS가 엔드포인트에 대한 후속 게시 호출을 거부합니다. 자세한 내용은 GetEndpointAttributes를 참조하세요.

해결 방법

푸시 알림이 연결된 유효한 디바이스 토큰이 없는 엔드포인트로 전송되면 엔드포인트가 비활성화됩니다.

엔드포인트가 비활성화되는 이유

엔드포인트가 비활성화될 수 있는 일반적인 이유는 다음과 같습니다.

  • 최종 사용자가 디바이스에서 애플리케이션을 제거했습니다. 해당 SNS 엔드포인트에 게시하는 경우 엔드포인트가 비활성화됩니다.
  • 최종 사용자가 애플리케이션을 재설치했습니다. 이제 디바이스가 새 토큰을 받은 다음 이전 토큰을 유효하지 않은 것으로 렌더링합니다.
  • 최종 사용자가 디바이스의 운영 체제를 업그레이드했습니다. 이로 인해 기존 토큰이 업그레이드된 소프트웨어와 호환되지 않습니다. 애플리케이션에서 새 토큰을 요청해야 합니다.
  • 최종 사용자가 Apple의 App Store 또는 Google Play에서 애플리케이션을 업그레이드했습니다. 애플리케이션이 토큰을 업데이트할 수 있도록 최종 사용자가 아직 애플리케이션을 시작하지 않았습니다.
  • APN의 경우 푸시 Secure Socket Layer(SSL) 인증서가 유효하지 않거나 해당 환경(프로덕션 또는 샌드박스)과 일치하지 않습니다.
  • 최종 사용자가 백업에서 디바이스를 복원했습니다.
  • 토큰이 유효하지 않으며 디바이스에 설치된 애플리케이션에 속하지 않습니다.
  • 최종 사용자가 애플리케이션 데이터를 삭제하면 애플리케이션이 새 토큰을 받도록 트리거됩니다.

엔드포인트 활성화

APN의 경우 Apple 디바이스가 보안 인증의 만료, 유효하지 않음 또는 취소를 SNS에 알립니다. Apple 개발자 포털에서 상태를 확인하세요.

비활성화된 토큰 다시 활성화

비활성화된 엔드포인트를 활성화하지 마세요. SNS는 애플리케이션의 엔드포인트로 전송되는 모든 메시지가 실패할 것으로 판단하는 경우에만 애플리케이션을 비활성화합니다. 토큰이 유효한지 확인하고, 유효하지 않은 경우 먼저 setEndPointAttributes를 사용하여 업데이트합니다. 그런 다음 활성화합니다.

토큰을 업데이트하지 않고 엔드포인트를 다시 활성화하는 것은 동일한 토큰을 사용하여 디바이스에서 애플리케이션을 제거하고 다시 설치하는 경우에만 작동합니다.

엔드포인트를 생성 또는 활성화할 때 다음 가상 코드를 사용하세요.

Retrieve the latest device token from the mobile operating system
if (the platform endpoint ARN isn't stored)
  # this is a first-time registration
  call create platform endpoint
  store the returned platform endpoint ARN
endif

call get endpoint attributes on the platform endpoint ARN

if (you get a not-found exception while getting the attributes)
  # the platform endpoint was deleted
  call create platform endpoint with the latest device token
  store the returned platform endpoint ARN
else
  if (the device token in the endpoint does not match the latest one) or
      (get endpoint attributes shows the endpoint as disabled)
    call set endpoint attributes to set the latest device token and then enable the platform endpoint
  endif
endif

모바일 앱 이벤트모범 사례를 사용하여 생성, 업데이트, 삭제 또는 실패와 같은 플랫폼 엔드포인트 변경을 추적합니다. 이러한 이벤트에 대해 트리거된 알림을 통해 특정 이벤트가 발생할 때 애플리케이션에서 프로그래밍 작업을 수행할 수 있습니다.

플랫폼 엔드포인트의 속성을 변경하려면 SNS 플랫폼 애플리케이션에서 EventEndPointUpdated에 대한 SNS 주제 대상을 구성하세요. 이 예제에서는 구독자에게 전송된 EventEndPointUpdated의 페이로드를 보여줍니다.

{
"EndpointArn": "arn:aws:sns:us-east-1:<account_ID>:endpoint/GCM/TestApplication/bdf172d4-f9b4-3b76-bc0b-f2XXXXXXXXXX",
"EventType": "EndpointUpdated",
"Resource": "arn:aws:sns:us-east-1:<account_ID>:app/GCM/TestApplication",
"Service": "SNS",
"Time": "2023-07-05T13:04:40.058Z",
"Type": "EndpointUpdated"
}

관련 정보

푸시 플랫폼 애플리케이션이 비활성화되는 이유는 무엇인가요?

문제 해결

푸시 알림을 위해 Amazon SNS 주제 전송 로그에 액세스하려면 어떻게 해야 하나요?

Amazon SNS 또는 Amazon Pinpoint를 통해 APN 푸시 알림을 게시할 때 발생하는 “DeviceTokenNotforTopic” 오류를 해결하려면 어떻게 해야 하나요?

Amazon SNS에서 푸시 알림을 위한 Android 플랫폼 애플리케이션을 생성하려면 어떻게 해야 하나요?

AWS 공식
AWS 공식업데이트됨 9달 전