문서에 적힌 대로 호출했는데 그런 함수가 없다고 나올 때가 있습니다.
앱스인토스 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 를 쓸 때마다 문서보다 이 파일을 먼저 열겠습니다. 틀린 곳을 찾는 시간보다 짧기 때문입니다.
문서를 버리라는 뜻은 아닙니다
문서에만 있는 것도 분명히 있습니다.
권한 정책, 심사 기준, 어떤 기능이 어느 앱 버전부터 되는지 같은 내용은 선언 파일에 없습니다.
그래서 이렇게 나눠 쓰는 쪽이 편합니다.
- 무엇을 할 수 있는가·해도 되는가 — 공식 문서를 봅니다.
- 어떻게 부르는가 — 선언 파일을 봅니다.
이 구분을 해 두면 "문서가 틀렸다"고 붙잡고 있는 시간이 사라집니다.
네 줄로 줄이면
- 문서 예시는 웹뷰 기준이라 리액트 네이티브에서는 이름이 다릅니다.
Storage만 양쪽이 같고, 위치·화면·사용자 키·카메라는 전부 함수형 이름으로 바뀝니다.isMinVersionSupported는 문자열이 아니라{ android, ios }객체를 받습니다.- 호출 방법의 정본은
@apps-in-toss/native-modules의index.d.ts입니다.
문서대로 했는데 안 되는 함수가 있다면, 선언 파일부터 열어 보시는 건 어떨까요?
그러면 오늘도 모두 스테이블 하세요.
만든 것들
'Coding, Testing, Challenge' 카테고리의 다른 글
| 토스 미니앱 공통 내비바가 안 뜰 때, 설정이 아니라 한 줄이 문제입니다 (0) | 2026.10.01 |
|---|---|
| 앱스인토스 빌드부터 출시까지, 빌드 명령이 두 개인 이유 (0) | 2026.09.30 |
| 앱스인토스 미니앱 개발 환경 세팅, 윈도우에서 막히는 네 곳 (0) | 2026.09.28 |
| API 키를 클라이언트에 두지 않는 법, 워커 한 대로 앱 50개를 가렸습니다 (0) | 2026.09.27 |
| 미니앱 광고, 배너광고에서 전면광고로 바꾸니 수익이 스무 배가 됐습니다 (0) | 2026.09.26 |