# APS インテグレーション(legacy)

> 設定やアカウント設定など、Amazonパブリッシャー サービス (APS)をUnity LevelPlayの広告ネットワークとして設定します。

> **Important:**
>
> 以下のドキュメントでは、Unity が開発、所有、または運用するものではない製品またはサービス ("サードパーティ製品") を取り上げます。
> その情報は、古かったり、不完全であったりする可能性がありますが、利便性のために提供しています。
> サードパーティ製品を使用する際は、その製品の規約に従うものとします。
> Unity はそれらの製品に関して一切保証を行わず、その使用によって生じた損害や損失 (サードパーティプロバイダーのコンテンツ、広告、製品、資料に関する問題を含む) について責任を負いません。

> **Note:**
>
> このガイドは、LevelPlay SDK の古い機能バージョン (8.0.0 以降) に適用されます。バージョン 9.0.0 以降をカバーする最新のドキュメントは、[APS インテグレーション](aps-v9) を参照してください。

> **Note:**
>
> このメディエーション ネットワークのアダプタ変更ログを表示するには、[Unity 向けメディエーション ネットワーク](/grow/levelplay/sdk/unity/mediation-networks.md.md#integrate-network-adapters) を参照してください。

## 前提条件

Amazonパブリッシャー サービス(APS)は招待制のプログラムです。APS を統合するには、LevelPlay SDK と APS SDK の両方を統合および初期化する必要があります。アプリケーションで APS 広告をディスプレイするには、以下に詳細を示す完全なインテグレーション フローを実行してください。

## ステップ 1. APS アカウントの作成

1. APS に連絡して、アプリケーションのアカウントを設定します。APS アカウントを作成するには、[APS Web サイト](https://aps.amazon.com/aps/contact-us/)に移動し、**接触**を選択してリクエストを開きます。
2. APS リクエストが承認されると、サインアップして APS でアカウントを作成するための招待リンクが送られてきます。
3. LevelPlay で APS を設定する前に、上記の手順を完了する必要があります。 

## ステップ 2. APS ネットワークにスロットを設定する

1. Appsメニューから適切なアプリケーションを選択し、**設定**を選択
2. Monetization サービスの設定メニューで **ironsource LevelPlay** を選択します。
3. スロットを追加し、各スロットに定義します。 ：
   1. 名前
   2. 広告サイズ
   3. 価格(自動/手動)
4. すべてのスロットの追加を完了し、認証情報を取得します。
   1. App IDの取得
   2. 価格帯の CSV ファイルをダウンロード

## ステップ 3. APS ネットワークワークのアクティベート

ironsource プラットフォーム内で、SDK Networks 設定にアクセスして、LevelPlay アカウントに APS パラメータを設定します。

1. 上記の認証情報を取得したら、LevelPlay アカウントにログインし、**Monetize** (収益化) > **設定**> **SDK** ****Networks**** に移動します。
2. **Available Networks** のテーブルから APS を選択し、**アクティベート**を選択します。

![APS を選択し、アクティベートを選択します。](/api/media?file=/grow/media/images/Screen-Shot-2021-12-30-at-8.45.52.png)

3. 広告ネットワークのリストから APS を選択し、**設定** を選択します。

![APS を選択し、設定 を選択します。](/api/media?file=/grow/media/images/Screen-Shot-2021-12-30-at-8.47.04.png)

4. APS App ID を入力し、CSV ファイルをそのままアップロードします。

![App IDを入力してCSVをアップロード](/api/media?file=/grow/media/images/Screen-Shot-2021-12-29-at-22.46.02.png)

## ステップ 4. APS Unity プラグインのインポート##step-4.-import-the-aps-unity-plugin

1. APS Unity プラグインを [APS Web サイト](https://ams.amazon.com/webpublisher/uam/docs/aps-mobile/unity)からダウンロードします。
2. Unity プロジェクトが開いていることを確認し、パッケージをインポートします。
3. Unity メニューで Amazon (Amazon) を選択し、Manage SDKs (SDK の管理) を選択して Amazon SDK マネージャーを開きます。

![Unity エディターの Amazon SDK Manager メニュー。](/api/media?file=/grow/media/images/image.png)

4. ironsource アダプタをインストールし、Unity パッケージをインポートします。

![Amazon SDK Manager の Install ironsource adapter オプション。](/api/media?file=/grow/media/images/image-2.png)

### Unity ネットワーク マネージャ（推奨）##unity-network-manager-(recommended)

SDK インテグレーションが完了したら、Unity ネットワーク マネージャを使用して APS アダプタを追加します。

Unity Development プラットフォームで、Ads Mediation > インテグレーションマネージャーに移動します。

すでに最新バージョンのアダプタがある場合は、**アクション** ボタンが「Updated」に変わり、無効になります。

## ステップ 6.Init APS SDK##step-6.-init-aps-sdk

APS ネットワークワークでは、APS 広告をディスプレイするために LevelPlay と APS SDK の両方を初期化する必要があります。

アプリケーションを開いた後、LevelPlay SDK を初期化する前に APS SDK を初期化します。APS 設定のステップ 2 で定義した APS App ID を使用します。

```cs
Amazon.Initialize(amazonApiKey);
```

## ステップ 7.広告ごとの LevelPlay メディエーションによる APS 入札情報の共有##step-7.-share-aps-bid-info-with-levelplay-mediation-per-ad

各広告をロードする前に、APS API を呼び出して LevelPlay SDK が広告をロードするために必要なロード情報を取得します。

必要な手順は以下のとおりです。

1. 各 LevelPlay 広告単位ロード前に APS 広告リクエストをロード。
2. SetNetworkData を呼び出して、APS 入札情報を LevelPlay と共有します。
3. LevelPlay メディエーション API を使用して、関連する広告単位をロードします。

> **Note:**
>
> APS Unity プラグイン バージョン 2.0.0 以降では、**APSBannerAdRequest** / **APSInterstitialAdRequest** / **APSVideoAdRequest** オブジェクトは、Unity で **AdNetworkInfo** と呼ばれる新しいパラメーターを使用します。以下の例の実装の違いに注意してください。

### ロードバナー/MREC 広告##load-banner/mrec-ads

* 各 Ironsource 広告単位ロードの前に APS バナー広告リクエストを呼び出します。

* APS 広告が正常にロードされたら、広告データを LevelPlay メディエーションと共有します。
  1. これには以下のパラメータを含める必要があります。APS Ironsource ネットワーク キー、Amazon から返された入札、スロット一意の識別子
  2. loadBanner（） メソッドを呼び出してバナーをロードします。

* APS Unity プラグイン **2.0.0** 以降:

```cs
AdNetworkInfo adNetworkInfo = new AdNetworkInfo(ApsAdNetwork.UNITY_LEVELPLAY);
APSBannerAdRequest bannerAdRequest = new APSBannerAdRequest(width, height, amazonBannerSlotId, adNetworkInfo);
    bannerAdRequest.onFailedWithError += (adError) => 
    { 
        IronSource.Agent.loadBanner(IronSourceBannerSize.BANNER, IronSourceBannerPosition.BOTTOM); 
    }; 
    bannerAdRequest.onSuccess += (adResponse) => 
    { 
        IronSource.Agent.setNetworkData(APSMediationUtils.APS_IRON_SOURCE_NETWORK_KEY,
                                           APSMediationUtils.GetBannerNetworkData(amazonBannerSlotId, adResponse)); 
        IronSource.Agent.loadBanner(IronSourceBannerSize.BANNER, IronSourceBannerPosition.BOTTOM); 
    }; 
    bannerAdRequest.LoadAd();
```

* **2.0.0** **未満**の APS Unity プラグイン:

```cs
private APSBannerAdRequest bannerAdRequest;
bannerAdRequest = new APSBannerAdRequest(width, height, amazonBannerSlotId);
        bannerAdRequest.onFailedWithError += (adError) =>
        {
            IronSource.Agent.loadBanner(IronSourceBannerSize.BANNER, IronSourceBannerPosition.BOTTOM);
        };
        bannerAdRequest.onSuccess += (adResponse) =>
        {
             IronSource.Agent.setNetworkData(APSMediationUtils.APS_IRON_SOURCE_NETWORK_KEY,
                                                APSMediationUtils.GetBannerNetworkData(amazonBannerSlotId, adResponse));
             IronSource.Agent.loadBanner(IronSourceBannerSize.BANNER, IronSourceBannerPosition.BOTTOM);
        };
        bannerAdRequest.LoadAd();
```

APS がフィルを返さない場合は、LevelPlay の loadBanner() を呼び出します。

> **Note:**
>
> Ironsource の自動更新メカニズムを使用する場合は、各インプレッションの後に APS ロード広告を呼び出しようにしてください。 これにより、APS バナーは次のオークションにも参加できるようになります。このロジックを維持しない場合は、更新メカニズムをキャンセルし、前の広告を破棄した後に各広告を手動でロードします。

### インタースティシャル広告のロード##load-interstitial-ads

* 各 Ironsource 広告単位ロードの前に APS インタースティシャル広告リクエストを呼び出します。APS は入札を戻すか、入札なしを返します。

* APS 広告が正常にロードされたら、広告データを LevelPlay メディエーションと共有します。
  1. これには以下のパラメータを含める必要があります。APS Ironsource ネットワーク キー、Amazon から返された入札、スロット一意の識別子
  2. loadInterstitial() メソッドを呼び出してインタースティシャルをロードします。

* APS Unity プラグイン **2.0.0** 以降:

```cs
AdNetworkInfo adNetworkInfo = new AdNetworkInfo(ApsAdNetwork.UNITY_LEVELPLAY);
APSInterstitialAdRequest interstitialVideoAdRequest = new APSInterstitialAdRequest(amzonInterstitialSlotId, adNetworkInfo);
    interstitialAdRequest.onSuccess += (adResponse) => 
    { 
        IronSource.Agent.setNetworkData(APSMediationUtils.APS_IRON_SOURCE_NETWORK_KEY,
            APSMediationUtils.GetInterstitialNetworkData(amzonInterstitialSlotId, adResponse));
        IronSource.Agent.loadInterstitial(); 
    };
interstitialAdRequest.onFailedWithError += (adError) => 
    { 
    IronSource.Agent.loadInterstitial();
    Debug.Log("onFailedWithError interstitial:" + adError);
    };
interstitialAdRequest.LoadAd();
```

* **2.0.0** **未満**の APS Unity プラグイン:

```cs
private APSInterstitialAdRequest interstitialAdRequest;
interstitialAdRequest = new APSInterstitialAdRequest(amzonInterstitialSlotId);
    interstitialAdRequest.onSuccess += (adResponse) =>
    {
        IronSource.Agent.setNetworkData(APSMediationUtils.APS_IRON_SOURCE_NETWORK_KEY,
            APSMediationUtils.GetInterstitialNetworkData(amzonInterstitialSlotId, adResponse));
        IronSource.Agent.loadInterstitial();
    };
interstitialAdRequest.onFailedWithError += (adError) =>
    {
    IronSource.Agent.loadInterstitial();
    Debug.Log("onFailedWithError interstitial:" + adError);
    };
interstitialAdRequest.LoadAd();
```

APS がフィルを返さない場合は、LevelPlay の loadInterstitial() を呼び出します。

LevelPlay は APS アダプター 4.3.2 から APS インタースティシャル動画広告をサポートします。インタースティシャルビデオをロードするには、APS AdRequest を作成します。

* APS Unity プラグイン **2.0.0** 以降:

```cs
AdNetworkInfo adNetworkInfo = new AdNetworkInfo(ApsAdNetwork.UNITY_LEVELPLAY);
APSVideoAdRequest interstitialVideoAdRequest = new APSVideoAdRequest(320, 480, amazonInterstitialVideoSlotId, adNetworkInfo);
    interstitialVideoAdRequest.onSuccess += (adResponse) =>
    {
        IronSource.Agent.setNetworkData(APSMediationUtils.APS_IRON_SOURCE_NETWORK_KEY,
                                            APSMediationUtils.GetInterstitialNetworkData(amazonInterstitialVideoSlotId, adResponse));
        IronSource.Agent.loadInterstitial();
    };
    interstitialVideoAdRequest.onFailedWithError += (adError) =>
    {
        IronSource.Agent.loadInterstitial();
    };
    interstitialVideoAdRequest.LoadAd();
```

* **2.0.0** **未満**の APS Unity プラグイン:

```cs
private APSVideoAdRequest interstitialVideoAdRequest;
interstitialVideoAdRequest = new APSVideoAdRequest(320, 480, amazonInterstitialVideoSlotId);
    interstitialVideoAdRequest.onSuccess += (adResponse) =>
    {
        IronSource.Agent.setNetworkData(APSMediationUtils.APS_IRON_SOURCE_NETWORK_KEY,
                                            APSMediationUtils.GetInterstitialNetworkData(amazonInterstitialVideoSlotId, adResponse));
        IronSource.Agent.loadInterstitial();
    };
    interstitialVideoAdRequest.onFailedWithError += (adError) =>
    {
        IronSource.Agent.loadInterstitial();
    };
    interstitialVideoAdRequest.LoadAd();
```

### リワード広告##rewarded-ads

APS インテグレーションは、アプリケーションに実装するリワード広告の動作モードによって異なります。

1. [手動ロードモード](/grow/levelplay/sdk/unity/rewarded-ad-integration-package.md)：これは APS と統合するために推奨される設定です。この場合、リワード広告がロードされるたびに APS 広告リクエストを呼び出し必要があります。
2. リワード広告デフォルトモード(自動):リワード広告の表示に LevelPlay デフォルト モードを使用する場合は、LevelPlay SDK の初期化前と APS SDK の初期化後に最初の APS 広告をロードする必要があります。さらに、各ショーの前に次の APS ロードリクエストを呼び出して、次のウォーターリクエストに影響を与えることをお勧めします。

#### ロードリワード広告##load-rewarded-ads

1. 各 LevelPlay 広告単位ロード前（または自動モードでの表示前）に APS リワード広告リクエストを呼び出します。スロット UUID は、ロード広告リクエストの作成時に使用します。
2. APS 広告が正常にロードされたら、以下の広告データを LevelPlay メディエーションと共有します。
   * APS Ironsource ネットワーク キー、Amazon から返された入札、スロット一意の識別子
3. APS がフィルを返さない場合、onFailedWithError() コールバックがトリガーされます。

* APS Unity プラグイン **2.0.0** 以降:

```cs
AdNetworkInfo adNetworkInfo = new AdNetworkInfo(ApsAdNetwork.UNITY_LEVELPLAY);
APSVideoAdRequest rewardedVideoAdRequest = new APSVideoAdRequest(320, 480, amazonRewardedVideoSlotId, adNetworkInfo);

rewardedVideoAdRequest.onSuccess += (adResponse) => 
{ 
    IronSource.Agent.setNetworkData(APSMediationUtils.APS_IRON_SOURCE_NETWORK_KEY,
                                        APSMediationUtils.GetRewardedNetworkData(amazonRewardedVideoSlotId, adResponse));
    IronSource.Agent.loadRewardedVideo(); // If manual rewarded mode 
}; 
interstitialVideoAdRequest.onFailedWithError += (adError) => 
{ 
    IronSource.Agent.loadRewardedVideo(); // If manual rewarded mode
}; 
rewardedAdRequest.LoadAd();
```

* **2.0.0** **未満**の APS Unity プラグイン:

```cs
public void RequestRewardedVideo()
{
    rewardedVideoAdRequest = new APSVideoAdRequest(320, 480, amazonRewardedVideoSlotId);
    rewardedVideoAdRequest.onSuccess += (adResponse) =>
    {
        IronSource.Agent.setNetworkData(APSMediationUtils.APS_IRON_SOURCE_NETWORK_KEY,
                                            APSMediationUtils.GetRewardedNetworkData(amazonRewardedVideoSlotId, adResponse));
        IronSource.Agent.loadRewardedVideo(); // If manual rewarded mode
    };
    interstitialVideoAdRequest.onFailedWithError += (adError) =>
    {
        IronSource.Agent.loadRewardedVideo(); // If manual rewarded mode
    };
    rewardedAdRequest.LoadAd();
}
```

これで、アプリケーション内で APS の需要を提供できるようになりました。

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

LevelPlay を通じて追加の広告ネットワークを活用するには、ネットワーク[アダプタ](/grow/levelplay/sdk/unity/mediation-networks.md)を統合し、インテグレーションガイドに従ってください。
