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

> APSアカウントを設定し、Ironsourceとのインテグレーションを設定することで、Amazonパブリッシャー サービス (APS)をUnity LevelPlayと統合できます。

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

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

> **Note:**
>
> このメディエーションネットワークのアダプタ変更ログを表示するには、[Android 向けメディエーションネットワーク](/grow/levelplay/sdk/android/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 アダプタをビルドに追加する##step-4.-add-the-aps-adapter-to-your-build

### Gradle##gradle

1. アプリケーションモジュールの ビルド.gradle スクリプトに以下の Maven URL が存在することを確認します。

   ```java
   repositories {
   	mavenCentral()
   }
   ```

2. アダプターの Maven 名をアプリケーションモジュールの ビルド.gradle スクリプトに追加します。
   ```java
   dependencies {
   implementation 'com.unity3d.ads-mediation:aps-adapter:4.3.17'
   implementation 'com.amazon.android:aps-sdk:11.0.0+'
   implementation 'com.iabtcf:iabtcf-decoder:2.0.10'
   }
   ```

## ステップ 5.AndroidManifest.xml 更新##step-5.-update-androidmanifest.xml

**マニフェスト権限:**

```xml
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
```

**マニフェストアクティビティ:**

```xml
<activity android:name="com.amazon.device.ads.DTBInterstitialActivity"/>
<activity android:name="com.amazon.device.ads.DTBAdActivity"/>
```

### ProGuard ユーザーのみ##for-proguard-users-only

APS アダプタで ProGuard を使用している場合は、ProGuard ファイルに以下のコードを追加する必要があります。

```java
-keep class com.amazon.device.ads.** { *; }
```

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

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

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

```java
AdRegistration.getInstance(APS_APP_ID, this);
//Where 'this' is an activity context.
```

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

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

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

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

> **Note:**
>
> APS Android SDK 10.0.0 以降では、**DTBAdRequest** オブジェクトは **DTBAdNetworkInfo** という新しいパラメーターを使用します。以下の例の実装の違いに注意してください。

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

1. 各 Ironsource 広告単位ロードの前に APS バナー広告リクエストを呼び出します。スロット UUID は、ロード広告リクエストの作成時に使用します。
   * APS Android SDK **10.0.0 以降**:

     ```java
     DTBAdNetworkInfo adNetworkInfo = new DTBAdNetworkInfo(DTBAdNetwork.UNITY_LEVELPLAY); 
     final DTBAdRequest loader = new DTBAdRequest(adNetworkInfo);
     loader.setSizes(new DTBAdSize(SLOT_WIDTH, SLOT_HEIGHT, "Your_Slot_UUID"));
     loader.loadAd(new DTBAdCallback());
     ```

   * APS Android SDK **10.0.0 未満**:

     ```java
     final DTBAdRequest loader = new DTBAdRequest();
     loader.setSizes(new DTBAdSize(SLOT_WIDTH, SLOT_HEIGHT, "Your_Slot_UUID"));
     loader.loadAd(new DTBAdCallback()); 
     ```

2. APS 広告が正常にロードされたら、広告データを Ironsource と共有します。これには以下のパラメータを含める必要があります。

   1. Bid Info (入札情報):Amazon 広告が表示されるために必要な情報
   2. エンコードされた価格:APS から返された落札広告価格
   3. UUIDスロット一意の識別子
   4. 幅:バナーの幅
   5. 高さ:バナーの高ささ

   ```java
   public void onSuccess(DTBAdResponse dtbAdResponse) {
       // Append the APS bid parameters to LevelPlay mediation to add APS to the next ad request 
       JSONObject apsDataJsonBN = new JSONObject();
       apsDataJsonBN.put("bidInfo", SDKUtilities.getBidInfo(dtbAdResponse));
       apsDataJsonBN.put("pricePointEncoded", SDKUtilities.getPricePoint(dtbAdResponse));
       apsDataJsonBN.put("uuid", slotUUID);
       apsDataJsonBN.put("width", dtbAdResponse.getDTBAds().get(0).getWidth());
       apsDataJsonBN.put("height", dtbAdResponse.getDTBAds().get(0).getHeight());

       // Define APS data per interstitial ad unit 
       JSONObject apsDataJson = new JSONObject(); 
       apsDataJson.put(IronSource.AD_UNIT.BANNER.toString(), apsDataJsonBN);
       IronSource.setNetworkData("APS", apsDataJson);
   }
   ```

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

3. Ironsource バナー広告をロードします。詳細については[、こちら](/grow/levelplay/sdk/android/banner-integration.md)を参照してください。

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

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

1. 各 Ironsource 広告単位ロードの前に APS インタースティシャル広告リクエストを呼び出します。スロット UUID は、ロード広告リクエストの作成時に使用します。
   * APS Android SDK **10.0.0 以降**:

     ```java
     DTBAdNetworkInfo adNetworkInfo = new DTBAdNetworkInfo(DTBAdNetwork.UNITY_LEVELPLAY); 
     final DTBAdRequest loader = new DTBAdRequest(adNetworkInfo);
     loader.setSizes(new DTBAdSize.DTBInterstitialAdSize(YOUR_INTERSTITIAL_UUID));
     loader.loadAd(new DTBAdCallback());
     ```

   * APS Android SDK **10.0.0 未満**:

     ```java
     final DTBAdRequest loader = new DTBAdRequest();
     loader.setSizes(new DTBAdSize.DTBInterstitialAdSize(YOUR_INTERSTITIAL_UUID));
     loader.loadAd(new DTBAdCallback());
     ```

2. LevelPlay は、APS アダプター 4.3.3 から APS インタースティシャル動画広告をサポートします。インタースティシャルビデオをロードするには、以下のメソッドを呼び出します。アプリケーションが縦向きモードの場合：

   * APS Android SDK **10.0.0 以降**:

     ```java
     DTBAdNetworkInfo adNetworkInfo = new DTBAdNetworkInfo(DTBAdNetwork.UNITY_LEVELPLAY); 
     final DTBAdRequest loader = new DTBAdRequest(adNetworkInfo);
     loader.setSizes(new DTBAdSize.DTBVideo(320, 480, YOUR_INTERSTITIAL_VIDEO_UUID)); 
     loader.loadAd(new DTBAdCallback());
     ```

   * APS Android SDK **10.0.0 未満**:

     ```java
     final DTBAdRequest loader = new DTBAdRequest();
     loader.setSizes(new DTBAdSize.DTBVideo(320, 480, YOUR_INTERSTITIAL_VIDEO_UUID));
     loader.loadAd(new DTBAdCallback());
     ```

   アプリケーションが横向きモードの場合:

   * APS Android SDK **10.0.0 以降**:

     ```java
     DTBAdNetworkInfo adNetworkInfo = new DTBAdNetworkInfo(DTBAdNetwork.UNITY_LEVELPLAY); 
     final DTBAdRequest loader = new DTBAdRequest(adNetworkInfo);
     loader.setSizes(new DTBAdSize.DTBVideo(480, 320, YOUR_INTERSTITIAL_VIDEO_UUID));
     loader.loadAd(new DTBAdCallback());
     ```

   * APS Android SDK **10.0.0 未満**:

     ```java
     final DTBAdRequest loader = new DTBAdRequest();
     loader.setSizes(new DTBAdSize.DTBVideo(480, 320, YOUR_INTERSTITIAL_VIDEO_UUID));
     loader.loadAd(new DTBAdCallback());
     ```

3. APS 広告が正常にロードされたら、広告データを Ironsource と共有します。これには以下のパラメータを含める必要があります。

   1. Bid Info (入札情報):Amazon 広告が表示されるために必要な情報
   2. エンコードされた価格:APS から返された落札広告価格
   3. UUIDスロット一意の識別子

   ```java
   public void onSuccess(DTBAdResponse dtbAdResponse) {
       // Append the APS bid parameters to LevelPlay mediation to add APS to the next ad request 
       JSONObject apsDataJsonIS = new JSONObject(); 
       apsDataJsonIS.put("bidInfo", SDKUtilities.getBidInfo(dtbAdResponse));
       apsDataJsonIS.put("pricePointEncoded", SDKUtilities.getPricePoint(dtbAdResponse));
       apsDataJsonIS.put("uuid", slotUUID);

       // Define APS data per interstitial ad unit 
       JSONObject apsDataJson = new JSONObject(); 
       apsDataJson.put(IronSource.AD_UNIT.INTERSTITIAL.toString(), apsDataJsonIS);
       IronSource.setNetworkData("APS", apsDataJson);
    }
   ```

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

4. Ironsource インタースティシャル広告をロードします。詳細については[、こちら](/grow/levelplay/sdk/android/interstitial-integration.md)を参照してください。

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

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

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

**ロードリワード広告**

1. 各 Ironsource 広告単位ロード前（または自動モードでの表示前）に APS リワード広告リクエストを呼び出します。スロット UUID は、ロード広告リクエストの作成時に使用します。アプリケーションが縦向きモードの場合は、以下を行います。
   * APS Android SDK **10.0.0 以降**:

     ```java
     DTBAdNetworkInfo adNetworkInfo = new DTBAdNetworkInfo(DTBAdNetwork.UNITY_LEVELPLAY); 
     final DTBAdRequest loader = new DTBAdRequest(adNetworkInfo);
     loader.setSizes(new DTBAdSize.DTBVideo(320, 480, YOUR_REWARDED_VIDEO_UUID)); 
     loader.loadAd(new DTBAdCallback());
     ```

   * APS Android SDK **10.0.0 未満**:

     ```java
     final DTBAdRequest loader = new DTBAdRequest();
     loader.setSizes(new DTBAdSize.DTBVideo(320, 480, YOUR_REWARDED_VIDEO_UUID));
     loader.loadAd(new DTBAdCallback());
     ```

アプリケーションが横向きモードの場合:

1. * APS Android SDK **10.0.0 以降**:

     ```java
     DTBAdNetworkInfo adNetworkInfo = new DTBAdNetworkInfo(DTBAdNetwork.UNITY_LEVELPLAY); 
     final DTBAdRequest loader = new DTBAdRequest(adNetworkInfo);
     loader.setSizes(new DTBAdSize.DTBVideo(480, 320, YOUR_REWARDED_VIDEO_UUID)); 
     loader.loadAd(new DTBAdCallback());
     ```

   * APS Android SDK **10.0.0 未満**:

     ```java
     final DTBAdRequest loader = new DTBAdRequest();
     loader.setSizes(new DTBAdSize.DTBVideo(480, 320, YOUR_REWARDED_VIDEO_UUID));
     loader.loadAd(new DTBAdCallback());
     ```

2. APS 広告が正常にロードされたら、広告データを Ironsource と共有します。これには以下のパラメータを含める必要があります。
   1. Bid Info (入札情報):Amazon 広告が表示されるために必要な情報
   2. エンコードされた価格:APS から返された落札広告価格
   3. UUIDスロット一意の識別子

      ```java
      public void onSuccess(DTBAdResponse dtbAdResponse) {
          // Append the APS bid parameters to LevelPlay mediation to add APS to the next ad request 
          JSONObject apsDataJsonRV = new JSONObject(); 
          apsDataJsonRV.put("bidInfo", SDKUtilities.getBidInfo(dtbAdResponse));
          apsDataJsonRV.put("pricePointEncoded", SDKUtilities.getPricePoint(dtbAdResponse));
          apsDataJsonRV.put("uuid", slotUUID);
          // Define APS data per rewarded ad unit 
          JSONObject apsDataJson = new JSONObject(); 
          apsDataJson.put(IronSource.AD_UNIT.REWARDED_VIDEO.toString(), apsDataJsonRV);
          IronSource.setNetworkData("APS", apsDataJson);
       }
      ```

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