Amazon Publisher Services 実装ガイド

Before you start

Amazon Publisher Services (APS) は、現在インタースティシャル広告とバナー/ MREC 広告をサポートしている招待制プログラムです。 APS を実装するには、ironSource SDK と APS SDK の両方を実装・初期化する必要があります。アプリケーションに APS 広告を表示するには、以下で説明するフローに従って実装してください。

APS Android SDK バージョン範囲サポート
Android 用 APS アダプター 4.3.9 は、Gradle の範囲依存関係(Range Dependency)を通じて APS Android SDK を実装するように設計されています。 9.8+ の依存関係を使用すると、新しい LevelPlay アダプターを実装しなくても、将来の APS Android SDK (<9.8.8) を自動的に実装できるようになります。

ステップ 1. APS アカウントを作成する

  1. アプリのアカウントを設定するには、APS にお問い合わせください。APS アカウントを作成するには、APS Web サイトにアクセスし、「 Contact Us 」ボタンをクリックしてリクエストを開きます。
  2. リクエストが承認されると、APS にサインアップしてアカウントを作成するための招待リンクが届きます。
  3. LevelPlay で APS の設定へ進む前に、上記の手順を完了する必要があります。

ステップ 2. APS ネットワークでスロットをセットアップする

  1. アプリメニューから適切なアプリケーションを選択し、「 setup 」をクリックします。
  2. マネタイズサービスの設定メニューとして「 IronSource LevelPlay 」を選択します。
  3. スロットを追加し、各スロットを定義します:
    1. 名前
    2. 広告サイズ
    3. プライスポイント(自動/手動)
  4. すべてのスロットの追加を完了し、認証情報を取得します:
    1. App ID を取得
    2. プライスポイントの CSV ファイルをダウンロード

ステップ 3. APS ネットワークをアクティベートする

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

  1. 上記の認証情報を取得したら、LevelPlay アカウントにログインし、 MonetizeSetupSDK Networks に移動します。
  2. Available Networks 」から APS を選択し、「 Activate 」ボタンをクリックします。
  3. アドネットワークの設定リストから APS の、「 Setup 」をクリックします。
  4. APS の アプリ ID を入力し、APS でダウンロードした CSV ファイルをそのままアップロードします。

ステップ 4. APS アダプターをビルドに追加する

Gradle

  1. 次の Maven URL がアプリモジュールの build.gradle スクリプトに存在することを確認してください。
    repositories {
        mavenCentral() 
        maven { 
             url 'https://android-sdk.is.com/' 
         }
    }

  2. アダプターの Maven 名をアプリモジュールの build.gradle スクリプトに追加します。
    dependencies {
        implementation ('com.amazon.android:aps-sdk:9.10.0+') 
        implementation ('com.ironsource.adapters:apsadapter:4.3.15')
        implementation ("com.iabtcf:iabtcf-decoder:2.0.10")
    }

ステップ 5. AndroidManifest.xml を更新l

Manifest Permissions:

<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" />

Manifest Activities:

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

Proguard ユーザーのみ

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

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

ステップ 6. APS SDK の初期化

APS ネットワークで広告を表示するには、ironSource と APS SDK の両方を初期化する必要があります。
アプリケーションを開いた直後、ironSource SDK を初期化する前に APS SDK を初期化します。 この際に APS セットアップのステップ 2 で定義した APS アプリ ID を使用します。

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

ステップ 7. 広告ごとの APS 入札情報を LevelPlay メディエーションへ共有する

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

必要な手順は次のとおりです:

  1. 各広告をロードする前に、APS 広告をロードします。
  2. SetNetworkData を呼び、APS の入札情報を ironSource へ共有します。
  3. LevelPlay メディエーション API を使用して、関連する広告ユニットをロードします。

