# iOS SDK インテグレーション

> CocoaPods または手動メソッドを使用して LevelPlay SDK を iOS アプリケーションに統合し、キー

LevelPlay SDK は、CocoaPods、Swift Package Manager、および SDK を統合するための手動ダウンロードメカニズムをサポートします。

## 前提条件##prerequisites

iOS バージョン サポートはネットワークごとに定義されます。LevelPlay 広告と LevelPlay メディエーションは、iOS バージョン 12 以上、および Xcode バージョン 15.4 以上をサポート。

iOS 14との互換性のあるLevelPlayは、SKAdNetworkアトリビューションをサポートするSDK 7以降をリリースしました。

## SDK をプロジェクトに加える##add-the-sdk-to-your-project

### CocoaPods##cocoapods

[CocoaPods](https://cocoapods.org/)は、Objective-CとSwiftの依存関係マネージャーであり、SDKのインテグレーション プロセスを自動化および合理化します。詳細については、 CocoaPods のドキュメント「 [Getting Started](https://guides.cocoapods.org/using/getting-started.html) and [Using CocoaPods](https://guides.cocoapods.org/using/using-cocoapods.html) 」を参照してください。

LevelPlay SDK を CocoaPods と統合するには、Podfile に以下の行を入力します。

```objective-c
pod 'IronSourceSDK','9.5.0.0'
```

プロジェクトで Swift を使用していない場合は、**「プロジェクト**」＞「**ビルド設定**」＞「**リンク」**＞「**Runpath 検索パス**」に移動し、以下のコードを追加します。

```objective-c
// needs to be first on the list 
/usr/lib/swift
```

> **Note:**
>
> バージョン 8.9.0 から、広告品質は LevelPlay SDK に統合され、LevelPlay の実装時に自動的に初期化されます。詳細については、[広告品質概要](/grow/ad-quality/overview.md)を参照してください。

### Swift Package Manager##swift-package-manager

> **Note:**
>
> Swift Package Manager を使用するには、最低限サポートされている LevelPlay SDK バージョン 9.3.0 と、対応するアダプタバージョンが、[アダプタとネットワーク SDK の最低バージョン](#minimum-adapter) のセクションで定義されている必要があります。

プロジェクトにパッケージの依存関係を追加するには、以下の手順を実行します。

1. Xcode で、**「ファイル**」＞「**パッケージ依存関係を追加**」を選択します。
2. 表示されるプロンプトで、以下のパッケージ URL を検索します。
   `https://github.com/ironsource-mobile/LevelPlay-Swift-Package`
3. 依存関係の規則で、**Branch (分岐**) を選択します。
4. テキストフィールドに `main` と入力します。

#### メディエーションネットワークアダプタパッケージの追加##add-mediation-network-adapter-packages

各メディエーションネットワークには、[ironsourceモバイルGitHub組織](https://github.com/orgs/ironsource-mobile/repositories?q=Swift-Package)によってホストされている独自のアダプターSwiftパッケージがあります。アダプタ リポジトリは、命名形式の`LevelPlay-<Network>-Adapter-Swift-Package`を使用します。例えば、Unity Ads アダプタは `LevelPlay-UnityAds-Adapter-Swift-Package` リポジトリに、AdMob アダプタは `LevelPlay-AdMob-Adapter-Swift-Package` リポジトリにあります。

メディエーション ネットワーク アダプタ パッケージをプロジェクトに追加するには、以下の手順を実行します。

1. [ironsource モバイル GitHub 組織](https://github.com/orgs/ironsource-mobile/repositories?q=Swift-Package)で、追加するネットワークのアダプタ リポジトリを探します。
2. リポジトリ URL をコピーします。
3. Xcode で、**「ファイル**」＞「**パッケージ依存関係を追加**」を選択します。
4. 表示されるプロンプトに、アダプタリポジトリの URL を入力します。
5. 依存関係の規則で、\*\*Exact Version (\*\*完全版) を選択します。
6. プロジェクトの LevelPlay SDK バージョンと互換性のあるタグ付きアダプタバージョンを入力します。

互換性のあるバージョンを選択するには、「 [最低アダプタおよびネットワーク](#minimum-adapter) SDK バージョン 」セクションと関連するアダプタ変更履歴を参照してください。追加するメディエーション ネットワークごとに、これらの手順を繰り返します。

#### アダプタとネットワーク SDK の最小バージョン##minimum-adapter

| ネットワーク名         | 最小アダプターバージョン | 最低ネットワークSDKバージョン |
| --------------- | ------------ | ---------------- |
| Unity Ads       | 5.8.1        | 4.16.5           |
| AppLovin        | 5.7.1        | 13.6.2           |
| BidMachine      | 5.7.1        | 3.6.1            |
| Digital Turbine | 5.8.1        | 8.4.6            |
| Google AdMob    | 5.10.1       | 13.2.0           |
| HyprMX          | 5.3.1        | 6.4.6            |
| LY Adネットワーク     | 5.4.1        | 3.0.1            |
| Meta            | 5.3.1        | 6.21.1           |
| Mintegral       | 5.18.1       | 8.1.0            |
| MobileFuse      | 5.2.0        | 1.11.0           |
| MyTarget        | 5.11.1       | 5.41.0           |
| Ogury           | 5.5.1        | 5.2.1            |
| Pangle          | 5.28.1       | 7.9.1.1          |
| ブードゥー教          | 5.2.1        | 3.15.1           |
| Vungle          | 5.10.1       | 7.7.4            |
| ヤンデックス          | 5.9.1        | 8.1.0            |

### 手動ダウンロード##manual-download

LevelPlay SDK をプロジェクトに手動で追加するには、以下の手順を実行します。

1. [iOS SDK バージョン](https://github.com/ironsource-mobile/iOS-sdk/raw/master/9.5.0/IronSource9.5.0.zip) 9.5.0 をダウンロードします。
2. SDK を解凍し、Xcode プロジェクトに`IronSource.framework`を追加します。
3. のビルド設定に以下のリンカー フラグを追加します。**ターゲット** > **ビルド設定** > **リンク** > その**他のリンカーフラグ**: -ObjC
4. Import libraries - "z","sqlite3.0"
5. Import frameworks - "JavaScriptCore","WebKit","AdSupport","SystemConfiguration"

### LevelPlay メディエーションアプリケーション##levelplay-mediation-demo-app

インテグレーション デモアアプリケーションは、LevelPlay Mediation をアプリケーションに統合する方法を示しています。

[iOSデモアプリケーションのダウンロード](https://github.com/ironsource-mobile/Mediation-Demo-Apps)

## プロパティ リスト ファイルの更新##update-the-property-list-file

### SKAdNetworkサポート##skadnetwork-support

SDK 7 以降を使用している場合に Ironsource ネットワークワーク広告のディスプレイを有効にするには、アプリケーションのリスト(Info.plist) に Ironsource 広告ネットワーク ID が含まれていることを確認します。 

1. Xcode のプロジェクトナビゲーターで、**Info.plist** を選択します。
2. プロパティリストエディタでキーの横にある **Add** (+) を選択し、**Return を**選択します。
3. キー名 **SKAdNetworkItems** を入力します。
4. 「\*\*種類」\*\*列で、**配列**を選択します。
5. ディクショナリ項目を作成してから、単一の文字列項目を作成します。
6. キー名 **SKAdNetworkIdentifier** と以下のキー値を入力します。

   ```text
   su67r6k2v3.skadnetwork
   ```

次のコードを使用して、Info.plist ファイルに **SKAdNetworkIdentifier** を追加することもできます。 

```xml
<key>SKAdNetworkItems</key>
<array>
   <dict>
      <key>SKAdNetworkIdentifier</key>
      <string>su67r6k2v3.skadnetwork</string>
   </dict>
</array>
```

プロパティのリストを編集する方法の詳細については、[Xcode のドキュメント](https://help.apple.com/xcode/mac/current/#/dev3f399a2a6) を参照してください。

### Universal SKAN レポート##universal-skan-reporting

宣伝対象のアプリケーションのすべてのデマンドソースからインストール検証の成功ポストバックのコピーを受け取るには、アプリケーションのInfo.plistファイルに[NSAdvertisingAttributionReportEndpoint](https://developer.apple.com/documentation/bundleresources/information_property_list/nsadvertisingattributionreportendpoint)キーを追加します。

1. Xcode のプロジェクトナビゲーターで、**Info.plist** を選択します。
2. プロパティリストエディタでキーの横にある **Add** (+) を選択し、**Return を**選択します。
3. キー名 [NSAdvertisingAttributionReportEndpoint](https://developer.apple.com/documentation/bundleresources/information_property_list/nsadvertisingattributionreportendpoint) を入力します。
4. **「種類**」列で、**文字列**を選択します。
5. 以下の URL を入力します。 `https://postbacks-is.com/`

Universal SKAN レポートの詳細については、[Add SKAdNetwork IDs manually](/grow/levelplay/sdk/ios/skadnetwork-id-manager.md) (SKAdNetwork ID の手動追加) を参照してください。

### アプリケーション転送のセキュリティ設定##app-transport-security-settings

すべてのメディエーション ネットワークで LevelPlay 広告配信のサポートを中断しないようにするには、Info.plist ファイルに以下の変更を加えます。

* プラス記号を選択してディクショナリ`NSAppTransportSecurity`を追加します。このディクショナリをトップレベルのキーに追加してください。
  * このディクショナリ内で、`NSAllowsArbitraryLoads` というブーリアンを追加し、タブを選択して `YES` に設定します。
* Info.plist ファイルに`NSAllowsArbitraryLoads`以外の例外が含まれていないことを確認します。競合が発生する可能性があるためです。
* アプリケーション転送のセキュリティの詳細については、[Apple ドキュメント](https://developer.apple.com/library/prerelease/ios/documentation/General/Reference/InfoPlistKeyReference/Articles/CocoaKeys.html#//apple_ref/doc/uid/TP40009251-SW33)を参照してください。

## LevelPlay SDK の初期化##initialize-the-levelplay-sdk

### 必要なファイルのインポート##import-the-necessary-files

```objective-c
#import "IronSource/IronSource.h"
```

### SDK の初期化##init-the-sdk

LevelPlay SDK を初期化するには、以下の手順を実行します。

1. 完了ハンドラーの成功と失敗を定義します。
2. 必要に応じて appKey とユーザー ID を使用して LevelPlay init API を呼び出します。

サーバー間のコールバック(ユーザーに報酬を与えるため)または広告品質ユーザージャーニーを使用している場合は、初期化リクエスト ビルダーの一部としてユーザーIDを追加します。

1. **Objective-C**

   ```objective-c
       // キーフォーマットでリクエストビルダーを作成します。ユーザー ID がある場合は追加
   LPMInitRequestBuilder *requestBuilder = [[LPMInitRequestBuilder alloc] initWithAppKey:@"appKey"];
   [requestBuilder withUserId:@"UserId"];

   // Build the initial request
   LPMInitRequest *initRequest = [requestBuilder build];
   // Initialize LevelPlay with the prepared request
   [LevelPlay initWithRequest:initRequest 完了:^(LPMConfiguration *_Nullable config, NSError *_Nullable error){

      if(error) {
          // There was an error on initialization.必要なアクションを実行するか再試行してください
      } else {
         // Initialization was successful.広告オブジェクトの作成、広告のロード、その他のタスクの実行ができるようになりました         
      }
   }];
   ```

2. **Swift**

   ```swift
   // キーフォーマットでリクエストビルダーを作成します。ユーザー ID がある場合は追加
   let requestBuilder = LPMInitRequestBuilder(appKey: "appKey")
      .withUserId("UserId")
   // 初期リクエストのビルド
   let initRequest = requestBuilder.build()
   // 準備したリクエストで LevelPlay を初期化 
   LevelPlay.initWith(initRequest) 
   { config, error in }
   if let error = error {
      // 初期化期化中にエラーが発生しました。必要なアクションを実行するか再試行してください
   } else {
      // 初期化に成功しました。広告オブジェクトの作成、広告のロード、その他のタスクの実行ができるようになりました
   }
   }
   ```

### 初期化結果##initialization-result

* **Success**：初期化期化が正常に完了したときにトリガーされます。この通知を受け取ったら、広告を作成してロードできます。
* **エラー**：設定が正常に取得されず、広告をロードできませんでした。推奨されるベストプラクティスは、インターネット接続が利用可能なとき、または失敗の理由が解決されたときに、後で LevelPlay SDK を初期化してみることです。

## インテグレーションの確認##verify-your-integration

[LevelPlay インテグレーションテストスイート](/grow/levelplay/sdk/ios/integration-test-suite.md)を使用して、アプリケーションのインテグレーションのテスト、プラットフォーム設定の確認、構成したネットワークに関連する広告のレビューを行います。 

アプリケーションでテストスイートを有効にするには、初期化を設定する前に setMetaData API を呼び出します。

1. **Objective-C**

   ```objective-c
   [LevelPlay setMetaDataWithKey:@"is_test_suite" value:@"enable"];
   ```

2. **Swift**

   ```swift
   LevelPlay.setMetaDataWithKey("is_test_suite", value: "enable")
   ```

メディエーションの初期化が完了したら、以下のメソッドを呼び出してテストスイートを起動します。

1. **Objective-C**

   ```objective-c
   [LevelPlay launchTestSuite:self];
   ```

2. **Swift**

   ```swift
   LevelPlay.launchTestSuite(self)
   ```

## 次のステップ##next-steps

1. 以下のインテグレーションガイドを参照して、広告フォーマットを実装します。
   * [動画リワード](/grow/levelplay/sdk/ios/rewarded-ads-integration.md)
   * [Interstitial (インタースティシャル)](/grow/levelplay/sdk/ios/interstitial-integration.md)
   * [Banner](/grow/levelplay/sdk/ios/banner-integration.md)
   * [ネイティブ広告](/grow/levelplay/sdk/ios/native-ads-integration.md)
2. 動画リワード広告、インタースティシャル広告、バナー広告をアプリケーションに統合します。[iOS のメディエーションネット](/grow/levelplay/sdk/ios/mediation-networks.md)ワーク を参照してください。
