本文へスキップ
Unveilydocs

iOS 設定ガイド

Unveily iOS SDK を Xcode プロジェクトに統合し、本番デプロイの準備をします。

ひと目でわかる

ダウンロードしたパッケージ(unveily-sdk-ios-{plan}-vX.X.X.zip)を展開すると、XcodeGen でプロジェクトを生成できる構成が入っています。

unveily-sdk-ios-pro/
├── project.yml                        ← Xcode プロジェクト設定(構成の中心)
├── Frameworks/
│   └── UnveilyCore.xcframework       ← SDK バイナリ(変更禁止)
└── UnveilyApp/
    ├── App/
    │   ├── Info.plist                 ← 権限・URL スキーム
    │   ├── UnveilyApp.entitlements    ← Apple ログイン・APNs 設定
    │   └── GoogleService-Info.plist.template  ← Firebase 設定(要差し替え)
    ├── Bridges/                       ← Swift ブリッジハンドラ(変更可能)
    ├── Controllers/
    │   └── MainViewController.swift
    ├── Views/
    ├── Resources/
    │   ├── config.json                ← 機能の ON/OFF
    │   └── social_login_config.json   ← ソーシャルログイン SDK キー
    └── Supporting/
        └── license.key                ← ライセンスキー(要差し替え)

はじめる前に — XcodeGen のインストール

SDK は project.yml ベースで動作します。.xcodeproj ファイルを生成するには XcodeGen が必要です。

brew install xcodegen

インストール後、SDK フォルダ内で実行します。

cd unveily-sdk-ios-pro
xcodegen generate
open *.xcodeproj

ミッション 1 — ライセンスキーの設置

ダッシュボード → ダウンロード からライセンスキーファイルをダウンロードし、以下のパスに配置します。

UnveilyApp/Supporting/license.key

初回起動時、SDK が自動的に iOS Keychain へキーをマイグレーションします。以降はバンドルファイルを参照しません。


ミッション 2 — Firebase の設定

Firebase Console で iOS アプリを登録し、GoogleService-Info.plist をダウンロードします。

UnveilyApp/App/GoogleService-Info.plist.template → GoogleService-Info.plist に差し替え
機能Firebase の設定
Google ログインAuthentication → Google を有効化
Apple ログインAuthentication → Apple を有効化 + Apple Developer キーを入力
プッシュ通知(APNs)Cloud Messaging → APNs 認証キーをアップロード

Apple ログインは iOS 上で ASAuthorizationController を使うネイティブ方式で動作します。Firebase Console で Apple プロバイダーを有効化し、Apple Developer から Service ID とキーを発行して入力してください。


ミッション 3 — Bundle ID と Web URL の設定

project.yml でアプリ識別子と Web URL を設定します。

targets:
  UnveilyPro:        # Basic → UnveilyBasic、Standard → UnveilyStandard
    settings:
      base:
        PRODUCT_BUNDLE_IDENTIFIER: com.yourcompany.yourapp  # ★ 変更する
        DEVELOPMENT_TEAM: "XXXXXXXXXX"                       # ★ Apple Developer Team ID
        DEEP_LINK_SCHEME: yourapp                            # ★ ディープリンクスキーム
        PG_CALLBACK_SCHEME: yourapp-pg                       # ★ PG コールバックスキーム
    info:
      properties:
        UnveilyInitialURL: "https://your.domain.com"         # ★ 変更する

UnveilyInitialURL が空のままだと、アプリが内蔵テストページを読み込みます。本番ビルド前に必ず実際のドメインに変更してください。

変更後は Xcode プロジェクトを再生成します。

xcodegen generate

