iOSのリワード広告単位APIへの移行
動画リワード広告単位をiOSアプリケーションに実装するには、広告単位の初期化、デリゲートの設定、広告イベントの処理を行います。
読み終わるまでの所要時間 13 分最終更新 8日前
このガイドでは、広告単位IDをウォーターフォール識別子として使用し、SDKバージョン9.0.0時点でLevelPlay APIを統合し、リワード広告をロードおよびディスプレイする方法について説明します。
LevelPlay プラットフォームで広告単位 ID を確認します。
リワード広告をロードおよびディスプレイするには、LevelPlay メディエーションプラットフォームで利用できる広告単位 ID を使用する必要があります。
- LevelPlay アカウントで、設定> 広告ユニット に操作します。
- リワード型広告単位IDをコピーし、コードに統合します。
LevelPlay SDK の初期化
LevelPlay SDK を初期化するには、以下の手順に従います。
- 完了ハンドラーの成功と失敗を定義します。
- セッションで初期化する広告フォーマットのリストを定義します。これには、複数の広告単位ではない API を使用するすべての広告フォーマットを含める必要があります。
- appKey、広告フォーマット、およびユーザー ID (必要な場合) を使用して LevelPlay init API を呼び出します。
// キーダーを作成します。ユーザー ID がある場合は追加LPMInitRequestBuilder *requestBuilder = [[LPMInitRequestBuilder alloc] initWithAppKey:@"appKey"];[requestBuilder withUserId:@"UserId"];// 初期リクエストのビルドLPMInitRequest *initRequest = [requestBuilder build];// 準備したリクエストで LevelPlay を初期化[LevelPlay initWithRequest:initRequest 完了:^(LPMConfiguration *_Nullable config, NSError *_Nullable error){ if(error) { // 初期化期化中にエラーが発生しました。必要なアクションを実行するか再試行してください } else { // 初期化に成功しました。バナー広告のロードやその他のタスクを実行できるようになりました }}];
初期化期化の結果
Success:初期化が正常に完了したときにトリガーされます。この通知を受け取ったら、広告を作成してロードできます。
エラー: 設定が正常に取得されなかったため、広告をロードできません。後で LevelPlay SDK の初期化を試してみることをお勧めします (インターネット接続が利用可能なとき、または失敗の理由が解決されたとき)。
コンポーネント | 古い機能 | 広告単位 (新規) |
|---|---|---|
| API | IronSource.initWithAppKey | LevelPlay.initWithRequest |
| init 結果 | onInitializationComplete | 完了 |
| – | error |
リワード広告の作成
リワード型広告オブジェクトの作成は、完了結果を受信してから実行する必要があります。
オブジェクトは、セッションを通じて複数のロードと表示をハンドルできる再利用可能なインスタンスです。作成後、同じ広告単位の広告をロードおよび表示するために使用します。
より高度な実装では、必要に応じて複数のリワード広告オブジェクトを作成できます。
// リワード広告の作成self.rewardedAd = [[LPMRewardedAd alloc] initWithAdUnitId:@"adUnitId"];
リワード型デリゲートの実装
作成したリワード型広告単位にLPMRewardedAdDelegateを実装して、広告配信に関する情報を取得します。
- リワード広告をロードする前にリスナーを設定することをお勧めします。
- 各リワード広告には、独自のリスナー実装が必要です。
- コールバックはメインスレッドで実行されます。
// リワード広告の作成self.rewardedAd = [[LPMRewardedAd alloc] initWithAdUnitId:@"adUnitId"]; // 実装デリゲートself.rewardedAd.delegate = self;#pragma mark - LPMRewardedAdDelegate メソッド- (void)didLoadAdWithAdInfo:(LPMAdInfo *)adInfo {}- (void)didFailToLoadAdWithAdUnitId:(NSString *)adUnitId error:(NSError *)error {}- (void)didChangeAdInfo:(LPMAdInfo *)adInfo {}- (void)didDisplayAdWithAdInfo:(LPMAdInfo *)adInfo {}- (void)didFailToDisplayAdWithAdInfo:(LPMAdInfo *)adInfo error:(NSError *)error {}- (void)didClickAdWithAdInfo:(LPMAdInfo *)adInfo {}- (void)didCloseAdWithAdInfo:(LPMAdInfo *)adInfo {}- (void)didRewardAdWithAdInfo:(LPMAdInfo *)adInfo reward:(LPMReward *)reward {}
LevelPlay リワード広告イベント
didLoadAd:広告が正常にロードされたときに提供されます。
didFailToLoadAd:広告のロードに失敗したときに提供されます。広告単位情報が含まれます。
didDisplayAd:広告が表示されるときに提供されます。これはインプレッションに相当します。
didFailToDisplayAd:広告の表示に失敗したときに提供されます。
didRewardAd:広告に報酬が支払われるときに提供されます。広告単位情報と報酬情報が含まれます。
didClickAd (任意):ユーザーが広告をクリックしたときに提供されます。
didCloseAd:広告が閉じられたときに提供されます。
didChangeAdInfo (任意):広告情報が更新されたときに提供されます。別の広告がロードされていて、CPM/Rate が高い場合に利用できます。
コンポーネント | 古い機能 | 広告単位 (新規) |
|---|---|---|
| デリゲート | LevelPlayRewardedAdDelegate | LPMRewardedAdDelegate |
| イベント | onAdReady | didLoadAd |
| onAdLoadFailed | didFailToLoadAd | |
| onAdOpened | didDisplayAd | |
| onAdClosed | didCloseAd | |
| onAdShowFailed | didFailToDisplayAd | |
| onAdRewarded | didRewardAd | |
| onAdClicked | didClickAd | |
| onAdShowSucceeded | – (非推奨) | |
| – | didChangeAdInfo |
リワード型広告のロード
onInitSuccess コールバックを受信すると、リワード広告をロードする準備ができます。これは、 メソッドを使用して行う必要があります。
// 広告のロードまたはリロード[self.rewardedAd loadAd];
リワード広告の表示
showAd API を使用して、onAdLoaded コールバックの受信後にリワード広告を表示できます。
プレースメントを使用している場合は、次に示すように、プレースメントの名前を API の一部として共有します。
// 配置なしで表示 [self.rewardedAd showAdWithViewController:self placementName:nil];// 配置で表示 [self.rewardedAd showAdWithViewController:self placementName:placementName];
広告の準備ができているか確認
表示の失敗を避け、広告が正しく表示されるようにするために、showAd API を呼び出す前に以下の API を使用することをお勧めします。
isAdReady:広告が正常にロードされ、広告単位が上限に達していない場合は true、それ以外の場合は false を返します。
isPlacementCapped: 有効な配置に上限がある場合に true を返します。配置が有効でないか、上限がない場合、この API は false を返します。
// 広告の準備ができていることと、配置に上限がないことを確認します。 if ([self.rewardedAd isAdReady] && ![LPMRewardedAd isPlacementCapped:placementName]) { [self.rewardedAd showAdWithViewController:self placementName:placementName];}
広告がプレイヤーに正常に表示されたら、Rewarded Ad のロード ステップを繰り返して、別の広告をロードできます。一度に 1 つの広告をロードするときに、新しい広告エンティティを作成する必要はありません。
ユーザーの報酬
LevelPlay SDK は、ユーザーがビデオを正常に視聴するたびに didRewardAd を起動します。
didRewardAd と didCloseAd は非同期です。didCloseAd の後で didRewardAd が起動された場合でもゲーム内報酬を付与するようにリスナーを設定してください。
- (void)didRewardAdWithAdInfo:(LPMAdInfo *)adInfo 報酬:(LPMReward *)reward { // ユーザーに報酬を付与するロジックを実装します NSString *name = reward.name; NSInteger *amount = reward.amount;}
複数の広告単位リワード型API
古い機能 | 広告単位 (新規) | |
|---|---|---|
| クラス | IronSource | LPMRewardedAd |
| API | loadRewardedVideo | loadAd |
| showRewardedVideo | showAd | |
| isRewardedVideoPlacementCapped | isPlacementCapped | |
| isRewardedVideoAvailable | isAdReady | |
| placement.getRewardName | reward.name | |
| placement.getRewardAmount | reward.amount |
リワード広告の完全な実装例
NS_ASSUME_NONNULL_BEGIN@interface RewardedAdViewController () <LPMRewardedAdDelegate>@プロパティ(非アトミック、強)LPMRewardedAd *rewardedAd;@end@implementation RewardedAdViewController- (void)createRewardedAd { self.rewardedAd = [[LPMRewardedAd alloc] initWithAdUnitId:@"adUnitId"]; self.rewardedAd.delegate = self;}- (void)loadRewardedAd { // 広告のロードまたはリロード [self.rewardedAd loadAd];}- (void)showRewardedAd { if ([self.rewardedAd isAdReady]) { [self.rewardedAd showAdWithViewController:self placementName:NULL]; }}- (void)showRewardedAdWithPlacementName:(NSString *)placementName { // 広告の準備ができていることと、配置に上限がないことを確認します。 if ([self.rewardedAd isAdReady] && ![LPMRewardedAd isPlacementCapped:placementName]) { [self.rewardedAd showAdWithViewController:self placementName:placementName]; }}#pragma mark - LPMRewardedAdDelegate メソッド- (void)didLoadAdWithAdInfo:(LPMAdInfo *)adInfo {}- (void)didFailToLoadAdWithAdUnitId:(NSString *)adUnitId error:(NSError *)error {}- (void)didChangeAdInfo:(LPMAdInfo *)adInfo {}- (void)didDisplayAdWithAdInfo:(LPMAdInfo *)adInfo {}- (void)didFailToDisplayAdWithAdInfo:(LPMAdInfo *)adInfo error:(NSError *)error {}- (void)didClickAdWithAdInfo:(LPMAdInfo *)adInfo {}- (void)didCloseAdWithAdInfo:(LPMAdInfo *)adInfo {}- (void)didRewardAdWithAdInfo:(LPMAdInfo *)adInfo reward:(LPMReward *)reward {}@endNS_ASSUME_NONNULL_END