Skip to content

動画リワード実装方法

Kim, Sungil edited this page Jan 30, 2024 · 4 revisions

動画リワード

実装準備

プロジェクトにSDKを追加していない場合、以下のいずれかの方法でSDKを追加してください。

実装

実装手順より、GameObjectを設置し、AdfurikunMovieRewardUtilityを付与している状態だとします。

GameObject取得、デリゲートコールバック実装

public class RewardScene : MonoBehaviour
{
    private AdfurikunMovieRewardUtility rewardUtility;

    void Start()
    {
        //GameObjectを取得する。
        var rewardObj = GameObject.Find("GameObject名");
        if (rewardObj != null)
        {
            rewardUtility = rewardObj.GetComponent<AdfurikunMovieRewardUtility>();

            //デリゲートコールバックを設定する。
            rewardUtility.onPrepareSuccess = HandlePrepareSuccess;
            rewardUtility.onPrepareFailure = HandlePrepareFailure;
            rewardUtility.onStartPlaying = HandleStartPlaying;
            rewardUtility.onFinishPlaying = HandleFinishPlaying;
            rewardUtility.onFailedPlaying = HandleFailedPlaying;
            rewardUtility.onCloseAd = HandleCloseAd;
        }
    }

    //以下、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)
    {
        //広告終了
    }
}

広告のロード

loadMovieReward()関数を呼び出して広告のロードを行います。

//広告ロード関数
public void Load()
{
    rewardUtility.loadMovieReward();
}

広告表示

playMovieReward()関数を呼び出して広告の表示を行います。
isPreparedMovieReward()関数で広告表示できる状態かを判定できます。

//広告表示関数
public void Show()
{
    if (rewardUtility != null && rewardUtility.isPreparedMovieReward())
    {
        rewardUtility.playMovieReward();
    }
}

広告読み込みの結果CallbackのTimeoutについて

広告枠が手動モードの場合、広告枠情報に設定されている時間情報をベースとして各アドネットワークへのRequestが発生します。それによって、読み込みの結果Callback(onPrepareSuccess, onPrepareFailure)は在庫の状況・設定されているアドネットワークの数などの影響で時間がかかる場合があります。

もし、アプリケーションの動作として、何秒以内に必ず広告の読み込み結果を確認してユーザへの通知を行う場合にはloadMovieReward(float timeout)またはloadMovieReward(string appId, float timeout)関数を使ってロードを行なってください。 アプリの方で設定したTimeout以内で必ずCallbackが発生します。設定可能な範囲は1秒から60秒までになります。

手動モードはアドネットワークへのRequestを最大限抑えることでネットワーク使用量及び広告の効率を考慮したモードです。上記の関数でTimeoutを指定すると各アドネットワークへのRequestが仕様より速く発生する為効率が悪くなる恐れがあります。なお、設定したTimeoutが短すぎると広告取得途中で読み込み失敗だと判断される可能性があります。ですので、AdsFetchFailed Callbackが発生した場合でも再度Loadを行うことで広告在庫取得が成功することもあります。

広告視聴によるユーザーへの報酬の付与タイミングについて

報酬の付与は、onCloseAd関数が呼ばれた際にユーザーへ報酬を付与する事を推奨します。

void onCloseAd(string appId , string adnetworkKey);
Clone this wiki locally