티스토리 뷰
음악 자동재생 오류 발생!
리액트로 간단한 토이프로젝트를 하는데, 배경음 자동 재생이 막혀서 삽질하다가 쓰는 글이다. 결론부터 말하자면, 에러메세지를 제대로 안 읽는 내가 잘못했다.
Uncaught (in promise) DOMException: play() failed because the user didn't interact with the document first.
웹 사이트에 배경음악을 자동재생해놓고 크롬 브라우저에서 열면 다음과 같은 에러메세지가 나타난다. (정책상의 문제기 때문에 엣지 브라우저에선 되더라) 사용자가 문서(사이트)와 상호작용하지 않았기 때문에 play()가 실패했다는 말이다. 왜 이걸 제대로 읽지 않아서 몇시간을 허비한 것일까...
오류 발생 원인과 해결 방법
아무튼, Chrome의 자동 재생 정책은 다음과 같다. (구글 자동 번역의 힘을 빌렸다.)
- 음소거 된 자동 재생은 항상 허용됩니다.
- 다음과 같은 경우 소리와 함께 자동 재생이 허용됩니다.
- 사용자가 도메인과 상호작용했습니다 (클릭, 탭 등).
- 데스크톱에서 사용자의 미디어 참여 지수 임계 값이 초과되었습니다. 이는 사용자가 이전에 사운드가 있는 비디오를 재생했음을 의미합니다.
- 사용자가 모바일의 홈 화면에 사이트를 추가했거나 데스크톱에 PWA를 설치했습니다.
- 상단 프레임은 자동 재생 권한을 iframe에 위임하여 사운드와 함께 자동 재생을 허용 할 수 있습니다.
사이트를 보니 사용자 경험을 개선하기 위한 정책으로 보인다. 자세한 내용은 아래 사이트에 나와있다.
https://developers.google.com/web/updates/2017/09/autoplay-policy-changes
Autoplay Policy Changes | Web | Google Developers
Learn best practices for good user experiences with the new autoplay policies in Chrome, coming April 2018.
developers.google.com
나는 버튼을 누르면 재생되는 것으로 해결했다. (사용자가 도메인과 상용작용하는 조건 만족)

오늘의 교훈 : 에러 메세지는 꼼꼼히 읽자....
'코딩' 카테고리의 다른 글
CORS 에러가 발생하는 이유 (0) | 2022.01.13 |
---|
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- DevOps
- 키보드
- 네트워크
- 강의후기
- 삽질방시
- 삽질방지
- 타입스크립트
- TIL
- 키크론 v10
- 하우징 도색
- 앨리스배열
- 취미
- 팁
- 보안
- 토이프로젝트
- AWS
- 마크다운
- 웹퍼블리셔
- autoplay
- storybook
- 리덕스
- 정규표현식
- 리액트
- 개발일지
- 회고록
- 프로젝트
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
글 보관함