バナー/MREC 広告をロードする

  1. 各広告をロードする前に、APS バナー広告リクエストを呼びます。スロット UUID を使用して広告ロードリクエストを作成します。
    final DTBAdRequest loader = new DTBAdRequest();
    loader.setSizes(new DTBAdSize(SLOT_WIDTH, SLOT_HEIGHT, "Your_Slot_UUID"));
    loader.loadAd(new DTBAdCallback()); 
    

  2. APS 広告のロードに成功した場合は、広告データを LevelPlay メディエーションへ共有します。これには次のパラメータを含める必要があります:
    1. 入札情報:Amazon 広告を表示するために必要な情報
    2. エンコードされたプライスポイント:APS から返された落札広告価格
    3. UUID:スロットのユニーク ID
    4. 幅:バナーの幅
    5. 高さ:バナーの高さ

    public void onSuccess(DTBAdResponse dtbAdResponse) {
        // Append the APS bid parameters to ironSource 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 バナー広告をロードします。
    詳細はこちら
バナーリロードメカニズム LevelPlay の自動リロードメカニズムの使用を選択した場合は、各インプレッションの後に必ず APS 広告をロードしてください。これにより、APS バナーも次回のオークションに確実に参加できるようになります。このロジックを維持したくない場合は、リロードメカニズムをキャンセルし、前の広告を破棄した後に次の広告を手動でロードしてください。

インタースティシャル広告をロードする

  1. 各広告をロードする前に、APS インタースティシャル広告リクエストを呼びます。ロード広告リクエストを作成するときは「 Slot UUID 」を使用します。
    final DTBAdRequest loader = new DTBAdRequest();
    loader.setSizes(new DTBAdSize.DTBInterstitialAdSize(YOUR_INTERSTITIAL_UUID));
    loader.loadAd(new DTBAdCallback());

    LevelPlay は、APS インタースティシャルビデオ広告を APS アダプター 4.3.3 以降サポートしています。インタースティシャルビデオをロードするには、以下のメソッドを呼びます:

    アプリがポートレートモードの場合:

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

    アプリがランドスケープモードの場合:

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

  2. APS 広告がロードに成功した場合は、広告データを LevelPlay メディエーションへ共有します。これには次のパラメータを含める必要があります:
    1. 入札情報:Amazon 広告を表示するために必要な情報
    2. エンコードされたプライスポイント:APS から返された落札広告価格
    3. UUID:スロットのユニーク ID

    public void onSuccess(DTBAdResponse dtbAdResponse) {
        // Append the APS bid parameters to ironSource 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() を呼びます。

  3. LevelPlay インタースティシャル広告を読み込みます。
    詳細はこちら

動画リワード広告

APS の実装は、アプリに実装する動画リワードの操作モードによって異なります。

  1. 手動ロードモード:APS の実装に推奨されるモードです。これには、各動画リワード広告をロードする前に APS 広告リクエストを呼ぶ必要があります。
  2. 動画リワードのデフォルトモード(自動ロード):動画リワードの表示に LevelPlay デフォルトモードを使用する場合、APS SDK を初期化した後、ironSource SDK を初期化する前に、最初の APS 広告をロードする必要があります。さらに、次のウォーターフォールリクエストのために、広告表示の前に次の APS ロードリクエストを呼ぶことをお勧めします。

動画リワード広告をロードする

  1. 各広告をロードする前(自動モードでは広告表示の前)に、APS の動画リワード広告リクエストを呼びます。ロード広告リクエストを作成するときは「 Slot UUID 」を使用します。
    アプリがポートレートモードの場合:
    final DTBAdRequest loader = new DTBAdRequest();
    loader.setSizes(new DTBAdSize.DTBVideo(320, 480, YOUR_REWARDED_VIDEO_UUID));
    loader.loadAd(new DTBAdCallback());

    アプリがランドスケープモードの場合:
    final DTBAdRequest loader = new DTBAdRequest();
    loader.setSizes(new DTBAdSize.DTBVideo(480, 320, YOUR_REWARDED_VIDEO_UUID));
    loader.loadAd(new DTBAdCallback());

  2. APS 広告がロードに成功した場合は、広告データを LevelPlay メディエーションへ共有します。これには次のパラメータを含める必要があります:
    1. 入札情報:Amazon 広告を表示するために必要な情報
    2. エンコードされたプライスポイント:APS から返された落札広告価格
    3. UUID:スロットのユニーク ID
      public void onSuccess(DTBAdResponse dtbAdResponse) {
          // Append the APS bid parameters to ironSource 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 video ad unit 
          JSONObject apsDataJson = new JSONObject(); 
          apsDataJson.put(IronSource.AD_UNIT.REWARDED_VIDEO.toString(), apsDataJsonRV);
          IronSource.setNetworkData("APS", apsDataJson);
       }

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

完了!
これで、アプリで APS 広告を配信する準備が整いました。


次のステップは?
Unity LevelPlay でさらに他のアドネットワークを活用するには、アダプターを実装し、ガイドに従って設定してください。