---
metadata:
  - name: generator
    content: Diplodoc Platform v5.54.4
alternate:
  - https://yandex.com/dev/games/doc/en/sdk/sdk-events.md
  - https://yandex.com/dev/games/doc/hi/sdk/sdk-events.md
  - https://yandex.com/dev/games/doc/ko/sdk/sdk-events.md
  - https://yandex.com/dev/games/doc/ru/sdk/sdk-events.md
  - https://yandex.com/dev/games/doc/tr/sdk/sdk-events.md
  - https://yandex.com/dev/games/doc/vi/sdk/sdk-events.md
  - https://yandex.com/dev/games/doc/zh/sdk/sdk-events.md
  - href: ko/sdk/sdk-events.md
    type: text/markdown
    title: Markdown version
  - href: ../llms.txt
    type: text/markdown
    title: llms.txt
---
> **Documentation Index:** Fetch the complete configuration index at https://yandex.com/dev/games/doc/ko/llms.txt

# 이벤트

## 게임 일시 중지 및 재개 이벤트 {#pause-resume}

`game_api_pause` 및 `game_api_resume` 이벤트를 사용하여 플랫폼은 게임을 일시 중지하거나 재개해야 함을 게임에 알립니다. 이 이벤트들은 당사 플랫폼과의 통합 과정을 단순화하고 모더레이션 요구사항([1.3](https://yandex.com/dev/games/doc/ko/concepts/requirements.md#1-3) 및 [4.7](https://yandex.com/dev/games/doc/ko/concepts/requirements.md#4-7)항목)을 준수하는 데 도움이 됩니다.

게임 일시 중지 및 재개 이벤트를 지원하는 게임은 외부 플랫폼에 추가로 배포될 수 있습니다.


### game_api_pause 및 game_api_resume 이벤트 {#pause-resume-events}

이 이벤트는 다음을 추적하는 데 도움이 됩니다:

- 전체 화면 또는 리워드 광고의 표시 및 닫기;
- 구매 창의 열기 및 닫기;
- 브라우저 탭 전환;
- 브라우저 창의 최소화 및 최대화.

이 이벤트는 [게임플레이 마크업 메서드](https://yandex.com/dev/games/doc/ko/sdk/sdk-game-events.md#gameplay)와 일치합니다. `game_api_pause`가 발생하면 `GameplayAPI.stop()` 메서드가 호출되고, `game_api_resume`가 발생하면 `GameplayAPI.start()`가 호출됩니다.

게임이 이미 `GameplayAPI.stop()` 메서드를 사용하여 중지된 상태였다면(예: 플레이어가 메뉴를 열었을 때) 그리고 그 후에 `game_api_pause` 이벤트가 발생하면, 이어지는 `game_api_resume` 이벤트에서는 `GameplayAPI.start()` 메서드가 호출되지 않습니다. 이를 통해 게임플레이 마크업의 논리를 깨트리지 않고 게임의 현재 상태를 유지할 수 있습니다.

이벤트 구독 및 구독 해제를 위해 Yandex Games SDK의 `on()` 및 `off()` 메서드를 사용하세요.

#### 예시 {#pause-resume-example}

{% list tabs %}

- game_api_pause

    ```javascript
    const pauseCallback = () => {
        pauseGame(); // 게임 루프와 음악을 멈추는 함수입니다.
        console.log('GAME PAUSED');
    };

    ysdk.on('game_api_pause', pauseCallback); // 'game_api_pause' 이벤트를 구독합니다.
    ysdk.off('game_api_pause', pauseCallback); // 'game_api_pause' 이벤트 구독을 취소합니다.
    ```

- game_api_resume

    ```javascript
    const resumeCallback = () => {
        resumeGame(); // 게임 루프와 음악을 다시 시작하는 함수입니다.
        console.log('GAME RESUMED');
    };

    ysdk.on('game_api_resume', resumeCallback ); // 'game_api_resume' 이벤트를 구독합니다.
    ysdk.off('game_api_resume', resumeCallback ); // 'game_api_resume' 이벤트 구독을 취소합니다.
    ```

{% endlist %}

&nbsp; {.empty}


### 게임 시작 시 전체 화면 광고 {#startup-fullscreen-ad}

{% note warning "경고" %}

플랫폼은 모든 게임 시작 시 자동으로 전체 화면 광고를 표시합니다.

{% endnote %}

[ysdk.adv.showFullscreenAdv()](https://yandex.com/dev/games/doc/ko/sdk/sdk-adv.md#full-screen-block)를 통해 게임이 호출하는 광고 블록과 달리, 시작 광고에는 직접적인 콜백 함수가 없습니다. 이를 올바르게 처리하려면 `game_api_pause` 및 `game_api_resume` 이벤트를 모니터링하세요:

1. `game_api_pause` 수신 시 게임 사운드를 끄고 게임플레이를 일시정지하세요.
2. `game_api_resume` 이벤트를 기다린 후 게임을 재개하세요.

사운드와 게임플레이가 즉시 시작되는 게임의 경우 이 작업이 특히 중요합니다.

#### 시작 광고 처리 예시 {#startup-ad-example}

```javascript
let gameStarted = false;
let isPaused = false;

// 게임 초기화 함수.
function initGame() {
    // 일시정지 및 재개 이벤트 구독.
    ysdk.on('game_api_pause', handlePause);
    ysdk.on('game_api_resume', handleResume);

    // 일시정지 상태가 아닌 경우 게임 시작.
    if (!isPaused) {
        startGame();
    }
}

function handlePause() {
    isPaused = true;
    // 사운드 및 게임플레이 중지.
    console.log('GAME PAUSED - waiting for resume');
}

function handleResume() {
    isPaused = false;

    // 게임이 아직 시작되지 않았다면 시작.
    if (!gameStarted) {
        startGame();
    } else {
        // 사운드 및 게임플레이 재개.
    }

    console.log('GAME RESUMED');
}

function startGame() {
    gameStarted = true;

    // 사운드 초기화.
    // 게임 루프 시작.
    console.log('GAME STARTED');
}

// 게임 초기화 실행.
initGame();
```



## 기타 이벤트 {#other-events}

사용자가 애플리케이션과 상호작용할 때 발생하는 다른 이벤트도 모니터링할 수 있습니다.

```typescript
enum ESdkEventName {
    EXIT = 'EXIT',
    HISTORY_BACK = 'HISTORY_BACK',
    ACCOUNT_SELECTION_DIALOG_OPENED = 'ACCOUNT_SELECTION_DIALOG_OPENED',
    ACCOUNT_SELECTION_DIALOG_CLOSED = 'ACCOUNT_SELECTION_DIALOG_CLOSED',
}

ysdk = {
    EVENTS: {
        EXIT: ESdkEventName.EXIT,
        HISTORY_BACK: ESdkEventName.HISTORY_BACK,
        ACCOUNT_SELECTION_DIALOG_OPENED: ESdkEventName.ACCOUNT_SELECTION_DIALOG_OPENED,
        ACCOUNT_SELECTION_DIALOG_CLOSED: ESdkEventName.ACCOUNT_SELECTION_DIALOG_CLOSED,
    },

    dispatchEvent(eventName: ESdkEventName, detail?: object): Promise<unknown> {},

    on(eventName: ESdkEventName, listener: Function): () => void {}
};
```


### HISTORY_BACK 이벤트 {#history-back}

{% note alert "알림" %}

이 이벤트는 게임이 TV에서 실행될 경우에만 사용할 수 있습니다.

{% endnote %}

**뒤로** 버튼 클릭을 추적하려면 다음 방법을 사용합니다.

```javascript
ysdk.on(ysdk.EVENTS.HISTORY_BACK, () => {
    // 사용자에게 사용자 지정 게임 대화 상자를 표시하여 게임 종료 확인 옵션
    // 게임 종료, 내부 설정, 상점 등으로 이동하는 것을 확인합니다
});
```


### EXIT 이벤트 {#exit}

사용자가 **뒤로**를 클릭한 후 열리는 사용자 지정 대화 상자에서 게임 종료를 확인하면 게임에서 종료 이벤트를 보내야 합니다. 이렇게 하려면 다음 방법을 사용합니다.

```javascript
ysdk.dispatchEvent(ysdk.EVENTS.EXIT);
```


### 게임 계정 선택 대화상자 {#account-selection-dialog}

플랫폼은 인증된 사용자와 비인증 사용자의 게임 진행 상황을 모두 저장합니다. 사용자는 먼저 인증 없이 플레이한 후 계정에 로그인할 수 있습니다. 이 경우 두 가지 다른 진행 상황이 생성됩니다: 하나는 로그인 상태, 다른 하나는 비로그인 상태입니다. 플랫폼은 사용자가 게임 시간, 마지막 로그인 날짜 등의 매개변수로 저장된 데이터를 비교하고 사용할 진행 상황을 선택할 수 있는 대화상자를 표시합니다.

플레이어 데이터를 자주 동기화하거나 게임 진행 상황을 자체 서버에 저장하는 경우, 대화상자에서 계정 선택 후 진행 상황 변경을 모니터링하세요.

SDK에는 이를 위한 두 가지 이벤트가 있습니다:

- `ACCOUNT_SELECTION_DIALOG_OPENED` — 대화상자 열림.
- `ACCOUNT_SELECTION_DIALOG_CLOSED` — 대화상자 닫힘.

대화상자가 열릴 때 플레이어 데이터의 정기적인 동기화를 일시중지할 수 있습니다. 대화상자가 닫힐 때 — 메인 메뉴로 이동하거나 게임을 다시 시작하고 플레이어 객체를 새로 요청하세요.

#### 예시 {#account-selection-dialog-example}

```javascript
// 계정 선택 대화상자 열림 이벤트 구독.
ysdk.on(ysdk.EVENTS.ACCOUNT_SELECTION_DIALOG_OPENED, () => {
    // 플레이어 데이터 동기화 일시중지.
});

// 계정 선택 대화상자 닫힘 이벤트 구독.
ysdk.on(ysdk.EVENTS.ACCOUNT_SELECTION_DIALOG_CLOSED, async () => {
    // 게임 메인 메뉴로 이동하거나 페이지 새로고침.
    // ...

    // 플레이어 데이터 재요청.
    const player = await ysdk.getPlayer();
    const data = await player.getData();
});
```



---

<!-- source: ko/_includes/concepts/troubleshooting/id-troubleshooting/support.md -->
{% note info "참고" %}

지원팀은 완성된 게임을 Yandex Games에 게시하는 데 도움을 드릴 수 있습니다. 개발이나 테스트에 대해 궁금한 점이 있다면, [Discord 채널](https://discord.com/invite/wU4p3whr4T)에서 질문해 주세요.

{% endnote %}


지원 서비스는 얀덱스 게임에서 완성 된 게임을 게시 할 수 있습니다. 개발 또는 테스트에 대한 질문이 있는 경우
<!-- endsource: ko/_includes/concepts/troubleshooting/id-troubleshooting/support.md -->

<!-- source: ko/_includes/button-fos.md -->
Yandex Games SDK 사용과 관련하여 문제가 발생하거나 질문이 있는 경우 다음 방법으로 지원팀에 문의하세요.


<a href="https://yandex.com/chat/#/user/a4fa5c06-75db-9b38-6eea-b1673785f7d5">
  <span class="button">채팅 상담</span>
</a>
<!-- endsource: ko/_includes/button-fos.md -->
