본문으로 건너뛰기
Unveilydocs

앱 정보

앱 버전, 디바이스 정보, 현재 구독 플랜에 접근합니다.

개요

App Bridge는 현재 앱 실행 환경에 대한 정보(플랫폼, 버전, 로케일, 구독 플랜 등)와 디바이스 식별자를 제공합니다. 서버측 로그 수집, 버전별 기능 분기, 플랜 기반 UI 제어 등에 활용합니다. Android와 iOS에서 동일한 JS API를 사용합니다.

기능AndroidiOS
앱 정보 조회 (app.getInfo)
디바이스 ID (getDeviceId)
앱 버전 (getAppVersion)
보안 정책 조회 (app.getSecurityPolicy)

app.getInfo

현재 앱 실행 환경에 대한 모든 정보를 한 번에 조회하는 표준 메서드입니다. 콜백 함수 이름(문자열)을 전달하면, 해당 window 함수가 정보 객체를 인자로 받아 호출됩니다. 현재 구독 플랜과 활성 기능을 확인하는 정식(canonical) 방법입니다.

window.unveilyBridge.app.getInfo("onAppInfo");

function onAppInfo(info) {
  console.log(info.tier);        // "basic" | "standard" | "pro"
  console.log(info.platform);    // "android" | "ios"
  console.log(info.appVersion);  // "1.2.0"
  console.log(info.isOffline);   // boolean
}

정보 객체 필드

필드타입설명
isAppbooleanSDK 앱 내부에서 실행 중인지 여부 (일반 브라우저면 false)
platformstring"android" | "ios"
appVersionstring앱 버전명 (예: "1.2.0")
buildNumberstring빌드 번호
packageNamestringAndroid 패키지명 / iOS Bundle ID
localestring현재 로케일 (예: "ko")
tierstring구독 플랜 — "basic" | "standard" | "pro"
licenseTypestring라이선스 유형
isOfflineboolean오프라인 모드 활성 여부
isTabletboolean태블릿 디바이스 여부
orientationstring"portrait" | "landscape"

licenseKey는 노출되지 않습니다

보안상 라이선스 키(licenseKey)는 이 응답에 의도적으로 포함되지 않습니다. 클라이언트 코드에서 라이선스 키에 접근할 수 없습니다. 플랜 기반으로 UI를 분기하려면 tier 필드를 사용하세요.

콜백 이름을 생략하면 기본값 onAppInfo가 사용됩니다. 즉 window.unveilyBridge.app.getInfo() 호출 후 window.onAppInfo 함수를 정의해도 됩니다.

예시 — 플랜에 따른 기능 분기

window.unveilyBridge.app.getInfo("onAppInfo");

function onAppInfo(info) {
  if (info.tier === "pro") {
    enableInAppPurchase();
  } else {
    showUpgradePrompt();
  }
}

getDeviceId

앱 설치 단위의 고유 식별자를 동기적으로 반환합니다.

const id = window.unveilyBridge.getDeviceId();
console.log("디바이스 ID:", id);

getDeviceId()가 반환하는 값은 앱 설치 단위의 고유 식별자입니다. 광고 ID(GAID/IDFA)와 다르며, 사용자를 개인 식별하는 정보가 아닙니다.


getAppVersion

현재 설치된 앱의 버전 문자열을 동기적으로 반환합니다.

const version = window.unveilyBridge.getAppVersion();
console.log("앱 버전:", version);  // 예: "1.2.0"

빌드 번호까지 필요하면 app.getInfobuildNumber 필드를 사용하세요.


그 외 app 네임스페이스

app.isTablet

태블릿 디바이스 여부를 동기적으로 반환합니다. 레이아웃 분기에 사용합니다.

const isTablet = window.unveilyBridge.app.isTablet();  // boolean

app.orientation

현재 화면 방향을 동기적으로 반환합니다.

const orientation = window.unveilyBridge.app.orientation();  // "portrait" | "landscape"

app.setLocale

메뉴 라벨 등 SDK가 관리하는 로케일을 재정의합니다. 앱에서 사용자가 언어를 변경할 때 호출하세요.

window.unveilyBridge.app.setLocale("ko");  // "ko" | "en" | "ja" | BCP-47
window.unveilyBridge.app.setLocale("");    // 기기 로케일로 초기화

app.openExternalUrl

http(s) URL을 기기의 기본 브라우저에서 엽니다. WebView 내부가 아닌 외부 브라우저로 이동합니다. http/https 이외의 스킴은 무시됩니다.

window.unveilyBridge.app.openExternalUrl("https://example.com");

// 최상위 별칭도 동일하게 동작합니다
window.unveilyBridge.openExternalUrl("https://example.com");

app.openSettings

앱의 시스템 설정 화면을 엽니다. 사용자가 권한(위치, 카메라 등)을 직접 변경하도록 안내할 때 사용합니다.

window.unveilyBridge.app.openSettings();

app.getSecurityPolicy

현재 적용된 보안 정책을 조회합니다(읽기 전용). 콜백 이름(문자열)을 전달하면 정책 객체를 인자로 받습니다.

window.unveilyBridge.app.getSecurityPolicy("onSecurityPolicyLoaded");

function onSecurityPolicyLoaded(policy) {
  console.log(policy.screenshotProtection);  // 스크린샷 방지
  console.log(policy.backgroundProtection);  // 백그라운드 화면 보호
  console.log(policy.rootDetection);         // 루팅/탈옥 탐지
}
필드설명
screenshotProtection스크린샷/화면 녹화 방지 활성 여부
backgroundProtection앱 전환기에서 화면 내용 가림 활성 여부
rootDetection루팅(Android)/탈옥(iOS) 탐지 활성 여부

콜백 이름을 생략하면 기본값 onSecurityPolicyLoaded가 사용됩니다.

On this page