iOS の動画リワード実装
ironSource 動画リワード広告ユニットは、ユーザーの動画広告視聴完了と引き換えに価値のあるアプリ内コンテンツを報酬として付与する魅力的な広告体験を提供します。このユーザー主導の広告ユニットは、ゲームアプリに最適であらゆるアプリ体験を向上させることができます。
ステップ 1. 動画リワードデリゲートを実装する
ironSource SDK はいくつかのイベントを発火させて広告のアベイラビリティと視聴完了を通知するので、ユーザーに報酬を与えるタイミングを知ることができます。
SDK は、以下にリストされているすべての発生しうるイベントをデリゲートに通知します:
+ (void)setLevelPlayRewardedVideoDelegate:(nullable id<LevelPlayRewardedVideoDelegate>)delegate;
#pragma mark - LevelPlayRewardedVideoDelegate
/**
Called after a rewarded video has changed its availability to true.
@param adInfo The info of the ad.
Replaces the delegate rewardedVideoHasChangedAvailability:(true)available
*/
- (void)hasAdAvailableWithAdInfo:(ISAdInfo *)adInfo {}
/**
Called after a rewarded video has changed its availability to false.
Replaces the delegate rewardedVideoHasChangedAvailability:(false)available
*/
- (void)hasNoAvailableAd {}
/**
Called after a rewarded video has been viewed completely and the user is eligible for a reward.
@param placementInfo An object that contains the placement's reward name and amount.
@param adInfo The info of the ad.
*/
- (void)didReceiveRewardForPlacement:(ISPlacementInfo *)placementInfo withAdInfo:(ISAdInfo *)adInfo {}
/**
Called after a rewarded video has attempted to show but failed.
@param error The reason for the error
@param adInfo The info of the ad.
*/
- (void)didFailToShowWithError:(NSError *)error andAdInfo:(ISAdInfo *)adInfo {}
/**
Called after a rewarded video has been opened.
@param adInfo The info of the ad.
*/
- (void)didOpenWithAdInfo:(ISAdInfo *)adInfo {}
/**
Called after a rewarded video has been dismissed.
@param adInfo The info of the ad.
*/
- (void)didCloseWithAdInfo:(ISAdInfo *)adInfo {}
/**
Called after a rewarded video has been clicked.
This callback is not supported by all networks, and we recommend using it
only if it's supported by all networks you included in your build
@param adInfo The info of the ad.
*/
- (void)didClick:(ISPlacementInfo *)placementInfo withAdInfo:(ISAdInfo *)adInfo {}
リスナーの完全な実装については、こちらで確認できます。
エラーコード
ironSource は、実装中もしくは本番環境で発生する可能性のあるエラーを理解するのに役立つエラーコードメカニズムを提供しています。こちらのガイドをご覧ください。
コールバック
コールバックが常にメインスレッドで実行されていると想定しないでください。ironSource コールバックから生じる UI インタラクションまたは更新は、実行する前にメインスレッドに渡す必要があります。
ネットワーク接続ステータス
ironSource Network Change Status 関数を使用して、ユーザーのデバイスのインターネット接続状況を判別及びモニタリングすることができます。これにより、SDK はネットワーク状況の変更に応じて広告配信可能な状態を示すアベイラビリティを変更できます。つまり、ネットワーク接続がない場合、アベイラビリティは FALSE になります。この関数のデフォルトは false です。接続の変更を監視する場合は、SDK の初期化において次の文字列を使用してアクティベートします:
[IronSource shouldTrackReachability:YES];
ステップ 2. ユーザーに動画広告を表示する
広告のアベイラビリティ
Rewarded Video Delegate とその関数を正しく実装することにより、hasAdAvailableWithAdInfo を通じて広告配信可能な状態を示すアベイラビリティステータスを受け取ることができます。その後、広告のアベイラビリティが変更されると、以下のデリゲート関数で通知されます:
/**
Called after a rewarded video has changed its availability to true.
@param adInfo The info of the ad.
Replaces the delegate rewardedVideoHasChangedAvailability:(true)available
*/
- (void)hasAdAvailableWithAdInfo:(ISAdInfo *)adInfo {
//Change the in-app 'Traffic Driver' state according to availability.
}
/**
Called after a rewarded video has changed its availability to true.
@param adInfo The info of the ad.
Replaces the delegate rewardedVideoHasChangedAvailability:(true)available
*/
public func hasAdAvailable(with adInfo: ISAdInfo) {
//Change the in-app 'Traffic Driver' state according to availability.
}
また、次の関数を直接呼ぶ事で広告のアベイラビリティを取得することができます:
広告プレースメント
ironSource 広告プレースメントを使用すると、動画リワード体験をカスタマイズおよび最適化できます。このツールを使用すると、アプリ内のさまざまな場所でユーザーに動画を表示したり、プレースメントごとに報酬や報酬量をカスタマイズすることができます。以下の関数を使用して、広告を表示する特定のプレースメントを指定できます。詳細については、広告プレースメントのドキュメントをご覧ください。
各広告プレースメントに関連付けられている特定のリワードの詳細を取得するには、次の関数を呼んでください:
ISPlacementInfo *placementInfo = [IronSource rewardedVideoPlacementInfo:(NSString *)placementName];
if(placementInfo != NULL)
{
NSString *rewardName = [placementInfo rewardName];
NSNumber *rewardAmount = [placementInfo rewardAmount];
}
let placementInfo = IronSource.rewardedVideoPlacementInfo(<placementName: String>)
if placementInfo != nil {
let rewardName = placementInfo.placementName
let rewardAmount = placementInfo.rewardAmount
}
キャッピングとペーシング
ironSource の広告プレースメントに加えて、選択したプレースメントの広告表示回数上限であるキャップと、広告表示間隔であるペースが設定できるようになりました。キャッピングとペーシングは、特定の時間内に配信される広告の量を制限することにより、アプリのユーザー体験を向上させます。この機能についての詳細は、こちらをご覧ください。
プレースメントの上限に達したときにユーザーに広告の視聴を促すトラフィックドライバー(動画リワードボタン)を表示しないようにするには、以下のメソッドを呼んで、特定のプレースメントが広告の制限に達しているかどうかを確認する必要があります。
[IronSource isRewardedVideoCappedForPlacement:@"Placement"];
IronSource.isRewardedVideoCapped(forPlacement: <String>)
アベイラビリティをリクエストすると、TRUE
の応答が返される場合がありますが、プレースメントが上限に達している場合、広告はユーザーに配信されません。
動画広告を配信する
メディエーションを介して、アドネットワークから利用可能な動画が取得出来たら、この動画広告をユーザーに表示する準備が整ったことを意味します。ユーザーにとってベストな広告体験を提供できる様、広告を表示する前にゲームアクション・オーディオを止める事を忘れないでください。
[IronSource showRewardedVideoWithViewController:(UIViewController *)viewController placement:(nullable NSString *)placementName];
IronSource.showRewardedVideo(with: <UIViewController>, placement: <String?>)
ダイナミックユーザー ID
ダイナミックユーザー ID は、AdRewarded トランザクションを検証するためのパラメーターであり、セッション全体を通して変更できます。サーバー間コールバックを介してこのパラメーターを受け取るには、showRewardedVideo を呼び出す前にパラメーターを設定する必要があります。これにより、リワードの詳細を含む dynamicUserId パラメーターをコールバック URL で受け取ります。
[IronSource setDynamicUserId:@"DynamicUserId"];
IronSource.setDynamicUserId(<dynamicUserId: String>);
ステップ 3. ユーザーにリワードを付与する
ユーザーが正常に動画広告視聴を完了するたびに、ironSource SDK は didReceiveReward イベントを発火します。リワードが与えられると、以下のデリゲート関数で通知されます。
// Called after a rewarded video has been viewed completely and the user is
// eligible for reward.
// @param placementInfo is an object that contains the placement's reward
// name and amount.
// @param adInfo The info of the ad.
- (void)didReceiveRewardForPlacement:(ISPlacementInfo *)placementInfo withAdInfo:(ISAdInfo *)adInfo {
NSNumber *rewardAmount = [placementInfo rewardAmount];
NSString *rewardName = [placementInfo rewardName];
}
Placement オブジェクトには、ironSource Admin で定義されているプレースメントのリワード名とリワード額の両方が含まれています。
サーバー間コールバック
サーバー間コールバックをオンにする場合は、ironSource SDK の初期化前にユーザー ID を設定し、同じ視聴完了イベントに対してユーザーに二回以上リワードを与えないように注意してください。
クライアント側のコールバックとサーバー間コールバックの両方が発火される為、視聴完了ごとに二つの通知が届きます。
サーバー間コールバックを利用するには、こちらをご覧ください。
完了!
これで、アプリケーションで動画リワードを配信する準備が整いました。
これがアプリケーションの初めての実装である場合、ironSource ダッシュボードではアプリはデフォルトで「テストモード」になります。アプリがテストモードになっている間、ironSource SDK は、SDK プロセスの可視性を高めるために、より多くのログをコンソールに出力します。広告枠をテストするには、テストデバイスを設定します。また、本番環境をオンにするまでは、収益を生み出さないテスト用広告が配信されます。アプリの本番環境への移行準備ができたら、「 Ad Units 」ページで必ず「 Go Live! 」を選択してください。
実装ガイドに従って、追加の動画リワードアドネットワークを実装するか、追加の広告ユニットを実装します。