本文へスキップ
Unveilydocs

アーキテクチャ

Unveily がウェブアプリとネイティブ機能をつなぐ仕組み

全体の構成

Unveily アーキテクチャ図 — WebView Layer・Bridge Layer・License Manager を含む Android/iOS アプリが、SSL Pinning を使った HTTPS 通信で ActuallyWorks API に接続する構成

構成要素

WebView Layer

  • Android は WebView、iOS は WKWebView コンポーネントをベースにしています
  • TRUSTED_WEB_URL(iOS は UnveilyInitialURL)のドメインのみ許可します(セキュリティのため)
  • JavaScript Interface を使って Bridge と通信します

Bridge Layer

ウェブ ↔ ネイティブの通信インターフェースです。グローバルオブジェクト window.unveilyBridge として公開され、注入が完了すると unveilyGlueReady イベントが発火します。有効なモジュール/プランは unveilyBridge.app.getInfo()(tier・features)と unveilyBridge.modules.isEnabled(name) で確認します。プラン別の機能:

Basic:    QR・カメラ・位置情報 | ストレージ(TEMP/PERM/SECURE)| オフラインキャッシュ | プッシュ(FCM)
          | アクセシビリティパネル + TTS/STT/ハプティクス | bottomTabs · topDownMenu | Google・Apple ログイン
Standard: Basic + 生体認証 · sideDrawer · Kakao/Naver/LINE ログイン
Pro:      Standard + アプリ内課金(IAP)· Meta ログイン

プラットフォーム別のネイティブ実装マッピング:

機能AndroidiOS
SECURE ストレージAndroidKeyStoreiOS Keychain
生体認証BiometricPromptFace ID / Touch ID
アプリ内課金Google Play BillingStoreKit 2

License Manager

アプリ起動時にライセンスを検証します:

  1. ローカルファイル(license.key)を読み込んで HMAC を検証します
  2. サーバーでオンライン検証を行います(有効期限・有効化状態を確認)
  3. 成功したら WebView の起動を許可します

SSL Pinning

SslPinningManager が API サーバーの証明書ピン(SHA-256)を検証します。 中間者攻撃(MITM)からライセンス通信を守ります。

Flavor の構成(Android)

Android では Unveily は 3 つの Product Flavor を使います:

FlavorapplicationId のサフィックス含まれる機能
basic.basic基本機能すべて
standard.standardBasic + 生体認証
pro.proStandard + アプリ内課金

各 Flavor は独立した APK・AAB としてビルドされます。iOS は同じプラン区分を別々のターゲット/スキーム(Basic/Standard/Pro)として提供します。

On this page