Skip to content
이 내용이 도움이 되었나요?

화면 가시성 처리

앱인토스 미니앱은 토스 앱 내에서 실행돼요. 사용자가 다른 화면으로 이동하거나 앱을 백그라운드로 보내면 미니앱이 보이지 않는 상태가 돼요.

AITVisibilityHelper는 브라우저의 document.visibilitychange 이벤트를 Unity에서 사용할 수 있도록 제공하는 헬퍼예요. 미니앱이 화면에서 보이거나 사라질 때 오디오 제어, 게임 일시정지 등의 처리를 할 수 있어요.


API

현재 가시성 상태 확인

csharp
bool isVisible = AITVisibilityHelper.IsVisible;
  • true: 미니앱이 화면에 보이는 상태
  • false: 미니앱이 백그라운드이거나 다른 화면에 가려진 상태

가시성 변경 이벤트 구독

csharp
AITVisibilityHelper.OnVisibilityChanged += (bool isVisible) => {
    // isVisible: true(포그라운드) / false(백그라운드)
};

사용 예제

오디오 일시정지 / 재개

미니앱이 백그라운드로 전환되면 오디오를 일시정지하고, 다시 돌아오면 재개하는 예제예요.

csharp
using AppsInToss;
using UnityEngine;

public class AudioController : MonoBehaviour
{
    [SerializeField] private AudioSource audioSource;

    void OnEnable()
    {
        AITVisibilityHelper.OnVisibilityChanged += HandleVisibilityChanged;
    }

    void OnDisable()
    {
        AITVisibilityHelper.OnVisibilityChanged -= HandleVisibilityChanged;
    }

    private void HandleVisibilityChanged(bool isVisible)
    {
        if (isVisible)
            audioSource.UnPause();
        else
            audioSource.Pause();
    }
}

게임 일시정지

화면이 보이지 않을 때 게임을 일시정지하는 예제예요.

csharp
using AppsInToss;
using UnityEngine;

public class GamePauseController : MonoBehaviour
{
    void OnEnable()
    {
        AITVisibilityHelper.OnVisibilityChanged += HandleVisibilityChanged;
    }

    void OnDisable()
    {
        AITVisibilityHelper.OnVisibilityChanged -= HandleVisibilityChanged;
    }

    private void HandleVisibilityChanged(bool isVisible)
    {
        Time.timeScale = isVisible ? 1f : 0f;
    }
}

주의사항

  • AITVisibilityHelper는 WebGL 빌드에서만 실제로 동작해요. Unity Editor에서는 항상 IsVisible = true를 반환해요.
  • 이벤트 구독 후 OnDisable에서 반드시 해제해 주세요. 해제하지 않으면 오브젝트가 파괴된 후에도 콜백이 호출될 수 있어요.