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 ログインのみが現在すぐに動作 します。kakao・naver・line・meta は config.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-environment を production に変更してください。
<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 である必要があります。ローカル開発証明書とは異なります。