iOS クイックスタート
数分で、あなたの iOS アプリは本物のフィーチャーフラグを読むようになります。キャッシュ、オフラインフォールバック、デバイス ID はすべて面倒を見てもらえます。
iOS 17、macOS 14、または visionOS 1 が必要です。SDK 自体に依存関係はありません。
1. インストール
Section titled “1. インストール”SDK は GitHub の公開リポジトリにあります。そこから直接 Swift Package として追加してください。Xcode(File → Add Package Dependencies…)か Package.swift で。
.package(url: "https://github.com/FortressFlag/FortressFlag_SDK_ios.git", from: "1.0.0")2. SDK を起動する
Section titled “2. SDK を起動する”起動時に 1 回。SwiftUI なら、App の init が自然な場所です。
import FortressFlag
FortressFlag.start( Configuration( sdkKey: "ffc_prod_…", // プロジェクトの SDK キー画面から environment: .production, keychainAccessGroup: "com.acme.fortressflag" // 出荷するすべてのアプリで同じ文字列 ))start はキャッシュされた値が読み込まれ次第戻り、SDK はそれ以降バックグラウンドで変更をポーリングします。このキーはクライアントキーで、設計上アプリの中に入って出荷されます。
3. flag を読む
Section titled “3. flag を読む”どこでも。SwiftUI の body の中でも。
if FortressFlag.isEnabled("new-checkout") { NewCheckoutView()} else { LegacyCheckoutView()}string と number の flag も同じように読めます。FortressFlag.stringValue("checkout-cta", default: "buy-now") のように。そして FortressFlag.onChange で変更を監視できます。
これで完了です。flag は公開されています。ダッシュボードで切り替えれば、アプリは次のポーリングで追従します。
FortressFlag が落ちても、あなたのアプリは落ちない
Section titled “FortressFlag が落ちても、あなたのアプリは落ちない”この API のどの呼び出しも、例外を投げず、ブロックせず、アプリをクラッシュさせることができません。すべての読み取りはカスケードを通じて解決されます。最後に受け取った値、次に前回の実行からの永続キャッシュ、次に呼び出し箇所のデフォルト。だから障害も、死んだネットワークも、失効したキーも、ユーザーには決して届きません。
キーチェーン共有を設定する。しないとお金がかかる
Section titled “キーチェーン共有を設定する。しないとお金がかかる”FortressFlag はアプリ単位ではなくデバイス単位で課金します。あなたのアプリを 3 つ動かしている 1 台のスマートフォンは 1 席です。ただし、3 つすべてが 1 つのデバイス ID について合意している場合に限ります。iOS では、それは共有キーチェーンアクセスグループを意味します。
- 各アプリターゲットで、Signing & Capabilities → + Capability → Keychain Sharing。
- すべてのアプリに同じグループを追加します。たとえば
com.acme.fortressflag。 - その文字列を(チームプレフィックスなしで)
keychainAccessGroupとして渡します。
これを省いてもすべて動きますが、各アプリが独自の ID を保存します。1 台のデバイスが 3 台の課金対象デバイスとして数えられます。そうなっているとき、SDK は一度警告をログに出します。
プラットフォームの注記を 1 つ。ID はキーチェーンに保存されるので、iOS ではアプリのアンインストール後も残ります。そして iCloud に同期されることはないので、バックアップに乗って 2 台目のデバイスに渡ることもありません。
連携をデバッグする
Section titled “連携をデバッグする”パッケージには 2 つ目のライブラリ FortressFlagDebugUI が同梱され、FlagListView が入っています。このデバイスが保持するすべての flag、その値、そしてそれがどこから来たかをライブで表示する SwiftUI 画面です。「SDK はそもそもサーバーと話せているのか?」へのいちばん速い答えです。
- flag がアプリに届くまで:そのバックグラウンドポーリングが何をしているか
- デバイス ID と課金:いま設定した ID
- パーセンテージロールアウトを設定する:まず 10% に出荷する