본문 바로가기

Coding, Testing, Challenge

앱스인토스 공식 문서대로 하면 안 되는 것, 정본은 .d.ts 입니다

문서 예시와 실제 API 이름이 다른 지점

문서에 적힌 대로 호출했는데 그런 함수가 없다고 나올 때가 있습니다.

앱스인토스 SDK 가 그렇습니다. 오타가 아니라 문서와 런타임이 다른 것입니다.

이번 포스팅에서는 어디가 다른지와, 무엇을 정본으로 봐야 하는지를 정리해 보도록 하겠습니다.

먼저 확인할 것

2026년 8월에 확인한 내용입니다. SDK 는 갱신되므로 지금도 같은지는 아래 방법으로 직접 보시는 편이 정확합니다.

여기서 말하는 차이는 리액트 네이티브 미니앱 기준입니다.

그러면 왜 이런 차이가 생기는지부터 보겠습니다.

문서 예시는 웹뷰 기준입니다

앱스인토스는 웹뷰 미니앱이 먼저 있었고, 리액트 네이티브 쪽이 나중에 왔습니다.

가이드의 예시 코드 상당수가 그때 것입니다.

웹뷰 쪽은 Device.getLocation() 처럼 객체에 묶인 메서드로 부릅니다.

리액트 네이티브 쪽은 모듈에서 함수를 꺼내 쓰는 형태입니다. 이름도 함께 바뀝니다.

// 문서 예시(웹뷰)
Device.getLocation();
Screen.setAwakeMode(true);
User.getAnonymousKey();
Device.openCamera();

// 리액트 네이티브에서 실제로 부르는 것
import { getCurrentLocation, setScreenAwakeMode,
         getAnonymousKey, openCamera } from '@apps-in-toss/framework';

이름이 비슷해서 더 헷갈립니다. getLocation 과 getCurrentLocation 은 한 단어 차이입니다.

예외가 하나 있습니다. Storage 는 양쪽 이름이 같습니다.

인자 모양이 다른 것도 있습니다

이름만 바뀌면 오히려 낫습니다. 빌드가 바로 깨지기 때문입니다.

조용히 틀리는 쪽이 더 곤란합니다. isMinVersionSupported 가 그렇습니다.

문서 예시는 문자열 하나를 넘기는데, 실제로는 플랫폼별 객체를 받습니다.

// 실제
isMinVersionSupported({ android: '5.180.0', ios: '5.180.0' });

문자열을 넘기면 타입에서 걸리지만, 자바스크립트로 쓰고 계시면 그냥 넘어갑니다. 그러면 버전 분기 전체가 의도와 다르게 동작합니다.

정본은 문서가 아니라 타입 선언 파일입니다

가장 확실한 방법은 설치된 패키지의 선언 파일을 직접 여는 것입니다.

node_modules/@apps-in-toss/native-modules/dist/index.d.ts

이 파일이 지금 이 버전에서 실제로 부를 수 있는 것의 목록입니다. 문서보다 항상 최신입니다.

이름이 기억나지 않을 때는 이렇게 훑습니다.

grep -n "export declare function" node_modules/@apps-in-toss/native-modules/dist/index.d.ts

에디터에서 import 한 이름을 따라 들어가셔도 같은 파일에 닿습니다.

저라면 새 API 를 쓸 때마다 문서보다 이 파일을 먼저 열겠습니다. 틀린 곳을 찾는 시간보다 짧기 때문입니다.

문서를 버리라는 뜻은 아닙니다

문서에만 있는 것도 분명히 있습니다.

권한 정책, 심사 기준, 어떤 기능이 어느 앱 버전부터 되는지 같은 내용은 선언 파일에 없습니다.

그래서 이렇게 나눠 쓰는 쪽이 편합니다.

  • 무엇을 할 수 있는가·해도 되는가 — 공식 문서를 봅니다.
  • 어떻게 부르는가 — 선언 파일을 봅니다.

이 구분을 해 두면 "문서가 틀렸다"고 붙잡고 있는 시간이 사라집니다.

네 줄로 줄이면

  1. 문서 예시는 웹뷰 기준이라 리액트 네이티브에서는 이름이 다릅니다.
  2. Storage 만 양쪽이 같고, 위치·화면·사용자 키·카메라는 전부 함수형 이름으로 바뀝니다.
  3. isMinVersionSupported 는 문자열이 아니라 { android, ios } 객체를 받습니다.
  4. 호출 방법의 정본은 @apps-in-toss/native-modules 의 index.d.ts 입니다.

문서대로 했는데 안 되는 함수가 있다면, 선언 파일부터 열어 보시는 건 어떨까요?

그러면 오늘도 모두 스테이블 하세요.


만든 것들