ミッション 4 — 機能の有効化(config.json

UnveilyApp/Resources/config.json で必要な機能をオン・オフします。

{
  "remoteConfigUrl": "",
  "debugMode": false,
  "splash": {
    "mode": "builtin",
    "backgroundColor": "#FFFFFF",
    "darkBackgroundColor": "#000000",
    "minDurationMs": 1500
  },
  "modules": {
    "accessibility": { "enabled": false },
    "topDownMenu":   { "enabled": false },
    "sideDrawer":    { "enabled": false },
    "bottomTabs":    { "enabled": true, "autoHide": false },
    "bottomSheet":   { "enabled": true }
  },
  "security": {
    "screenshotProtectionEnabled": true,
    "backgroundProtectionEnabled": true,
    "rootDetectionEnabled": true
  },
  "socialLogin": {
    "google": true,
    "apple": true,
    "kakao": false,
    "naver": false,
    "line": false,
    "meta": false
  }
}

socialLogin の値はログインボタンの表示・非表示を制御します。実際の SDK キーは social_login_config.json で別途設定します。 金融・医療・決済アプリは security の 3 項目をすべて true に設定してください。

スプラッシュの背景画像・レイヤーアニメーション設定は スプラッシュカスタマイズガイド を参照してください。


Info.plist — 権限の使用目的(Usage Description)

iOS は特定の機能を初めて使用する際、権限の使用目的をユーザーに表示します。Info.plist には以下のキーが含まれています。使用する機能に合わせて 説明文をアプリに合わせて編集 してください。使用しない機能のキーはそのままで問題ありませんが、実際に使う機能のキーが無いと、その API を呼び出したときにアプリがクラッシュします。

機能Info.plist キー
カメラ・QR スキャンNSCameraUsageDescription
写真ライブラリ(写真選択)NSPhotoLibraryUsageDescription
写真の保存NSPhotoLibraryAddUsageDescription
マイクNSMicrophoneUsageDescription
音声認識(STT)NSSpeechRecognitionUsageDescription
位置情報NSLocationWhenInUseUsageDescription
生体認証(Face ID)NSFaceIDUsageDescription
<key>NSCameraUsageDescription</key>
<string>QR コードのスキャンと写真撮影にカメラを使用します。</string>
<key>NSFaceIDUsageDescription</key>
<string>安全なログインのために Face ID を使用します。</string>
<key>NSLocationWhenInUseUsageDescription</key>
<string>周辺情報を提供するために位置情報を使用します。</string>
<key>NSMicrophoneUsageDescription</key>
<string>音声入力にマイクを使用します。</string>
<key>NSSpeechRecognitionUsageDescription</key>
<string>音声をテキストに変換するために音声認識を使用します。</string>
<key>NSPhotoLibraryUsageDescription</key>
<string>写真を選択するために写真ライブラリにアクセスします。</string>
<key>NSPhotoLibraryAddUsageDescription</key>
<string>画像を写真ライブラリに保存します。</string>

ミッション 5 — ソーシャルログインの設定

Resources/social_login_config.json

使用するプロバイダーのキーのみ入力します。キーが空のプロバイダーは自動的に無効化されます。

{
  "kakao": { "nativeAppKey": "YOUR_KAKAO_KEY" },
  "naver": { "clientId": "YOUR_ID", "clientSecret": "YOUR_SECRET", "appName": "YOUR_APP_NAME" },
  "line":  { "channelId": "YOUR_CHANNEL_ID" },
  "meta":  { "appId": "YOUR_APP_ID", "clientToken": "YOUR_TOKEN" }
}

Google は GoogleService-Info.plist、Apple は Firebase Console + Apple Developer のみで設定します。

iOS の現在の対応範囲: iOS では Apple と Google ログインのみが現在すぐに動作 します。kakaonaverlinemetaconfig.json の表示フラグをオンにできますが、現在の iOS ビルドで呼び出すと SDK_NOT_READY エラーを返します(ネイティブ SDK は今後の iOS アップデートで追加予定)。Android は現在すべてのプロバイダーに対応しています。

Info.plist — ソーシャル URL スキームのプレースホルダーを差し替え

Info.plist 内の以下のプレースホルダーを実際の値に置き換えます。

<!-- Google: GoogleService-Info.plist の REVERSED_CLIENT_ID の値 -->
<string>REPLACE_WITH_GOOGLE_REVERSED_CLIENT_ID</string>

<!-- Kakao: kakao{NATIVE_APP_KEY} 形式(例: kakao1a2b3c4d5e) -->
<string>REPLACE_WITH_KAKAO_SCHEME</string>

<!-- Meta: fb{FACEBOOK_APP_ID} 形式 -->
<string>REPLACE_WITH_FB_SCHEME</string>

Facebook の App ID と Client Token も差し替えます。

<key>FacebookAppID</key>
<string>REPLACE_WITH_FB_APP_ID</string>
<key>FacebookClientToken</key>
<string>REPLACE_WITH_FB_CLIENT_TOKEN</string>

Naver ログインは公式 SPM パッケージがありません。CocoaPods が必要です。

pod 'naveridlogin-sdk-ios'

UnveilyApp.entitlements — Apple ログイン + APNs

Apple ログイン(com.apple.developer.applesignin)と APNs(aps-environment)はすでに entitlements に設定されています。 本番デプロイ前aps-environmentproduction に変更してください。

<key>aps-environment</key>
<string>production</string>   <!-- ローカルビルド時は development -->

ミッション 6 — アプリ内課金の設定(Pro プラン)

App Store Connect で商品 ID を作成します。JS ブリッジで照会します。

window.unveilyBridge.iap.queryProducts(["your.product.id"], "inapp", "onProductsLoaded");

サーバー検証の流れ(Model B): 購入が完了すると、SDK は StoreKit 2 の signedTransaction(JWS)を Web アプリに渡します。Web アプリはその JWS を お客様(貴社)のバックエンド に送信し、貴社バックエンドが Unveily の検証 API を呼び出します。SDK や Unveily が検証エンドポイントを直接呼び出すことはありません — 検証を開始するのは常に貴社バックエンドです。


SECURE ストレージ

v1.0.0 から Keychain ベースの暗号化ストレージティアが追加されました。トークンやセッションなど機密データは SECURE で保存してください。

// 保存
window.unveilyBridge.saveData("access_token", value, "SECURE");

// 読み込み(非同期専用)
window.unveilyBridge.loadSecureData("access_token", "onTokenLoaded");

// 削除
window.unveilyBridge.removeData("access_token", "SECURE");

loadData(key, "SECURE") は常に空の値を返します。必ず loadSecureData(key, callback) の非同期方式を使用してください。


完了前の確認

- [ ] XcodeGen インストール済み (brew install xcodegen)
- [ ] PRODUCT_BUNDLE_IDENTIFIER → 自社 Bundle ID に変更
- [ ] DEVELOPMENT_TEAM → Apple Developer Team ID を入力
- [ ] UnveilyInitialURL → 本番ドメインに変更(HTTPS)
- [ ] xcodegen generate → プロジェクトを再生成
- [ ] license.key → ダッシュボードからダウンロードしたファイルに差し替え
- [ ] GoogleService-Info.plist → 本番用 Firebase プロジェクトファイルに差し替え(.template を削除)
- [ ] Info.plist → ソーシャルログインのプレースホルダーを実際の値に差し替え
- [ ] entitlements → aps-environment を production に変更
- [ ] config.json → 必要な機能の有効化を確認
- [ ] Xcode → Product → Archive → App Store Connect へアップロード
- [ ] App Store Connect → アプリ署名証明書の SHA-256 を確認してダッシュボードに登録

ダッシュボードに登録するアプリ署名ハッシュは App Store Connect の配布証明書 SHA-256 である必要があります。ローカル開発証明書とは異なります。

次の旅へ

On this page