# iOS

## サポート環境

* iOS 15.0 以上
* Xcode 16.1 以上
* Swift 5.9 以上

***

## Step 1. パッケージをインストールする

Swift Package ManagerまたはCocoaPodsが利用できます。

* [Swift Package Manager](https://github.com/plaidev/nubrick-ios/releases/latest)
* [CocoaPods](https://cocoapods.org/pods/Nubrick)

{% tabs %}
{% tab title="Swift Package Manager 🐦‍🔥" %}

1. Xcode上のメニューから、`File > Add Package Dependencies...` を選択する
2. `Search or Enter Package URL` の検索フィールドに次のURLを入力する
   1. `https://github.com/plaidev/nubrick-ios`
3. バージョンを選択し、インストールする
   1. ※基本的には最新バージョンを利用することを推奨しています。
      {% endtab %}

{% tab title="CocoaPods 🥥" %}
プロジェクトの Podfile に以下を追記します。

```ruby
target 'YourAppTarget' do
    pod 'Nubrick'
end
```

ターミナルから `pod install` を実行します。

```bash
pod install
```

{% hint style="warning" %}
ビルドに失敗した場合は、[Cocoapods エラーの解決方法](https://github.com/plaidev/nubrick-app-support/blob/main/ja/troubleshooting/cocoapods-error.md)を参照してください。
{% endhint %}
{% endtab %}
{% endtabs %}

## Step 2. Nubrick SDK を初期化する

{% hint style="warning" %}
`NubrickSDK.initialize(...)` は、`embedding` / `overlay` / `remoteConfig` / `dispatch` など他の API を使う前に、必ず 1 回だけ実行してください。\
SwiftUI では `@main` の `App` struct の `init()`、UIKit ではアプリ起動時（`AppDelegate` など）での初期化を推奨します。
{% endhint %}

### SwiftUI

`@main` の `init()` で SDK を初期化し、ルートビューを `NubrickProvider { ... }` で包んでオーバーレイ配信を表示できる状態にします。

```swift
import Nubrick
import SwiftUI

@main
@MainActor
struct YourApp: App {
    init() {
        NubrickSDK.initialize(projectId: "<YOUR_NUBRICK_PROJECT_ID>")
    }

    var body: some Scene {
        WindowGroup {
            NubrickProvider {
                ContentView()
            }
        }
    }
}
```

埋め込みコンポーネントは `NubrickSDK.embedding` で表示できます。

```swift
struct ContentView: View {
    var body: some View {
        VStack {
            NubrickSDK.embedding("ID_OF_YOUR_EMBEDDING")
                .frame(height: 240)
        }
    }
}
```

必要に応じて、初期化時にキャッシュを指定できます。

```swift
NubrickSDK.initialize(
    projectId: "<YOUR_NUBRICK_PROJECT_ID>",
    cachePolicy: NubrickCachePolicy(cacheTime: 10 * 60, staleTime: 0)
)
```

### UIKit

アプリ起動時に SDK を初期化し、`overlayViewController()` を画面ツリーに追加してオーバーレイ配信を表示できる状態にします。

```swift
import Nubrick
import UIKit

@main
class AppDelegate: UIResponder, UIApplicationDelegate {
    func application(
        _ application: UIApplication,
        didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? = nil
    ) -> Bool {
        NubrickSDK.initialize(projectId: "<YOUR_NUBRICK_PROJECT_ID>")
        return true
    }
}

class ViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()

        let overlay = NubrickSDK.overlayViewController()
        self.addChild(overlay)
        self.view.addSubview(overlay.view)
        overlay.didMove(toParent: self)

        let embeddingView = NubrickSDK.embeddingUIView("ID_OF_YOUR_EMBEDDING")
        self.view.addSubview(embeddingView)
    }
}
```
