콘텐츠로 이동

게임 액션과 보상 결과 처리

레벨 시작·완료 등 일반 이벤트에서 action()을 호출합니다. 결과는 handled, shown, skipped, failed 중 하나이며, 광고 없음·표시 실패·준비 중인 경우에도 게임을 계속 진행합니다. 보상 지급에는 아래 requestReward() 결과를 사용합니다.

2. 원래 보상 요청에서 지급하기

섹션 제목: “2. 원래 보상 요청에서 지급하기”
  1. 게임 프로젝트의 assets/scripts/AdRewards.ts에 아래 함수를 작성합니다. Cocos2·Cocos3 ZIP에 포함된 공통 GameActions 타입을 사용합니다.
  2. 컴포넌트를 사용한다면 component.attach() 반환값을 actions에 전달합니다. 보상 버튼에서 component.requestReward('revive')를 직접 호출할 수도 있습니다.
  3. 버튼의 동기 이벤트 처리기에서 보상 요청을 먼저 호출하고 반환된 Promise를 기다립니다.
import type { GameActions } from '../EasterAd/types/platform';
export function requestRevive(
actions: GameActions,
applyRevive: () => void
) {
const request = actions.requestReward('revive'); // 버튼의 동기 호출 스택
return request.then(result => {
if (result.reward === 'granted') applyRevive();
return result;
});
}

원래 요청의 Promise 한곳에서 reward가 granted일 때만 보상을 1회 지급합니다. not_granted이면 보상 없이 게임을 계속 진행합니다.

결과의 reason이 session_unavailable이면 호스트 재연결 안내를 따릅니다. 표시 실패나 광고 없음이 반복되면 연동 문제를 확인합니다.

3. 종료한 게임의 결과 처리하기

섹션 제목: “3. 종료한 게임의 결과 처리하기”

진행 중인 보상 요청의 결과는 원래 Promise에서 처리합니다. 종료된 화면은 닫힌 상태로 유지하고, 다음 게임 실행에는 새 연결과 새 콜백을 사용합니다.