iOS 用のカスタムアダプタのビルド
Unity LevelPlay と統合するための広告ネットワーク用のカスタムアダプタを開発します。登録、アダプタの作成、パブリッシャーに必要なリソースの提供などの手順が含まれます。
読み終わるまでの所要時間 1 分最終更新 7日前
このドキュメントでは、カスタムアダプターをビルドし、ネットワークを Unity LevelPlay と統合するために必要なリソースをパブリッシャーに提供する手順について説明します。
前提条件
以下のベスト プラクティスも考慮してください。
- コードの一部としてメインスレッド要件をハンドルする
- コード保護と例外処理を追加して、予期しない障害からアプリケーションを保護する
ネットワーク用のアダプタの作成
ネットワーク アダプタがネットワーク広告ロジックを管理し、パブリッシャーが Unity LevelPlay 設定の一部としてネットワーク広告をディスプレイできるようにします。
このプロセスの一環として、Adapter クラス(BaseAdapter と呼ばれます)と、サポート予定の各広告単位に追加のクラスを作成する必要があります。
BaseAdapter は、ネットワーク初期化プロセスを含むネットワークワーク管理をサポートし、すべての広告ユニットに対してセッションを通じて使用可能な変数と定数を定義できます。
広告単位クラスは、広告のロード、表示、および管理のための広告単位ロジックを管理し、ウォーターフォール内の広告の表示ごとにインスタンス化されます。
ネットワークベースアダプタの作成
ネットワーク アダプタを実装するには、新しいクラスを作成し、Ironsource ISBaseNetworkAdapter クラスをインポートします。
アダプタを作成するときは、ネットワーク登録確認メールから受け取ったベース アダプタ名を使用します。
#import "IronSource/IronSource.h"@インターフェース IS<YourNetworkName>CustomAdapter :ISBaseNetworkAdapter
ネットワークSDKの初期化
Unity LevelPlay はメディエーションの初期化プロセスの一環としてベース アダプタの init メソッドを呼び出します。その結果、このメソッドを複数回呼び出すことができます。
init 実装の一部として、NetworkInitializationListener で定義された初期化コールバックを、成功時(onInitSuccess)および失敗時(onInitFailed)に毎回呼び出してください。
adData パラメーターには、Unity LevelPlay プラットフォームのパブリッシャーから提供された設定データが含まれます。ISAdData クラスの詳細については、こちらを参照してください。
(void)init:(ISAdData *)adDatadelegate:(id<ISNetworkInitializationDelegate>)delegate { ... // ハンドルエラー if (エラー処理) { [delegate onInitDidFailWithErrorCode:ISAdapterErrorMissingParams errorMessage:error]; } // init success (初期化の成功) [delegate onInitDidSucceed]; }
SDK とアダプターのバージョンを提供する
この情報は、パブリッシャーのアプリケーションに現在実装されている SDK とアダプタのバージョンを示します。getNetworkSDKVersion を実装する場合は、アダプタの更新と SDK サポートの面でより柔軟性を持たせるために、ハードコードされた値ではなくメソッドを使用することをお勧めします。
- (NSString *) networkSDKVersion { return [ALSdk version];}- (NSString *) adapterVersion { return kAdapterVersion;}
インタースティシャル広告単位のサポートを追加
インタースティシャル広告単位クラスの作成
インタースティシャル広告単位を管理するクラスを作成します。ironsource ISBaseAdapter をインポートし、関連するデリゲートをメインのアダプタファイルに追加します。このクラスは、パブリッシャーがロードメソッドによってアプリケーションで新しいインタースティシャル広告をトリガーするたびにアクティブになります。
登録プロセスの一部として Ironsource から受け取ったインタースティシャルクラス名を使用します。
#import "IronSource/IronSource.h"@インターフェース IS<YourNetworkName>CustomInterstitial :ISBaseInterstitial
インタースティシャル広告のリクエスト
loadAdWithAdData メソッドをオーバーライドして、パブリッシャーがネットワークからインタースティシャル広告をリクエストできるようにします。ISAdData を使用すると、パブリッシャーの入力にアクセスし、このプロセスに必要な広告識別子を受け取ることができます。
広告のロードが成功した場合(adDidLoad)、およびすべての種類の失敗(adDidFailToLoadWithErrorType)に対して、ISInterstitialAdDelegate コールバックを実装してください。リスナーコールバックが事前に定義された時間が経過してもトリガーされない場合、瞑想はタイムアウトによってロードプロセスを停止します。ネットワークワークは広告を提供できません。
- (void)loadAdWithAdData:(nonnull ISAdData *)adData デリゲート:(null でない ID<ISInterstitialAdDelegate>)デリゲート { // Load your ad }
広告が利用可能かどうかの確認
isAdAvailableWithAdData メソッドをオーバーライドして、パブリッシャーがユーザーに広告を表示する前に各広告の準備状況を確認できるようにします。メソッドは、広告が正常にロードされた場合は YES、現在ロードされている広告がない場合は NO を返します。これを行うには、ネットワークの is-ad-available 表示(存在する場合)を使用するか、loadAdWithAdData メソッドと showAdWithViewController メソッドの一部として広告の状態を手動で管理します。
- (ブーリアン)isAdAvailableWithAdData:(null でない ISAdData *)adData { return _renderedAd != nil;}
インタースティシャル広告を表示する
広告が正常にロードされると、パブリッシャーはそれを表示できるようになります。isAdAvailableWithAdData が true であることを確認した後に showAdWithViewController メソッドをオーバーライドして、パブリッシャーにより良い体験を提供できます。このメソッドで受け取る情報の一部は ISAdData です。このオブジェクトを使用すると、関連する広告を表示できます。表示を実行できなかった場合は、adDidFailToShowWithErrorCode コールバックが返されます。
- (void)showAdWithViewController:(nonnull UIViewController *)viewController adData:(null でない ISAdData *)adData デリゲート:(null でない ID<ISInterstitialAdDelegate>)デリゲート { // 広告が表示できるかどうかを確認します if (CannotShowsAd) { [delegate adDidFailToShowWithErrorCode:ISAdapterErrorInternal errorMessage:nil]; return; } // show ad . [_ad showAd:_renderedAd];}
ISInterstitialAdDelegate コールバックのレポート
ネットワークの機能に応じて、ISInterstitialAdDelegate コールバックをオーバーライドしてください。デリゲートを正しく報告することで、Unity LevelPlay のベストプラクティスフローが保証され、ネットワークワークのパフォーマンデータが Ironsource プラットプラットフォームに正しく反映されるようになります。
必須のコールバック
// インタースティシャル広告が正常にロードされたことを示します。 - (void)adDidLoad;// The interstitial ad failed to load. Use ironSource ErrorTypes (No Fill / Other)- (void)adDidFailToLoadWithErrorType:(ISAdapterErrorType)errorType errorCode:(NSInteger)errorCode errorMessage:(NSString*)errorMessage;// The interstitial ad was displayed successfully to the user.これはインプレッションを示します。- (void)adDidOpen;// User closed the interstitial ad- (void)adDidClose;// The ad could not be displayed- (void)adDidFailToShowWithErrorCode:(NSInteger)errorCode errorMessage:(NSString*)errorMessage;
任意コールバック
// アドオープン(インプレッション)に加えて、広告ネットワークレポートにも成功の兆候が表示される場合に実装します。 - (void)adDidShowSucceed;// Indicates the ad was clicked- (void)adDidClick;
ベースアダプタからデータを取得する方法(任意)
getNetworkAdapter API は、ベースアダプタがセッションを通じて広告ユニットに関連する状態またはパラメーターを管理する場合に使用します。これには、広告単位 API で使用する必要があるベースアダプタの一部として定義されたすべてのオブジェクトが含まれます。
// example of data retrieved from your network level adapterIS<yourNetworkName>CustomAdapter *sampleNetworkAdapter = nil;id<ISAdapterBaseProtocol> adapter = [self getNetworkAdapter];if ([adapter isKindOfClass:[IS<yourNetworkName>CustomAdapter class]]) { sampleNetworkAdapter = (IS<yourNetworkName>CustomAdapter*) adapter;}
動画リワード広告単位のサポートを追加
動画リワード広告単位クラスの作成
インタースティシャル広告単位を管理するクラスを作成します。ironsource ISBaseAdapter をインポートし、関連するデリゲートをメインのアダプタファイルに追加します。このクラスは、パブリッシャーがロードメソッドによってアプリケーションで新しいインタースティシャル広告をトリガーするたびにアクティブになります。
登録プロセスの一環として Ironsource から受け取った動画リワードクラス名を使用します。
#import "IronSource/IronSource.h"@インターフェース IS<YourNetworkName>CustomRewardedVideo :ISBaseRewardedVideo
動画リワード広告のリクエスト
loadAdWithAdData メソッドをオーバーライドして、パブリッシャーがネットワークからインタースティシャル広告をリクエストできるようにします。ISAdData を使用すると、パブリッシャーの入力にアクセスし、このプロセスに必要な広告識別子を受け取ることができます。
広告のロードの成功(adDidLoad)とあらゆる種類の失敗(adDidFailToLoadWithErrorType)に対して ISRewardedVideoAdDelegate コールバックを実装してください。リスナーコールバックが事前に定義された時間が経過してもトリガーされない場合、瞑想はタイムアウトによってロードプロセスを停止します。ネットワークワークは広告を提供できません。
- (void)loadAdWithAdData:(nonnull ISAdData *)adData デリゲート:(null でない ID<ISRewardedVideoAdDelegate>)デリゲート { // Load your ad}
広告が利用可能かどうかの確認
isAdAvailableWithAdData メソッドをオーバーライドして、パブリッシャーがユーザーに広告を表示する前に各広告の準備状況を確認できるようにします。メソッドは、広告が正常にロードされた場合は YES、現在ロードされている広告がない場合は NO を返します。これを行うには、ネットワークの is-ad-available 表示(存在する場合)を使用するか、loadAdWithAdData メソッドと showAdWithViewController メソッドの一部として広告の状態を手動で管理します。
- (ブーリアン)isAdAvailableWithAdData:(null でない ISAdData *)adData { ... return _renderedAd != nil;}
動画リワード広告を表示する
広告が正常にロードされると、パブリッシャーはそれを表示できるようになります。isAdAvailableWithAdData が true であることを確認した後に showAdWithViewController メソッドをオーバーライドして、パブリッシャーにより良い体験を提供できます。このメソッドで受け取る情報の一部は ISAdData です。このオブジェクトを使用すると、関連する広告を表示できます。表示を実行できなかった場合は、adDidFailToShowWithErrorCode コールバックが返されます。
- (void)showAdWithViewController:(nonnull UIViewController *)viewController adData:(null でない ISAdData *)adData デリゲート:(null でない ID<ISRewardedVideoAdDelegate>)デリゲート { // 広告が表示できるかどうかを確認します if (CannotShowsAd) { [delegate adDidFailToShowWithErrorCode:ISAdapterErrorInternal errorMessage:nil]; return; } // show ad [_ad showAd:_renderedAd];}
ISRewardedVideoAdDelegate コールバックのレポート
必ずネットワークの機能に応じて ISRewardedVideoAdDelegate コールバックをオーバーライドしてください。デリゲートを正しく報告することで、Unity LevelPlay メディエーションのベストプラクティスフローが保証され、ネットワークワークのパフォーマンデータが Ironsource プラットプラットフォームに正しく反映されるようになります。
必須のコールバック
// 動画リワード広告が正常にロードされたことを示します - (void)adDidLoad;// The rewarded video ad failed to load. Use ironSource ErrorTypes (No Fill / Other)- (void)adDidFailToLoadWithErrorType:(ISAdapterErrorType)errorType errorCode:(NSInteger)errorCode errorMessage:(NSString*)errorMessage;// The rewarded video ad was displayed successfully to the user.これはインプレッションを示します。- (void)adDidOpen;// User closed the rewarded video ad- (void)adDidClose;// The ad could not be displayed- (void)adDidFailToShowWithErrorCode:(NSInteger)errorCode errorMessage:(NSString*)errorMessage;// User clicked the rewarded video ad- (void)adDidClick;// User received a reward after watching the ad- (void)adRewarded;
任意コールバック
// 動画広告が開始されたことを示します - (void)adDidStart;// Indicates the video ad ended- (void)adDidEnd// indicates that ad is displayed on foreground- (void)adDidBecomeVisible// Implement if in addition to ad-open (impression), your ad network reports also show success indication- (void)adDidShowSucceed
ベースアダプタからデータを取得する方法(任意)
getNetworkAdapter API は、ベースアダプタがセッションを通じて広告ユニットに関連する状態またはパラメーターを管理する場合に使用します。これには、広告単位 API で使用する必要があるベースアダプタの一部として定義されたすべてのオブジェクトが含まれます。
// example of data retrieved from your network level adapterIS<yourNetworkName>CustomAdapter *sampleNetworkAdapter = nil;id<ISAdapterBaseProtocol> adapter = [self getNetworkAdapter];if ([adapter isKindOfClass:[IS<yourNetworkName>CustomAdapter class]]) { sampleNetworkAdapter = (IS<yourNetworkName>CustomAdapter*) adapter;}
バナー広告単位のサポートを追加
ステップ 1. Create バナー広告単位クラス
バナー広告単位を管理するクラスを作成します。このクラスは、パブリッシャーがロードメソッドによってアプリケーションで新しいバナー広告をトリガーするたびにアクティブになります。
登録プロセスの一環として Ironsource から受け取ったバナークラス名を使用します。
#import "IronSource/IronSource.h"@インターフェース IS<YourNetworkName>CustomBanner :ISBaseBanner
バナーサイズ
サポートされているバナーサイズの詳細については、以下の表を参照してください。カスタムネットワークは、これらのサイズの任意の組み合わせをサポートできます。バナーサイズは、loadAdWithAdData API の一部としてパラメーターとして受け取ります。
バナーのサイズが SMART の場合は、デバイスの画面サイズに応じてサイズをバナーまたはリーダーボードのいずれかに変更してください (以下の手順を参照)。
ISBannerSize | 説明 | ポイントの寸法 (幅 x 高さ) |
|---|---|---|
| ISBannerSize_BANNER | 標準バナー | 320×50 |
| ISBannerSize_LARGE | Large バナー | 320 x 90 |
| ISBannerSize_RECTANGLE | 中矩形 (MREC) | 300 x 250 |
| ISBannerSize_SMART | スマートバナー (iPhone と iPad のサイズと向きを調整する広告を自動的にレンダリング) | If (iPhone ≤ 720) 320 x 50 If (iPad ≤ 720) 728 x 90 |
ステップ 2. バナー広告をリクエストします
loadAdWithAdData メソッドをオーバーライドして、パブリッシャーがネットワークからバナー広告をリクエストできるようにします。ISAdData を使用すると、パブリッシャーの入力にアクセスし、このプロセスに必要な広告識別子を受け取ることができます。ISBannerSize には要求されたバナーサイズが表示されます。
- (void)loadAdWithAdData:(nonnull ISAdData *)adData viewController:(UIViewController *)viewController size:(ISBannerSize *)size デリゲート:(null でない ID<ISBannerAdDelegate>)デリゲート{}
ステップ 3. 破棄バナー
ironsource では、アプリケーション開発者が以下の destroyAdWithAdData メソッドを実装してバナー広告を破棄する必要があります。
public void destroyAdWithAdData:(nonnull ISAdData *)adData {}
ステップ 4. ISBannerAdDelegate コールバックのレポート
ネットワークの機能に従って ISBannerAdDelegate コールバックをレポートします。これにより、ネットワークのパフォーマンス データが Ironsource プラットフォームに正しく反映されます。
必須のコールバック
// バナー広告が正常にロードされたことを示します -(void)adDidLoadWithView:(UIView *) ビュー // バナー広告のロードに失敗しました。用途ironSource ErrorTypes (塗りつぶしなし/その他)-(void)adDidFailToLoadWithErrorType:(ISAdapterErrorType)errorTypeerrorCode:(NSInteger)errorCode errorMessage:(nullable NSString*)errorMessage// バナー広告がユーザーに正常に表示されます。これは、impression on the ironSource platform. -(void)adDidOpen // Indicates an adがクリックされました -(void)adDidClick
任意コールバック
//クリック後、ユーザーがアプリケーションから取得 - (void)adWillLeaveApplication // 呼び出されます広告ビューが全画面コンテンツを表示した後- (void)adWillPresentScreen; -(void)adWillPresentScreen // 全画面のコンテンツの後に呼び出されますis removed - (void)adDidDismissScreen
アダプターを使用してパブリッシャーの入力にアクセスする
カスタムアダプター登録プロセスの一環として、アプリケーションとインスタンスのレベルキーを提供しました。
これらのキーの値は、パブリッシャーによって Unity LevelPlay プラットフォーム設定で定義されます。これらの値は、ISAdData オブジェクトを使用して実行時に使用できます。
ISAdData オブジェクトには設定値を含むマップが含まれ、アダプタと広告単位クラス API の一部です。このパラメーターは init、loadAdWithAdData、showAdWithViewController、および isAdAvailableWithAdData メソッドで使用できます。
登録確認の電子メールの一部として受け取った名前を使用して、ISAdData マップ構造体から値にアクセスできます。
// パブリッシャー設定パラメータの取得 NSString *appLevelParam1 = ISAdData.configuration[<YourAppLevelParam1>];NSString *instanceLevelParam1 = ISAdData.configuration[<YourInstanceLevelParam1>];NSString *instanceLevelParam2 = ISAdData.configuration[<YourInstanceLevelParam2>];
ironsource エラーコードとエラータイプの使用
エラータイプ
これは adDidFailToLoadWithErrorType デリゲートに関連しています。
エラータイプ | 説明 |
|---|---|
| ISAdapterErrorTypeNoFill | 表示できる広告がない場合に使用 |
| ISAdapterErrorTypeInternal | ネットワークによって報告されるその他の理由で使用 |
エラーコード
これらのエラーコードは、adDidFailToLoadWithErrorType および adDidFailToShowWithErrorCode デリゲートに関連しています。
エラーコード | 説明 |
|---|---|
| ISAdapterErrorMissingParams | API が呼び出されたときに一部の必要な情報が利用できなかったため、アクションが失敗しました。 |
| ISAdapterErrorAdExpired | を使用して、広告の有効期限が切れたかどうかを示します。 |
| ISAdapterErrorInternal | ネットワークによって報告されたその他のエラーに使用されます。 |
アダプタのデバッグ(任意)
デバッグログをサポートする場合は、アプリケーションから setAdapterDebug メソッドを実装して呼び出します。これは ISBaseNetworkAdapter の一部として行う必要があります。
- (void) setAdapterDebug:(ブーリアン) adapterDebug { _adapterDebug = adapterDebug;}