Amazon Publisher Services 実装ガイド

Before you start

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

APS iOS オペレーティングシステムのバージョン iOS12 以降をサポートします。

ステップ 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 アダプターをビルドに追加する

Cocoapods

APS アダプターと SDK を CocoaPods で実装するには、Podfile に次の行を入力します。

pod 'IronSourceAPSAdapter','4.3.17.0'

ステップ 5. SKAdNetworkItems を Info.plist に設定する

次のコードを参考に、Info.plist の SKAdNetworkItems 以下に APS の SKAN ID を定義してください:

<key>SKAdNetworkItems</key>
<array>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>p78axxw29g.skadnetwork</string>
</dict>
</array>

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

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

#import <DTBiOSSDK/DTBiOSSDK.h>
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
  [[DTBAds sharedInstance] setAppKey: @"APS_app_id"];
  return YES;
}

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

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

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

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

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

  1. 各広告をロードする前に、APS バナー広告リクエストを呼びます。スロット UUID を使用して広告ロードリクエストを作成します。
    DTBAdSize *size = [[DTBAdSize alloc] initBannerAdSizeWithWidth:320 height:height andSlotUUID:slotUUID];
    DTBAdLoader *adLoader = [DTBAdLoader new];
    [adLoader setSizes:size, nil];
    [adLoader loadAd:self];
    

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

    - (void)onSuccess:(DTBAdResponse *)adResponse{ 
      
        NSString* amznPricePoint = [adResponse amznSlots];
        NSDictionary* mediationHints = [adResponse mediationHints];
        
        NSNumber* width = [NSNumber numberWithInt:adSize.width];
        SNumber* height = [NSNumber numberWithInt:adSize.height];
            
        NSDictionary* bannerData = @{@"uuid":slotUUID, @"width":width, @"height":height,  @"pricePointEncoded":amznPricePoint, @"mediationHints":mediationHints};
        NSDictionary* apsData = @{IS_BANNER:bannerData};
            
        [IronSource setNetworkDataWithNetworkKey:@"APS" andNetworkData:apsData];
       
    }

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

  3. ironSource バナー広告をロードします。
    詳細はこちら
バナーリロードメカニズム LevelPlay の自動リロードメカニズムの使用を選択した場合は、各インプレッションの後に必ず APS 広告をロードしてください。これにより、APS バナーも次回のオークションに確実に参加できるようになります。このロジックを維持したくない場合は、リロードメカニズムをキャンセルし、前の広告を破棄した後に次の広告を手動でロードしてください。

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

  1. 各広告をロードする前に、APS インタースティシャル広告リクエストを呼びます。ロード広告リクエストを作成するときは「 Slot UUID 」を使用します。
    DTBAdSize *size = [[DTBAdSize alloc] initInterstitialAdSizeWithSlotUUID:slotUUID];
    DTBAdLoader *adLoader = [DTBAdLoader new];
    [adLoader setSizes:size, nil];
    [adLoader loadAd:self];

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

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

    DTBAdSize *size = [[DTBAdSize alloc] initVideoAdSizeWithPlayerWidth:320 height:480 andSlotUUID:slotUUID];
    DTBAdLoader *adLoader = [DTBAdLoader new];
    [adLoader setSizes:size, nil];
    [adLoader loadAd:self];

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

    DTBAdSize *size = [[DTBAdSize alloc] initVideoAdSizeWithPlayerWidth:480 height:320 andSlotUUID:slotUUID];
    DTBAdLoader *adLoader = [DTBAdLoader new];
    [adLoader setSizes:size, nil];
    [adLoader loadAd:self];

  2. APS 広告がロードに成功した場合は、広告データを LevelPlay メディエーションへ共有します。これには次のパラメータを含める必要があります:
    1. 入札情報:Amazon 広告を表示するために必要な情報
    2. エンコードされたプライスポイント:APS から返された落札広告価格
    3. UUID:スロットのユニーク ID
      - (void)onSuccess:(DTBAdResponse *)adResponse{ //svt on onSuccess
          
          NSString* amznPricePoint = [adResponse amznSlots];
          NSDictionary* mediationHints = [adResponse mediationHints];
          NSDictionary* isData = @{@"uuid":slotUUID, @"pricePointEncoded":amznPricePoint, @"mediationHints":mediationHints};
          NSDictionary* apsData = @{IS_INTERSTITIAL:isData};
              
          [IronSource setNetworkDataWithNetworkKey:@"APS" andNetworkData:apsData];
      }

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

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

動画リワード広告

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

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

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

  1. 各広告をロードする前(自動モードでは広告表示の前)に、APS の動画リワード広告リクエストを呼びます。ロード広告リクエストを作成するときは「 Slot UUID 」を使用します。
    アプリがポートレートモードの場合:
    DTBAdSize *size = [[DTBAdSize alloc] initVideoAdSizeWithPlayerWidth:320 height:480 andSlotUUID:slotUUID];
    DTBAdLoader *adLoader = [DTBAdLoader new];
    [adLoader setSizes:size, nil];
    [adLoader loadAd:self];

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

    DTBAdSize *size = [[DTBAdSize alloc] initVideoAdSizeWithPlayerWidth:480 height:320 andSlotUUID:slotUUID];
    DTBAdLoader *adLoader = [DTBAdLoader new];
    [adLoader setSizes:size, nil];
    [adLoader loadAd:self];

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

- (void)onSuccess:(DTBAdResponse *)adResponse{
    
    NSString* amznPricePoint = [adResponse amznSlots];
    NSDictionary* mediationHints = [adResponse mediationHints];
    NSDictionary* rvData = @{@"uuid":slotUUID, @"pricePointEncoded":amznPricePoint, @"mediationHints":mediationHints};
    NSDictionary* apsData = @{IS_REWARDED_VIDEO:rvData};
        
    [IronSource setNetworkDataWithNetworkKey:@"APS" andNetworkData:apsData];
}

APS がフィルを返さない場合は、LevelPlay の load rewarded video メソッドを呼びます。

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


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