somn45 / mucketlist

React, Typescript, Spotify API를 이용해 좋아하는 장르의 곡을 지속적으로 추적, 몰랐던 명곡을 저장할 수 있는 APP
0 stars 0 forks source link

구글 자동 재생 정책 경고 메시지가 출력될 때 트랙 재생 시 소리가 나오지 않는 현상 발생 #11

Closed somn45 closed 1 year ago

somn45 commented 2 years ago

Player 컴포넌트가 랜더링 된 후에 종종 구글 자동 재생 정책과 관련된 경고 메시지가 출력됩니다. (항상 출력되지는 않습니다)

The AudioContext was not allowed to start. It must be resumed (or created) after a user gesture on the page.

좀 더 자세한 내용은 구글 자동재생 정책에서 확인할 수 있습니다. 내용을 살펴보자면 구글 크롬에서는 사용자의 심미보장(공포, 섬뜩함을 유발하는 영상의 자동 재생을 막기 위함)을 위해 영상이나 음악의 자동 재생을 막는다는 내용입니다. 다만 모든 자동 재생을 막는 것은 아니며 다음과 같은 조건이라면 자동 재생을 허용한다고 합니다.

mucketlist 앱에서 트랙의 재생은 play 버튼을 클릭하거나 트랙의 재생이 끝나고 다음 트랙으로 넘어갈 때 재생되는 구조입니다. 이 구조라면 자동 재생 정책의 두번째 조건 덕분에 문제가 없는 줄 알았는데 종종 음소거 된 채로 트랙이 재생된다는 점입니다. 어떠한 원인이 구글에서 자동 재생인 걸로 보이는 것 같은데 이 원인이 무엇인지 잘 모르겠습니다. 일시적인 해결 방법으로 재생 중인 트랙을 pause 후 다시 재생(resume)하면 정상적으로 트랙이 재생됩니다. 다만 이는 사용자의 불편을 야기할 수 있기 때문에 저는 좀 더 근본적인 해결책을 찾고 싶습니다. 도저히 해결 방법이 없을 경우에만 사용자에게 해결 메시지를 띄워서 해결할 수 있게 하고 자동 재생 정책 위반의 원인을 찾아보겠습니다.

somn45 commented 1 year ago

자동 재생이 비활성화 된 브라우저에서도 구글의 자동 재생 정책에 의해 플레이어를 일시정지 시킵니다. 이를 해결하기 위해 Spotify에서는 player.activateElement 함수를 제공합니다. 재생 함수 앞에 player.activateElement 함수를 넣어야 플레이어가 정상적으로 작동됩니다.