기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
모바일 알림을 위한 Amazon SNS 플랫폼 엔드포인트 설정
앱과 모바일 디바이스가 푸시 알림 서비스에 등록되면 푸시 알림 서비스는 디바이스 토큰을 반환합니다. Amazon은 디바이스 토큰을 SNS 사용하여 직접 푸시 알림 메시지를 보낼 수 있는 모바일 엔드포인트를 생성합니다. 자세한 내용은 Amazon SNS 사용자 알림을 위한 사전 조건 및 Amazon을 사용하여 푸시 알림 설정 SNS 단원을 참조하세요.
이 섹션에서는 플랫폼 엔드포인트를 생성할 때 권장되는 방법에 대해 설명합니다.
플랫폼 엔드포인트 생성
Amazon 를 사용하여 앱에 알림을 푸시하려면 먼저 플랫폼 엔드포인트 생성 작업을 호출SNS하여 SNS해당 앱의 디바이스 토큰을 Amazon에 등록해야 합니다. 이 작업은 플랫폼 애플리케이션의 Amazon 리소스 이름(ARN)과 디바이스 토큰을 파라미터로 사용하고 생성된 플랫폼 엔드포인트ARN의 를 반환합니다.
CreatePlatformEndpoint
작업은 다음을 수행합니다.
-
플랫폼 엔드포인트가 이미 있는 경우 다시 생성하지 마세요. 호출자에게 기존 플랫폼 엔드포인트ARN의 를 반환합니다.
-
디바이스 토큰은 동일하지만 설정이 다른 플랫폼 엔드포인트가 이미 있는 경우 다시 생성하지 마세요. 호출자에 예외를 발생시키십시오.
-
플랫폼 엔드포인트가 없는 경우 생성합니다. 새로 생성된 플랫폼 엔드포인트ARN의 를 호출자에게 반환합니다.
앱이 시작할 때마다 바로 플랫폼 엔드포인트 생성 작업을 호출해서는 안 됩니다. 이 방법이 항상 작동하는 엔드포인트를 제공하는 것은 아니기 때문입니다. 이러한 상황은 예를 들면 같은 디바이스에서 앱을 제거했다가 다시 설치하고, 이에 대한 엔드포인트가 이미 있지만 비활성화된 경우에 발생할 수 있습니다. 성공적으로 등록하면 다음과 같은 결과를 얻을 수 있어야 합니다.
-
이 앱-디바이스 조합에 대해 플랫폼 엔드포인트가 있는지 확인합니다.
-
플랫폼 엔드포인트의 디바이스 토큰이 유효한 최신 디바이스 토큰인지 확인합니다.
-
플랫폼 엔드포인트가 활성화되어 있고 사용할 준비가 되어 있는지 확인합니다.
의사(Pseudo) 코드
다음 의사(pseudo) 코드는 다양한 시작 조건에서 작동하고 활성화된 현재 플랫폼 엔드포인트를 생성하는 데 권장되는 사례를 설명합니다. 이 방법은 앱을 처음 등록하는지 아닌지, 이 앱의 플랫폼 엔드포인트가 이미 있는지, 플랫폼 엔드포인트가 활성화되어 있는지, 올바른 디바이스 토큰이 있는지 여부에 상관없이 효과가 있습니다. 연이어 여러 번 호출해도 중복 플랫폼 엔드포인트가 생성되거나, 이미 최신 상태이고 활성화된 경우에 기존 플랫폼 엔드포인트가 변경되지 않으므로 무관합니다.
retrieve the latest device token from the mobile operating system if (the platform endpoint ARN is not 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 (while getting the attributes a not-found exception is thrown) # 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 (
GetEndpointAttributes
shows the endpoint as disabled) call set endpoint attributes to set the latest device token and then enable the platform endpoint endif endif
이 방법은 앱에서 자체적으로 등록하거나 다시 등록하려 할 때마다 사용할 수 있습니다. Amazon에 SNS 디바이스 토큰 변경을 알릴 때도 사용할 수 있습니다. 이 경우 최신 디바이스 토큰 값으로 작업을 호출하면 됩니다. 이 방법에 대해 유의해야 할 몇 가지 사항은 다음과 같습니다.
-
플랫폼 엔드포인트 생성 작업을 호출할 수도 있는 두 가지 경우가 있습니다. 처음 등록하는 동안ARN처럼 앱이 자체 플랫폼 엔드포인트를 알지 못하는 경우 처음 호출할 수 있습니다. 애플리케이션이 엔드포인트를 알고 ARN 있지만 삭제된 경우와 마찬가지로 초기
GetEndpointAttributes
작업 호출이 찾을 수 없는 예외로 실패하는 경우에도 호출됩니다. -
플랫폼 엔드포인트가 방금 생성된 경우에도 플랫폼 엔드포인트의 상태를 확인하기 위해
GetEndpointAttributes
작업을 호출합니다. 이러한 상황은 플랫폼 엔드포인트가 이미 있지만 비활성화되어 있는 경우에 발생합니다. 이 경우 플랫폼 엔드포인트 생성 작업이 성공하지만 플랫폼 엔드포인트가 활성화되지 않기 때문에 성공을 반환하기 전에 플랫폼 엔드포인트의 상태를 다시 한 번 확인해야 합니다.
AWS SDK 예제
다음 코드는 에서 제공하는 Amazon SNS 클라이언트를 사용하여 이전 의사 코드를 구현하는 방법을 보여줍니다 AWS SDKs.
를 사용하려면 자격 증명으로 구성 AWS SDK해야 합니다. 자세한 내용은 및 AWS SDKs 도구 참조 가이드의 공유 구성 및 보안 인증 파일을 참조하세요.
자세한 내용은 모바일 푸시 API 작업 단원을 참조하십시오.
문제 해결
오래된 디바이스 토큰으로 플랫폼 엔드포인트 생성 반복 호출
특히 FCM 엔드포인트의 경우 애플리케이션이 발급된 첫 번째 디바이스 토큰을 저장한 다음 애플리케이션 시작 시 매번 해당 디바이스 토큰으로 플랫폼 생성 엔드포인트를 호출하는 것이 가장 좋다고 생각할 수 있습니다. 이는 앱이 디바이스 토큰의 상태를 관리할 필요가 없게 하고 AmazonSNS이 디바이스 토큰을 최신 값으로 자동으로 업데이트하므로 정답으로 보일 수 있습니다. 하지만 이 해결 방법에는 여러 가지 심각한 문제가 있습니다.
-
AmazonSNS은 의 피드백에 의존FCM하여 만료된 디바이스 토큰을 새 디바이스 토큰으로 업데이트합니다. FCM 는 오래된 디바이스 토큰에 대한 정보를 한동안 보관하지만 무기한 보관하지는 않습니다. 가 이전 디바이스 토큰과 새 디바이스 토큰 간의 연결을 FCM잊어버리면 AmazonSNS은 더 이상 플랫폼 엔드포인트에 저장된 디바이스 토큰을 올바른 값으로 업데이트할 수 없으며 대신 플랫폼 엔드포인트를 비활성화합니다.
-
플랫폼 애플리케이션에는 동일한 디바이스 토큰에 해당하는 여러 플랫폼 엔드포인트가 포함되어 있습니다.
-
Amazon은 동일한 디바이스 토큰으로 시작하여 생성할 수 있는 플랫폼 엔드포인트 수에 할당량을 SNS 적용합니다. 결국 유효하지 않은 파라미터 예외 및 "이 엔드포인트가 이미 다른 토큰으로 등록되었습니다." 오류 메시지와 함께 새 엔드포인트 생성이 실패합니다.
FCM 엔드포인트 관리에 대한 자세한 내용은 섹션을 참조하세요Firebase Cloud Messaging 엔드포인트의 Amazon SNS 관리.
유효하지 않은 디바이스 토큰과 연결된 플랫폼 엔드포인트 다시 활성화
모바일 플랫폼(예: APNs 또는 FCM)이 게시 요청에 사용된 디바이스 토큰이 유효하지 SNS 않다고 Amazon에 알리면 Amazon은 해당 디바이스 토큰과 연결된 플랫폼 엔드포인트를 SNS 비활성화합니다. 그런 다음 AmazonSNS은 해당 디바이스 토큰에 대한 후속 게시를 거부합니다. 플랫폼 엔드포인트를 다시 활성화하고 계속 게시하는 것이 최선이라고 생각할지도 모르겠지만, 대부분의 경우에서 이렇게 하면 아무 효과가 없습니다. 즉, 게시되는 메시지가 전송되지 않고 플랫폼 엔드포인트가 이후에 곧 다시 비활성화됩니다.
플랫폼 엔드포인트와 연결된 디바이스 토큰이 실제로 유효하지 않기 때문입니다. 더 이상 설치된 앱에 해당하지 않기 때문에 여기에 전송해도 실패하는 것입니다. 다음에 게시할 때 모바일 플랫폼은 디바이스 토큰이 유효하지 SNS 않음을 Amazon에 다시 알리고 AmazonSNS은 플랫폼 엔드포인트를 다시 비활성화합니다.
비활성화된 플랫폼 엔드포인트를 다시 활성화하려면 설정된 엔드포인트 속성 작업 호출과 함께 유효한 디바이스 토큰과 연결한 후에 활성화해야 합니다. 그래야만 해당 플랫폼 엔드포인트에 전송해도 성공할 수 있습니다. 해당 장치 토큰을 업데이트하지 않고 플랫폼 엔드포인트를 다시 활성화해도 효과가 있는 유일한 경우는 해당 엔드포인트와 연결된 장치 토큰이 이전에는 유효하지 않았다가 다시 유효해진 경우입니다. 이러한 상황은 예를 들면 같은 모바일 디바이스에서 앱을 제거했다가 다시 설치하고, 같은 디바이스 토큰을 받을 경우에 발생할 수 있습니다. 위에 소개한 방법은 이와 같이 연결된 디바이스 토큰이 제공되는 가장 최신 디바이스 토큰임을 확인한 후에만 플랫폼 엔드포인트를 다시 활성화하도록 합니다.