백그라운드 전환 시 사운드 중단 문제 관련 문의 (WebView)

안녕하세요. 유니티 엔진으로 개발한 게임을 WebView 형태로 배포하고 있는데 백그라운드 사운드 관련 문제로 문의드립니다.

현재 상황:

  • 앱이 백그라운드로 이동 시 사운드가 중단되는 현상 발생

  • 안드로이드: 백그라운드 이동 후 약 3초 뒤 사운드 종료

  • iOS: 백그라운드 이동 즉시 사운드 종료

시도한 해결방법: Web API의 visibilitychange 이벤트를 활용하여 구현했으나 문제가 지속되고 있습니다.

현재 어려움: 토스앱 내 앱인앱 형태로 구현되어 있어 직접적인 디버깅이 어려운 상황입니다. 심사 과정에서도 이 부분이 반려 사유로 지적되었습니다.

추가 조사 결과: 다른 유니티 기반 게임들을 확인해본 결과, 동일한 증상을 보이는 게임과 그렇지 않은 게임이 혼재되어 있는 상황입니다.

문의사항:

  1. 이 문제가 반드시 해결되어야 하는 필수 요구사항인지 확인하고 싶습니다.

  2. 해결이 필요하다면, 다른 유니티 게임들의 구현 사례를 참고한 가이드나 해결 방안이 있는지 궁금합니다.

참고를 위해 jslib 파일과 UnityCanvas.tsx 파일을 이미지로 첨부했습니다.

감사합니다.

안녕하세요 :slight_smile:
앱이 백그라운드로 전환되었을때 사운드를 중단시켜주셔야 해요.
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]);