게임 액션과 보상 결과 처리
1. 일반 게임 액션 처리하기
섹션 제목: “1. 일반 게임 액션 처리하기”레벨 시작·완료 등 일반 이벤트에서 action()을 호출합니다. 결과는 handled, shown, skipped, failed 중 하나이며, 광고 없음·표시 실패·준비 중인 경우에도 게임을 계속 진행합니다. 보상 지급에는 아래 requestReward() 결과를 사용합니다.
2. 원래 보상 요청에서 지급하기
섹션 제목: “2. 원래 보상 요청에서 지급하기”- 게임 프로젝트의
assets/scripts/AdRewards.ts에 아래 함수를 작성합니다. Cocos2·Cocos3 ZIP에 포함된 공통GameActions타입을 사용합니다. - 컴포넌트를 사용한다면
component.attach()반환값을actions에 전달합니다. 보상 버튼에서component.requestReward('revive')를 직접 호출할 수도 있습니다. - 버튼의 동기 이벤트 처리기에서 보상 요청을 먼저 호출하고 반환된 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에서 처리합니다. 종료된 화면은 닫힌 상태로 유지하고, 다음 게임 실행에는 새 연결과 새 콜백을 사용합니다.