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

3분 분량
0

Apple Push Notification Service(APN) 모바일 푸시 알림이 Amazon Simple Notification Service(SNS) 또는 Amazon Pinpoint를 통해 전송되지 않습니다. 푸시 알림이 실패하면 APN에서 400/410 상태 코드와 함께 "DeviceTokenNotForTopic" 오류 메시지를 반환합니다. 이 오류가 나타나는 이유는 무엇이며 어떻게 해결하나요?

간략한 설명

Amazon SNS 플랫폼 애플리케이션을 생성하거나 Amazon Pinpoint APNs 채널을 구성할 때는 특정 번들 ID에 연결된 인증서/토큰이 필요합니다. 애플리케이션에서 해당 번들 ID로 디바이스 토큰을 생성합니다. 디바이스 엔드포인트에 메시지를 전송할 때 APNs는 이 디바이스 토큰에 대해 동일한 번들 ID를 기대합니다.

APN이 번들 ID가 다른 디바이스 토큰을 선택하면 400/410 상태 코드와 다음 오류가 반환됩니다. 이 오류가 발생하면 APNs는 연결된 플랫폼 엔드포인트를 비활성화하고 SNS에서 이 엔드포인트에 대해 “사용 안 함”상태를 표시합니다.

자세한 내용은 Amazon SNS 개발자 안내서의 사용자 알림 프로세스 개요Apple 인증 방법을 참조하세요. 또한 Apple Developer 웹사이트에서 APN의 알림 응답 처리를 참조하세요.

참고: 특정 애플리케이션 이벤트가 발생 시점에 대해 모바일 앱 이벤트 알림을 설정하여 해당 이벤트에 대해 프로그래밍 방식으로 작업을 수행할 수 있습니다. 예를 들어 플랫폼 엔드포인트가 비활성화될 때 이벤트 알림을 설정할 수 있습니다.

해결 방법

참고: AWS Command Line Interface(AWS CLI) 명령을 실행할 때 오류가 발생할 경우 최신 버전을 AWS CLI를 사용하고 있는지 확인하세요.

Amazon SNS 또는 Amazon Pinpoint를 사용하여 APN에 푸시 알림을 보낼 때 발생하는 오류를 해결하려면 다음을 수행합니다.

1.    우선 애플리케이션의 APN에 등록된 번들 ID를 확인합니다.

2.    APN에 등록된 번들 ID와 일치하도록 애플리케이션의 번들 ID를 업데이트하고, 새로운 디바이스 토큰을 생성합니다.

3.    그런 다음 새로 생성된 디바이스 토큰으로 플랫폼 엔드포인트를 업데이트합니다.

애플리케이션의 APN에 등록된 번들 ID를 확인합니다.

인증서 기반 인증

1.    Apple Developer 계정에 로그인합니다.

2.    왼쪽 탐색 모음에서 **인증서, ID 및 프로필(Certificates, IDs & Profiles)**을 선택합니다.

3.    왼쪽 탐색 모음에서 **식별자(Identifiers)**를 선택합니다.

4.    애플리케이션을 선택합니다.

참고: 애플리케이션이 인증서에 연결되어 있는지 확인하려면 **인증서(Certificates)**로 이동한 다음 이름(Name) 아래에서 번들 ID를 확인합니다.

5.    이름(Name) 필드에 있는 번들 ID를 복사합니다. 이것이 애플리케이션의 APN에 등록된 번들 ID입니다.

토큰 기반 인증

토큰 기반 인증의 경우 여러 번들 ID(애플리케이션)를 단일 토큰으로 매핑할 수 있습니다. 올바른 번들 ID를 사용하고 있는지 확인하려면 Apple Developer 계정 또는 SNS 콘솔에서 번들 ID를 확인합니다.

1.    Apple Developer 계정에 로그인합니다.

2.    왼쪽 탐색 모음에서 **인증서, ID 및 프로필(Certificates, IDs & Profiles)**을 선택합니다.

3.    왼쪽 탐색 모음에서 **식별자(Identifiers)**를 선택합니다. 그런 다음 **앱 ID(App IDs)**를 선택합니다.

4.    애플리케이션을 선택합니다.

5.    이름(Name) 필드에 있는 번들 ID를 복사합니다. 이것이 애플리케이션의 APN에 등록된 번들 ID입니다.

6.    SNS 콘솔에 로그인합니다.

7.    모바일(Mobile) 아래의 **푸시 알림(Push Notification)**으로 이동합니다.

8.    플랫폼 애플리케이션을 선택합니다.

9.    Apple 번들 ID가 올바른 번들 ID인지 확인합니다.

APN에 등록된 번들 ID와 일치하도록 애플리케이션의 번들 ID 업데이트

1.    아직 다운로드하지 않았다면 Xcode를 다운로드하세요.

2.    Xcode를 엽니다.

3.    애플리케이션의 루트 프로젝트 폴더를 선택합니다.

4.    **서명 및 기능(Signing & Capabilities)**을 선택합니다.

5.    번들 식별자(Bundle Identifier) 텍스트 필드에 애플리케이션의 APN에 등록된 번들 ID를 입력합니다. 새 번들 ID는 자동으로 저장됩니다.

6.    애플리케이션을 실행하여 올바른 번들 ID로 새 디바이스 토큰을 생성합니다.

플랫폼 엔드포인트 업데이트

Amazon SNS의 경우

1.    set-endpoint-attributes AWS CLI 명령을 실행합니다.

2.    Enabled 속성을 true로 변경합니다. 그런 다음 Token에 새로 생성된 디바이스 토큰을 지정합니다.

Amazon Pinpoint의 경우

1.    update-endpoint AWS CLI 명령을 실행합니다.

2.    Address 속성에 새로 생성된 디바이스 토큰을 지정합니다.

자세한 내용은 Amazon SNS 개발자 안내서의 플랫폼 엔드포인트 생성Amazon Pinpoint에 엔드포인트 추가를 참조하세요.


관련 정보

모바일 푸시 API 오류

댓글 없음