앱 정보
앱 버전, 디바이스 정보, 현재 구독 플랜에 접근합니다.
개요
App Bridge는 현재 앱 실행 환경에 대한 정보(플랫폼, 버전, 로케일, 구독 플랜 등)와 디바이스 식별자를 제공합니다. 서버측 로그 수집, 버전별 기능 분기, 플랜 기반 UI 제어 등에 활용합니다. Android와 iOS에서 동일한 JS API를 사용합니다.
| 기능 | Android | iOS |
|---|---|---|
앱 정보 조회 (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
}정보 객체 필드
| 필드 | 타입 | 설명 |
|---|---|---|
isApp | boolean | SDK 앱 내부에서 실행 중인지 여부 (일반 브라우저면 false) |
platform | string | "android" | "ios" |
appVersion | string | 앱 버전명 (예: "1.2.0") |
buildNumber | string | 빌드 번호 |
packageName | string | Android 패키지명 / iOS Bundle ID |
locale | string | 현재 로케일 (예: "ko") |
tier | string | 구독 플랜 — "basic" | "standard" | "pro" |
licenseType | string | 라이선스 유형 |
isOffline | boolean | 오프라인 모드 활성 여부 |
isTablet | boolean | 태블릿 디바이스 여부 |
orientation | string | "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.getInfo의 buildNumber 필드를 사용하세요.
그 외 app 네임스페이스
app.isTablet
태블릿 디바이스 여부를 동기적으로 반환합니다. 레이아웃 분기에 사용합니다.
const isTablet = window.unveilyBridge.app.isTablet(); // booleanapp.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가 사용됩니다.