버전 업데이트 내역
버전 업데이트 내역
이전 버전(0.0.1)의 SDK 가이드를 보셨던 분들은 이 섹션에서 변경사항을 확인하세요.
v0.2.0 (2026-06-24) — 현재 버전
새로운 기능
-
통합 리워드 슬롯 API 추가: 보상형 비디오·배너·공유를 하나의 슬롯 모델로 통합했습니다. 활성 슬롯을 조회해 렌더링하고, 사용자 탭 시
showRewardedAd({ slotId })한 번으로 실행합니다.// 활성 슬롯 조회
const { slots } = await TudadaSDK.getRewardedAdSlotsAsync();
// 슬롯 실행 (action: REWARD_VIDEO / BANNER / SHARE 자동 디스패치)
const res = await TudadaSDK.showRewardedAdAsync({ slotId: slots[0].slotId });
if (res.isEnded) giveReward();- 신규:
getRewardedAdSlots()/getRewardedAdSlot(slotId)(+*Async) showRewardedAd()가slotId(슬롯) 또는adUnitId(비디오 폴백) 모두 수용- 상세 가이드: Ad API → 통합 리워드 슬롯
- 신규:
-
결제(Payment) API 추가: 게임 내 상품 구매 API가 추가되었습니다. 게임은
productId로만 구매하며, 결제 수단·가격·검증·지급은 플랫폼이 처리합니다.const products = await TudadaSDK.payment.getProductsAsync();
const txn = await TudadaSDK.payment.purchaseAsync('coin_100');
if (txn.status === 'GRANTED') { /* 지급 완료 — 최종 확정은 게임 서버에서 */ }- 콜백 버전
payment.getProducts()등(반환 void)과 Promise 버전getProductsAsync()등으로 분리 - 4종 모두
*Async제공:getProductsAsync/getProductAsync/purchaseAsync/getTransactionAsync - 에러는
code로 분기(콜백 버전fail,*Async버전 reject) - 상세 가이드: Payment API
- 콜백 버전
-
SystemInfo,AppBaseInfo에servicePlatform필드 추가: 게임이 어느 호스트 서비스('kakaotalk'/'kakaopay'/'house')에서 실행 중인지 식별합니다.const info = TudadaSDK.getSystemInfoSync();
console.log(info.servicePlatform); // 'kakaotalk' | 'kakaopay' | 'house'- 상세 가이드: System API
지원 종료 예정 (Deprecated)
createRewardedVideoAd(레거시) — wx 호환 레거시 인스턴스 API. 통합 APIshowRewardedAd()/showRewardedAdAsync()로 대체됐으며 다음 버전에서 제거될 예정입니다.- Banner Ad API (
getAvailableBannerIds/getBanner/runBannerAction+*Async) — 통합 리워드 슬롯으로 대체.getRewardedAdSlots()+showRewardedAd({ slotId })(action=BANNER)를 사용하세요. 호환을 위해 유지됩니다. shareForReward/shareForRewardAsync— 통합 리워드 슬롯으로 대체.showRewardedAd({ slotId })(action=SHARE)를 사용하세요. 호환을 위해 유지됩니다.
v0.1.6 (2026-05-12)
새로운 기능
-
Banner Ad API 추가 (슬롯 모델): 게임이 슬롯별로 배너 이미지를 받아 자체 렌더링하고, 사용자 탭 시 액션을 플랫폼에 위임하는 API가 추가되었습니다.
// 1) 활성 배너 슬롯 ID 목록
TudadaSDK.getAvailableBannerIds({
success: (res) => console.log('슬롯:', res.bannerIds),
});
// 2) 슬롯에 매칭되는 배너 데이터
TudadaSDK.getBanner({
bannerId: 'main_menu_top',
success: (res) => {
if (res.banner) renderBanner(res.banner.imageUrl);
},
});
// 3) 사용자 탭 시 액션 위임 (보상 지급은 게임 자체 처리)
TudadaSDK.runBannerAction({ bannerId: 'main_menu_top' });- 콜백/Promise 페어: 각 함수마다
*Async()버전 제공 bannerId는 게임이 정의한 슬롯 이름을 겸함runBannerAction은 success/fail 신호만 전달 (보상 지급은 게임이 자체 처리)- 상세 가이드: Ad API → Banner Ad
- 콜백/Promise 페어: 각 함수마다
-
TudadaSDK.gameAction액션 로깅 API 추가 (Phase 1): 게임 라이프사이클 액션을 fire-and-forget으로 플랫폼에 송신합니다.// 게임 시작
TudadaSDK.gameAction.start();
// 게임 클리어
TudadaSDK.gameAction.complete({ payload: { score: 1200, level: 5 } });
// 게임 종료 (사유)
TudadaSDK.gameAction.exit({ payload: { reason: 'USER_QUIT' } });start(option?)/complete(option)/exit(option)— 라이프사이클 액션 송신- SDK 초기화 완료 시 게임 로딩 완료 신호도 1회 자동 송신
- 호출은 fire-and-forget으로 처리되며, 다운스트림 라우팅은 플랫폼이 담당
- 상세 가이드: GameAction API
-
login()응답에 사용자 정보 자격증명 필드 추가게임 서버가 시크릿키만으로 자체 검증 가능한 서명된 사용자 정보 자격증명을
login()성공 응답에 포함합니다. 별도의 서버-to-서버 통신 없이 사용자 신원을 확인할 수 있습니다.TudadaSDK.login({
success: (res) => {
// 기존 필드 — 호환 유지
console.log(res.code, res.userId);
// 게임 서버 검증
sendToGameServer({
payload: res.userInfoPayload,
signature: res.userInfoSignature,
});
},
});userInfoPayload: URL-encoded query string (gameUserId, name, profileImageUrl, authDate, attribute 포함)userInfoSignature: payload에 대한 HMAC 서명- 기존 응답 시그니처(
code,userId,errMsg,errCode)는 그대로 보존되어 wx.login 호환 유지 - 상세 가이드: Auth API → 사용자 정보 자격증명
-
getUserInfo()응답을 Tudada-fit으로 reshape (Breaking change)getUserInfo()응답에서 wx 호환 4필드(encryptedData/iv/signature/rawData)를 제거하고, login과 동일한 자격증명(userInfoPayload/userInfoSignature)을 반환하도록 정리했습니다.withCredentials옵션도 함께 제거되었습니다.// before (v0.1.5)
TudadaSDK.getUserInfo({
withCredentials: true,
success: (res) => {
sendToServer(res.encryptedData, res.iv); // mock 응답이라 실 검증 불가
},
});
// after (v0.1.6)
TudadaSDK.getUserInfo({
success: (res) => {
console.log(res.userInfo.nickName);
sendToGameServer({
payload: res.userInfoPayload, // login과 동일 값
signature: res.userInfoSignature,
});
},
});wx.getUserInfowx 호환 표면에서getUserInfo제거 —TudadaSDK.getUserInfo는 그대로 사용- 상세 가이드: Auth API → getUserInfo
v0.1.5 (2026-03-30)
새로운 기능
-
shareForReward API 추가: 공유 완료 시 보상을 지급하는 API가 추가되었습니다.
TudadaSDK.shareForReward({
url: 'https://example.com/share', // 선택
success: (res) => {
if (res.rewarded) console.log('공유 완료 — 보상 지급');
},
fail: (err) => console.error('공유 실패:', err.errMsg),
});
// Promise 방식
const result = await TudadaSDK.shareForRewardAsync({ url: 'https://example.com/share' });
if (result.rewarded) console.log('보상 지급');shareForReward(): 콜백 패턴 (success/fail/complete)shareForRewardAsync(): Promise 패턴- 공유 처리는 플랫폼이 자동으로 수행
v0.1.4 (2026-03-18)
새로운 기능
-
showRewardedAd API 추가: 보상형 광고를 한 번의 호출로 로드부터 표시까지 처리합니다.
TudadaSDK.showRewardedAd({
adUnitId: 'your-ad-unit-id',
success: (res) => {
if (res.isEnded) console.log('시청 완료 — 보상 지급');
},
fail: (err) => console.error('광고 실패:', err.errMsg),
});
// Promise 방식
const result = await TudadaSDK.showRewardedAdAsync({ adUnitId: 'your-ad-unit-id' });showRewardedAd(): 콜백 패턴 (success/fail/complete) — 권장showRewardedAdAsync(): Promise 패턴- 광고 로드, 표시, 재시도, 로딩 UI, 실패 팝업을 플랫폼이 일괄 처리
createRewardedVideoAd는 레거시로 유지 (@deprecated)
-
CheckFeature API 추가: 특정 API가 현재 플랫폼에서 지원되는지 사전에 확인할 수 있습니다.
TudadaSDK.checkFeature({
apiName: 'startAccelerometerSensor',
success: (res) => console.log('지원됨:', res.apiName),
fail: (res) => console.log('미지원:', res.status),
});
// Promise 방식
const result = await TudadaSDK.checkFeatureAsync('startAccelerometerSensor');checkFeature(): 콜백 기반 — success(지원) / fail(미지원)checkFeatureAsync(): Promise 기반 — 지원/미지원 모두 resolve- 미지원 사유:
unknown_api|version_required|platform_unsupported|device_unsupported|permission_denied
-
LaunchOptions API 추가: 게임 실행 시 전달된 쿼리 파라미터 및 리퍼러 정보를 조회할 수 있습니다.
const options = TudadaSDK.getLaunchOptions();
console.log('쿼리:', options.query);getLaunchOptions(): 동기 — 프리캐시된 런치 옵션 반환getLaunchOptionsAsync(): 비동기 — 최신 런치 옵션 조회
변경
wx객체 레거시화 명문화:wx객체를 통한 API 호출은 기존 WeChat 이식 게임을 위한 레거시 호환 기능으로 공식 분류되었습니다.wx객체에는 v0.1.2까지 등록된 기존 API만 노출됩니다.- v0.1.3부터 추가되는 신규 API(가속도계,
checkFeature,getLaunchOptions등)는TudadaSDK전용이며wx객체에서 사용할 수 없습니다. - 이식 완료 후에는
TudadaSDK직접 호출로 점진적 전환을 권장합니다.
v0.1.3 (2026-02-26)
새로운 기능
-
Accelerometer API 추가: 가속도계 센서 플랫 API가 추가되었습니다. wx API(
wx.startAccelerometer등)와 호환되지 않는 TudadaSDK 독자 인터페이스로, API 이름과 파라미터 구조가 다릅니다.wx객체에서는 사용할 수 없으며TudadaSDK에서 직접 호출해야 합니다.TudadaSDK.onAccelerometerChange((res) => {
console.log(`X: ${res.x}, Y: ${res.y}, Z: ${res.z}`);
});
TudadaSDK.startAccelerometerSensor({
sensitivity: 'normal',
success: () => console.log('센싱 시작'),
});
TudadaSDK.stopAccelerometerSensor();startAccelerometerSensor(),stopAccelerometerSensor(),onAccelerometerChange(),offAccelerometerChange()- wx API와 다른 독자 인터페이스 (예:
startAccelerometerSensorvswx.startAccelerometer) - XYZ 축 기반 가속도 데이터 수신
- 민감도 기반 제어:
'sensitive'|'normal'|'insensitive'
v0.1.2 (2026-02-26)
새로운 기능
-
SystemInfo,AppBaseInfo에environment필드 추가현재 접속 환경을 나타내는 필드가 추가되었습니다.
const info = TudadaSDK.getSystemInfoSync();
console.log(info.environment); // 'prod' 또는 'dev'
const appInfo = TudadaSDK.getAppBaseInfo();
console.log(appInfo.environment); // 'prod' 또는 'dev'값 설명 'prod'프로덕션 환경 'dev'개발 환경 환경에 따라 리소스 CDN 주소를 분기하는 등의 용도로 활용할 수 있습니다.
const info = TudadaSDK.getSystemInfoSync();
const cdnBase = info.environment === 'prod'
? 'https://cdn.example.com/prod'
: 'https://cdn.example.com/dev';
v0.1.1 (2026-02-20)
- 내부 개선 사항 적용 (게임 코드 변경 불필요)
v0.1.0 (2026-02-06)
새로운 기능
-
login()응답에userId필드 추가TudadaSDK.login({
success: (res) => {
console.log(res.code); // 기존
console.log(res.userId); // 새로 추가됨
},
}); -
SystemInfo.wifiEnabled가 실제 값으로 변경이전에는 고정값이었으나, 이제 실제 Wi-Fi 활성화 상태를 반환합니다.
변경사항 (마이그레이션 필요)
-
checkSession()success 콜백 결과 타입 변경// 0.0.1 — success 콜백에 로그인 정보가 포함되었음
TudadaSDK.checkSession({
success: (res) => {
// res에 code, userId 등이 포함
},
});
// 0.1.0 이후 — success 콜백은 일반 결과만 포함
TudadaSDK.checkSession({
success: (res) => {
// res.errMsg만 포함 (GeneralCallbackResult)
// 로그인 정보가 필요하면 login()을 별도 호출
},
});
v0.0.2
새로운 기능
-
Audio API 추가:
createInnerAudioContext()메서드가 추가되었습니다.const audio = TudadaSDK.createInnerAudioContext();
audio.src = './bgm.mp3';
audio.loop = true;
audio.play();- 오디오 재생/일시정지/정지/탐색
- 볼륨 및 재생 속도 제어
- 다양한 이벤트 리스너 (onPlay, onEnded, onError 등)
v0.0.1 (2026-02-02) — 최초 릴리즈
최초 릴리즈 버전입니다. 다음 API가 포함되었습니다:
- Auth API (login, checkSession, getUserInfo)
- Storage API (set/get/remove/clear + Sync 버전)
- TudadaStore API (클라우드 스토리지)
- System API (getSystemInfo, getWindowInfo, getDeviceInfo 등)
- UI API (getMenuButtonBoundingClientRect)
- Device API (진동, 키보드)
- Clipboard API
- Ad API (보상형 비디오 광고)
- Lifecycle API (onShow, onHide, exitMiniProgram, restartMiniProgram)