안녕하세요. 유니티 엔진으로 개발한 게임을 WebView 형태로 배포하고 있는데 백그라운드 사운드 관련 문제로 문의드립니다.
현재 상황:
시도한 해결방법: Web API의 visibilitychange 이벤트를 활용하여 구현했으나 문제가 지속되고 있습니다.
현재 어려움: 토스앱 내 앱인앱 형태로 구현되어 있어 직접적인 디버깅이 어려운 상황입니다. 심사 과정에서도 이 부분이 반려 사유로 지적되었습니다.
추가 조사 결과: 다른 유니티 기반 게임들을 확인해본 결과, 동일한 증상을 보이는 게임과 그렇지 않은 게임이 혼재되어 있는 상황입니다.
문의사항:
-
이 문제가 반드시 해결되어야 하는 필수 요구사항인지 확인하고 싶습니다.
-
해결이 필요하다면, 다른 유니티 게임들의 구현 사례를 참고한 가이드나 해결 방안이 있는지 궁금합니다.
참고를 위해 jslib 파일과 UnityCanvas.tsx 파일을 이미지로 첨부했습니다.
감사합니다.
Dylan
2
안녕하세요 
앱이 백그라운드로 전환되었을때 사운드를 중단시켜주셔야 해요.
visibilitychange 사용시, 안드로이드도 사이 텀 없이 바로 사운드가 종료가 되는 듯 합니다.
반려된 사유가 백그라운드 이동 후 3초뒤 사운드가 종료되어서일까요 ?
아래 테스트한 코드 공유드려요.
// 오디오 초기화
useEffect(() => {
const audioElement = new Audio('/bgm.mp3');
audioElement.loop = true;
setAudio(audioElement);
return () => {
audioElement.pause();
audioElement.currentTime = 0;
};
}, []);
// visibilitychange 이벤트 처리
useEffect(() => {
const handleVisibilityChange = async () => {
if (document.hidden) {
// 백그라운드로 이동
addVisibilityLog('앱이 백그라운드로 이동 - 오디오 정지');
if (audio && isPlaying) {
audio.pause();
}
} else {
// 포그라운드로 복귀
addVisibilityLog('앱이 포그라운드로 복귀 - 오디오 재생');
// 포그라운드로 돌아왔을 때 자동으로 재생
if (audio && isPlaying) {
try {
await audio.play();
} catch (error) {
addVisibilityLog(`오디오 재생 실패: ${error}`);
}
}
}
};
document.addEventListener('visibilitychange', handleVisibilityChange);
return () => {
document.removeEventListener('visibilitychange', handleVisibilityChange);
};
}, [audio, isPlaying]);