본문으로 건너뛰기

버전 업데이트 내역

버전 업데이트 내역

이전 버전(0.0.1)의 SDK 가이드를 보셨던 분들은 이 섹션에서 변경사항을 확인하세요.


v0.2.0 (2026-06-24) — 현재 버전

새로운 기능

  1. 통합 리워드 슬롯 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 → 통합 리워드 슬롯
  2. 결제(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
  3. SystemInfo, AppBaseInfoservicePlatform 필드 추가: 게임이 어느 호스트 서비스('kakaotalk' / 'kakaopay' / 'house')에서 실행 중인지 식별합니다.

    const info = TudadaSDK.getSystemInfoSync();
    console.log(info.servicePlatform); // 'kakaotalk' | 'kakaopay' | 'house'

지원 종료 예정 (Deprecated)

  • createRewardedVideoAd (레거시) — wx 호환 레거시 인스턴스 API. 통합 API showRewardedAd() / 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)

새로운 기능

  1. 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
  2. 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
  3. 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 → 사용자 정보 자격증명
  4. 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.getUserInfo wx 호환 표면에서 getUserInfo 제거 — TudadaSDK.getUserInfo는 그대로 사용
    • 상세 가이드: Auth API → getUserInfo

v0.1.5 (2026-03-30)

새로운 기능

  1. 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)

새로운 기능

  1. 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)
  2. 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
  3. 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)

새로운 기능

  1. 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와 다른 독자 인터페이스 (예: startAccelerometerSensor vs wx.startAccelerometer)
    • XYZ 축 기반 가속도 데이터 수신
    • 민감도 기반 제어: 'sensitive' | 'normal' | 'insensitive'

v0.1.2 (2026-02-26)

새로운 기능

  1. SystemInfo, AppBaseInfoenvironment 필드 추가

    현재 접속 환경을 나타내는 필드가 추가되었습니다.

    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)

새로운 기능

  1. login() 응답에 userId 필드 추가

    TudadaSDK.login({
    success: (res) => {
    console.log(res.code); // 기존
    console.log(res.userId); // 새로 추가됨
    },
    });
  2. SystemInfo.wifiEnabled가 실제 값으로 변경

    이전에는 고정값이었으나, 이제 실제 Wi-Fi 활성화 상태를 반환합니다.

변경사항 (마이그레이션 필요)

  1. 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

새로운 기능

  1. 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)