본문으로 건너뛰기

소개

웹 서비스를 네이티브 앱으로 전환할 때, 단 3줄의 코드로 네이티브 기능을 호출할 수 있습니다.

Appify SDK는 React Native WebView 환경에서 웹 코드가 카메라, GPS, 소셜 로그인 등 네이티브 기능을 직접 호출할 수 있게 해주는 WebView 브릿지 SDK입니다. 기존 웹 서비스 코드를 그대로 유지하면서 네이티브 앱 기능을 점진적으로 추가할 수 있습니다.

무엇을 할 수 있나요

Appify SDK를 사용하면 웹 코드에서 다음 네이티브 기능을 호출할 수 있습니다.

  • 카카오, 네이버, 구글, 애플 소셜 로그인
  • 디바이스 정보 및 광고 식별자(IDFA/ADID) 조회
  • 카메라 촬영 및 QR/바코드 스캔
  • GPS 위치 정보
  • 푸시 알림 토큰 등록 및 로컬 알림
  • 앱 전용 영구 저장소
  • 햅틱 피드백, 공유, 파일 다운로드, 클립보드, 권한 관리
  • 인앱 리뷰 요청
  • 앱 이벤트 트래킹

설치

npm

npm install @nolraunsoft/appify-sdk

CDN

서버사이드 빌드 없이 스크립트 태그로 직접 로드할 수 있습니다.

<script src="https://cdn.jsdelivr.net/npm/@nolraunsoft/appify-sdk@latest/dist/appify-sdk.min.js"></script>

3줄 빠른 예시

import { appify } from '@nolraunsoft/appify-sdk';

await appify.initialize();
const info = await appify.device.getInfo();

초기화 한 번, 호출 한 번으로 네이티브 디바이스 정보를 가져올 수 있습니다. 모든 API는 이 패턴을 따릅니다.

기능 목록

카테고리기능모듈
인증카카오, 네이버, 구글, 애플 소셜 로그인appify.auth
디바이스디바이스 정보, IDFA/ADID 조회appify.device
카메라카메라 촬영, QR/바코드 스캔appify.camera
위치GPS 위치 정보appify.location
푸시 알림푸시 토큰 등록, 로컬 알림 발송appify.notification
저장소앱 전용 키-값 영구 저장소appify.storage
햅틱진동 피드백appify.haptic
공유시스템 공유 시트appify.share
다운로드파일 다운로드 및 저장appify.download
클립보드텍스트 복사/붙여넣기appify.clipboard
권한런타임 권한 요청 및 상태 확인appify.permission
인앱 리뷰앱스토어/플레이스토어 리뷰 요청appify.review
앱 이벤트커스텀 이벤트 전송appify.event

아키텍처

SDK가 어떻게 동작하는지 이해하면 디버깅과 통합이 훨씬 쉬워집니다.

웹 코드는 SDK 메서드를 호출하고, SDK는 내부적으로 postMessage/onMessage를 통해 React Native WebView 브릿지와 통신합니다. 네이티브 앱이 실제 기능을 실행한 뒤 결과를 다시 웹으로 전달합니다.

주요 특징

싱글턴 패턴: 어디서 import해도 동일한 인스턴스를 반환합니다. 초기화는 앱 전체에서 한 번만 호출하면 됩니다.

TypeScript 지원: 모든 API에 완전한 타입 정의가 포함되어 있습니다. IDE 자동완성과 컴파일 타임 오류 검사를 활용할 수 있습니다.

환경 감지: appify.isWebview 속성으로 현재 환경이 WebView인지 일반 웹 브라우저인지 자동으로 감지합니다. 웹 브라우저에서 실행될 때는 네이티브 API 호출을 조건부로 건너뛸 수 있습니다.

SSR 안전: Next.js, Nuxt 등 서버사이드 렌더링 프레임워크에서 안전하게 동작합니다. 서버 환경에서는 브라우저 전용 API를 호출하지 않습니다.

Promise 기반: 모든 API가 Promise를 반환하므로 async/await 문법을 자연스럽게 사용할 수 있습니다.

에러 처리: 타임아웃, 미초기화, 브릿지 미연결 상황마다 구분된 에러 클래스를 제공합니다. try/catch로 각 상황을 명확하게 처리할 수 있습니다.

동시성 제어: 여러 API를 동시에 호출해도 요청 큐가 순서를 보장합니다. 경쟁 조건(race condition)이나 브릿지 충돌 없이 안전하게 동작합니다.