웹 푸시에 문제가 발생하면 문제를 디버그하기 어렵거나 도움말 찾기 이 문서에서는 몇 가지 일반적인 문제와 Chrome이나 Firefox에서 버그를 발견한 경우 시도해 보세요.
푸시 디버깅에 대해 알아보기 전에 디버깅에 문제가 있을 수 있습니다. 파일이 업데이트되지 않거나, 등록 실패 또는 일반적으로 특이한 행동입니다. 이 서비스 워커 디버깅에 관한 유용한 문서 YouTube Music을 처음 사용하시는 경우 사용할 수 있습니다
웹 푸시 개발 및 테스트 시 확인해야 할 두 가지 별도의 단계가 있습니다. 각각 고유한 일반적인 문제 / 문제:
- 메시지 전송: 메시지 전송이 성공했는지 확인합니다.
201 HTTP 코드가 표시됩니다. 그렇지 않은 경우 다음 단계를 따르세요.
<ph type="x-smartling-placeholder">
- </ph>
- 승인 오류 확인: 승인을 받은 경우 오류 메시지( 승인 문제 섹션.
- 기타 API 오류: 201이 아닌 상태 코드 응답을 받으면 자세한 내용은 HTTP 상태 코드 섹션을 문제의 원인에 대한 안내를 제공합니다.
- 메시지 수신: 메시지를 보낼 수 있으면
메시지가 브라우저에서 수신되지 않습니다.
<ph type="x-smartling-placeholder">
- </ph>
- 암호화 문제 확인: 페이로드 암호화 문제 섹션.
- 연결 문제 확인: 문제가 Chrome에 있는 경우 연결일 수도 있습니다 연결 문제 섹션을 참고하세요. 를 참조하세요.
푸시 메시지와 관련 섹션을 주고받을 수 없는 경우 문제를 디버그하는 데 도움이 되지 않는 경우 푸시 메커니즘 자체에 버그가 있을 수 있습니다. 이 경우 버그 신고 올리기 섹션을 만들어서 필요한 모든 정보가 포함된 좋은 버그 신고를 제출함으로써 버그 수정 프로세스를 수행할 수 있습니다
시작하기 전에 한 가지 말씀드리고 싶은 것은 Firefox와 Mozilla AutoPush Service에는 유용한 오류 메시지가 있습니다. 문제가 발생하여 문제가 무엇인지 확실하지 않은 경우 Firefox에서 테스트하여 더 유용한 오류 메시지가 표시됩니다.
승인 문제
승인 문제는 개발자가 코드를 작성할 때 발생하는 가장 일반적인 문제 중 하나입니다. 웹 푸시부터 살펴보겠습니다 이것은 일반적으로 사이트의 애플리케이션 서버 키 (VAPID 키) 를 참고하세요.
Firefox와 Chrome 모두에서 푸시를 지원하는 가장 쉬운 방법은
subscribe()
호출의 applicationServerKey
단점은
프런트 엔드와 서버 키가 일치하지 않으면
인증 오류가 발생했습니다.
Chrome 및 FCM
FCM을 푸시 서비스로 사용하는 Chrome의 경우
다양한 범위의 FCM에서 보낸 UnauthorizedRegistration
응답
모두 애플리케이션 서버 키와 관련이 있습니다.
다음 중 하나에서 UnauthorizedRegistration
오류가 발생합니다.
상황:
- FCM에 보내는 요청에서
Authorization
헤더를 정의하지 못한 경우 - 사용자 구독에 사용된 애플리케이션 키가 사용된 키와 일치하지 않습니다. 승인 헤더에 서명합니다.
- JWT에서 만료 시간이 잘못되었습니다.즉, 만료 시간이 24시간을 초과합니다. JWT가 만료되었습니다.
- JWT의 형식이 잘못되었거나 잘못된 값이 있습니다.
전체 오류 응답은 다음과 같습니다.
<html>
<head>
<title>UnauthorizedRegistration</title>
</head>
<body bgcolor="#FFFFFF" text="#000000">
<h1>UnauthorizedRegistration</h1>
<h2>Error 400</h2>
</body>
</html>
Chrome에서 이 오류 메시지가 나타나면 Firefox에서 테스트하여 문제를 더 잘 파악할 수 있습니다
Firefox 및 Mozilla 자동 푸시
Firefox와 Mozilla AutoPush 는
문제 Authorization
개.
또한 다음 주소에서 Unauthorized
오류 응답을 받게 됩니다.
푸시에 Authorization
헤더가 포함되지 않은 경우 Mozilla 자동 푸시
합니다.
{
"errno": 109,
"message": "Request did not validate missing authorization header",
"code": 401,
"more_info": "http://autopush.readthedocs.io/en/latest/http.html#error-codes",
"error": "Unauthorized"
}
JWT의 만료일이 만료된 경우
Unauthorized
오류(토큰이 다음과 같다는 설명 메시지 포함)
만료되었습니다.
{
"code": 401,
"errno": 109,
"error": "Unauthorized",
"more_info": "http://autopush.readthedocs.io/en/latest/http.html#error-codes",
"message": "Request did not validate Invalid bearer token: Auth expired"
}
사용자가 사이트에 있었던 시점과 애플리케이션 서버 키가 다른 경우
승인 헤더가 서명되면 Not Found
오류가 반환됩니다.
{
"errno": 102,
"message": "Request did not validate invalid token",
"code": 404,
"more_info": "http://autopush.readthedocs.io/en/latest/http.html#error-codes",
"error": "Not Found"
}
마지막으로 JWT에 잘못된 값이 있는 경우 (예: 'alg' 값이 가 예상치 못한 값인 경우) Mozilla에서 다음과 같은 오류가 표시됩니다. 자동 푸시:
{
"code": 401,
"errno": 109,
"error": "Unauthorized",
"more_info": "http://autopush.readthedocs.io/en/latest/http.html#error-codes",
"message": "Request did not validate Invalid Authorization Header"
}
HTTP 상태 코드
Push Service를 사용하면 됩니다 다음은 HTTP 상태 코드 목록과 각 코드의 의미입니다. 웹 푸시입니다
상태 코드 | 설명 |
---|---|
429 | 요청이 너무 많습니다. 애플리케이션 서버가 비율 제한에 도달했습니다. Push Service를 사용하면 됩니다 서비스의 응답에는 'Retry-After'가 포함되어야 합니다. 헤더를 다른 요청을 할 수 있기까지 걸리는 시간을 나타냅니다. |
400 | 요청이 잘못되었습니다. 헤더 중 하나가 잘못되었거나 형식이 잘못되었습니다. |
404 | 찾을 수 없음 이 경우 구독정보에서 PushSubscription를 사용자를 다시 구독할 수 있는 기회를 기다립니다. |
410 | 사라졌다. 구독이 더 이상 유효하지 않으므로 다음에서 삭제해야 합니다. 있습니다 이는 구독에서 `unsubscribe()` 를 호출하여 재현할 수 있습니다. `PushSubscription`. |
413 | 페이로드 크기가 너무 큽니다. 푸시 서비스가 필요로 하는 최소 크기 페이로드 4,096바이트 (또는 4KB)입니다. 이보다 크면 이 오류가 발생할 수 있습니다. |
HTTP 상태 코드가 이 목록에 없고 오류 메시지가 웹 푸시 프로토콜 사양을 검토하여 상태 코드는 해당 상태 코드가 사용됩니다.
페이로드 암호화 문제
푸시 메시지 (즉, 웹으로 메시지 전송)를 트리거할 수 있는 경우 201 응답 코드를 수신)하지만 푸시 이벤트가 실행되지 않습니다. 이는 일반적으로 브라우저가 암호화합니다.
이 경우 Firefox의 DevTools에 오류 메시지가 표시됩니다. 다음과 같습니다.
Chrome에서 이 문제인지 확인하려면 다음 단계를 따르세요.
- about://gcm-internals로 이동하여 '녹화 시작'을 클릭합니다. 버튼을 클릭합니다.
- 푸시 메시지를 트리거하고 '메시지 복호화 실패 로그'를 확인합니다.
페이로드의 복호화에 문제가 있으면
유사한 방식으로 작동합니다. AES-GCM decryption failed
메시지가 표시됩니다.)
이러한 문제가 발생한 경우 암호화를 디버그하는 데 도움이 되는 몇 가지 도구가 있습니다.
연결 문제
서비스 워커에서 푸시 이벤트를 수신하지 않고 문제가 있는 경우 브라우저가 서버에 연결되지 않았을 수 있습니다. 액세스할 수 있습니다
Chrome에서는
'메시지 수신 로그' about://gcm-internals
로 된 (sic)입니다.
메시지가 제때 도착하지 않는 경우
브라우저의 연결 상태가 CONNECTED
입니다.
'연결됨'이 아닌 경우 현재 프로필을 삭제하고 새 계정을 만듭니다. 만약 그래도 문제가 해결되지 않으면 아래에 제안된 대로 버그 신고를 제출해 주세요.
버그 신고 제출
위의 방법으로 문제가 해결되지 않고 사용 중인 브라우저에 문제를 제기해 주세요. 관련 문제:
Chrome의 경우 여기에서 문제를 제기할 수 있습니다. https://bugs.chromium.org/p/chromium/issues/list Firefox의 경우 다음에서 문제를 제기해야 합니다. https://bugzilla.mozilla.org/
좋은 버그 신고를 제공하려면 다음 세부정보를 제공해야 합니다.
- 테스트한 브라우저 (예: Chrome 버전 50, Chrome 버전 51, Firefox) 버전 50, Firefox 버전 51).
- 문제를 보여주는
PushSubscription
의 예입니다. - 예시 요청 포함 (푸시에 대한 네트워크 요청의 내용 서비스(헤더 포함)를 사용합니다.
- 네트워크 요청의 응답 예시도 포함합니다.
재현 가능한 예시(소스 코드 또는 호스팅된 웹)를 제공할 수 있는 경우 문제를 진단하고 해결하는 데 도움이 되는 경우가 많습니다.
다음에 수행할 작업
- 웹 푸시 알림 개요
- 푸시 작동 방식
- 사용자 구독
- 권한 UX
- 웹 푸시 라이브러리를 사용하여 메시지 보내기
- 웹 푸시 프로토콜
- 푸시 이벤트 처리
- 알림 표시
- 알림 동작
- 일반 알림 패턴
- 푸시 알림 FAQ
- 일반적인 문제 및 버그 신고