動画リワード実装方法 - glossom-dev/AdfurikunSDK-Unity GitHub Wiki
動画リワード
実装準備
プロジェクトにSDKを追加していない場合、以下のいずれかの方法でSDKを追加してください。
実装
実装手順より、SerializeFieldを利用して、AdfurikunMovieRewardUtilityを定義した状態だとします。
デリゲートコールバック実装、初期化
public class RewardScene : MonoBehaviour
{
[SerializeField] private AdfurikunMovieRewardUtility rewardUtility;
void Start()
{
//デリゲートコールバックを設定する。
rewardUtility.onPrepareSuccess = HandlePrepareSuccess;
rewardUtility.onPrepareFailure = HandlePrepareFailure;
rewardUtility.onStartPlaying = HandleStartPlaying;
rewardUtility.onFinishPlaying = HandleFinishPlaying;
rewardUtility.onFailedPlaying = HandleFailedPlaying;
rewardUtility.onCloseAd = HandleCloseAd;
//初期化
var configAppID = rewardUtility.GetConfigAppID();
if (configAppID != "")
{
rewardUtility.InitializeMovieReward(configAppID);
}
else
{
rewardUtility.InitializeMovieReward(広告枠ID);
}
}
//以下、Start()で設定したデリゲートコールバック
void HandlePrepareSuccess(string appId, bool isManualMode)
{
//広告準備完了
}
void HandlePrepareFailure(string appId, int errorCode, List<AdNetworkError> adNetworkErrorList)
{
//広告準備失敗
}
void HandleStartPlaying(string appId, string adNetworkKey)
{
//動画再生開始
}
void HandleFinishPlaying(string appId, string adNetworkKey)
{
//動画再生完了
}
void HandleFailedPlaying(string appId, string adNetworkKey, List<AdNetworkError> adNetworkErrorList)
{
//動画再生失敗
}
void HandleCloseAd(string appId, string adNetworkKey, bool isRewarded)
{
//広告終了
}
}
動画リワード広告のロード
LoadMovieReward()
関数で広告をロードします。
ロード成功すると、onPrepareSuccess
のコールバックが呼ばれます。
失敗すると、onPrepareFailure
のコールバックが呼ばれます。
public void Load()
{
rewardUtility.LoadMovieReward();
}
動画リワード広告の表示
IsPreparedMovieReward
関数の戻り値がtrueになる事を確認し、PlayMovieReward
関数で広告を再生します。
public void Show()
{
if (rewardUtility != null && rewardUtility.IsPreparedMovieReward())
{
rewardUtility.PlayMovieReward();
}
}
広告視聴によるユーザーへの報酬の付与タイミングについて
報酬の付与は、onCloseAd関数が呼ばれた際にユーザーへ報酬を付与する事を推奨します。 isRewarded が true の場合のみ、報酬を付与するよう追記してください。
void onCloseAd(string appId , string adnetworkKey, bool isRewarded)
{
if (isRewarded)
{
// 報酬の付与
}
}
(4.0.0未満のAndroidのみ)広告再生中にホーム画面復帰した場合の報酬付与の問題
Unity製のAndroidアプリで、広告再生中にホーム画面に戻り、アプリアイコンから復帰すると、広告画面が自動的に閉じます。 この際、広告を最後まで視聴していないためonFinishPlaying
コールバックは発生せず、onCloseAd
コールバックのみが発生します。 その結果、onCloseAd
で報酬を付与している場合、ユーザーが広告を最後まで見なくても報酬が付与される可能性があります。
同様のケースで報酬を付与したくない場合、以下の実装で対応できます。
onFinishPlaying
が発生したかどうかをフラグで管理する。onCloseAd
でフラグをチェックし、onFinishPlaying
が発生済の場合のみ報酬を付与する。
/**
動画再生開始時
*/
void HandleStartPlaying(string appId, string adNetworkKey)
{
isInvokedFinishCallback = false; // 広告再生時にフラグを初期化する
}
/*
動画再生完了時
*/
void HandleFinishPlaying(string appId, string adNetworkKey)
{
isInvokedFinishCallback = true; // onFinishPlaying コールバックが発生したことを記録する
}
/*
広告終了時
*/
void HandleCloseAd(string appId, string adNetworkKey)
{
if (isInvokedFinishCallback) { // onFinishPlaying コールバックが発生したケースのみ報酬を付与する
// 報酬を付与する
}
}