ホーリーのプログラミング日記

ホーリーのプログラミング日記

エキセントリック・スーパーアプリクリエイター / アプリ総DL数 約180万 / 全然分からない 俺は雰囲気でアプリを作ってる / iOS : apple.co/3m3HxSm / Android : bit.ly/3ma0liZ

AdMob動画リワードのイベントハンドラを取得してみた

 

イベントハンドラって言うのかな?なんて言えばいいのか分かりませんが、あれやってみましたよ。あれを。動画最後まで見てるかどうか判定するやつ。

 

 

コールバックって言えばいいんですかね?そのへんの用語に通じてないんですが、とりあえず出来ましたよ。

動画を最後まで見てる、ないし、途中で広告をタップしてれば答え(報酬)が出て、そうでない場合は何も出ないようにしてみました。

 

参考にしたのは公式の記事ですね。AdMobの。

https://developers.google.com/admob/unity/rewarded-video?hl=ja

 

ここにあるハンドラのコードをそのままコピペした感じです。

ただこれ気をつけてください。using Systemを宣言してないとエラーになりますよ。

みんな知ってる常識かもしれませんが、僕は露骨に知らなかったので、一応書いておきましょうw

 

public class GoogleMobileAdsDemoScript : MonoBehaviour
{
   
private RewardBasedVideoAd rewardBasedVideo;
   


   
public void Start()
   
{
       
// Get singleton reward based video ad reference.
       
this.rewardBasedVideo = RewardBasedVideoAd.Instance;

       
// Called when an ad request has successfully loaded.
        rewardBasedVideo
.OnAdLoaded += HandleRewardBasedVideoLoaded;
       
// Called when an ad request failed to load.
        rewardBasedVideo
.OnAdFailedToLoad += HandleRewardBasedVideoFailedToLoad;
       
// Called when an ad is shown.
        rewardBasedVideo
.OnAdOpening += HandleRewardBasedVideoOpened;
       
// Called when the ad starts to play.
        rewardBasedVideo
.OnAdStarted += HandleRewardBasedVideoStarted;
       
// Called when the user should be rewarded for watching a video.
        rewardBasedVideo
.OnAdRewarded += HandleRewardBasedVideoRewarded;
       
// Called when the ad is closed.
        rewardBasedVideo
.OnAdClosed += HandleRewardBasedVideoClosed;
       
// Called when the ad click caused the user to leave the application.
        rewardBasedVideo
.OnAdLeavingApplication += HandleRewardBasedVideoLeftApplication;

       
this.RequestRewardBasedVideo();
   
}

   
private void RequestRewardBasedVideo()
   
{
       
#if UNITY_ANDROID
           
string adUnitId = "ca-app-pub-3940256099942544/5224354917";
       
#elif UNITY_IPHONE
           
string adUnitId = "ca-app-pub-3940256099942544/1712485313";
       
#else
           
string adUnitId = "unexpected_platform";
       
#endif

       
// Create an empty ad request.
       
AdRequest request = new AdRequest.Builder().Build();
       
// Load the rewarded video ad with the request.
       
this.rewardBasedVideo.LoadAd(request, adUnitId);
   
}

   
public void HandleRewardBasedVideoLoaded(object sender, EventArgs args)
   
{
       
MonoBehaviour.print("HandleRewardBasedVideoLoaded event received");
   
}

   
public void HandleRewardBasedVideoFailedToLoad(object sender, AdFailedToLoadEventArgs args)
   
{
       
MonoBehaviour.print(
           
"HandleRewardBasedVideoFailedToLoad event received with message: "
                             
+ args.Message);
   
}

   
public void HandleRewardBasedVideoOpened(object sender, EventArgs args)
   
{
       
MonoBehaviour.print("HandleRewardBasedVideoOpened event received");
   
}

   
public void HandleRewardBasedVideoStarted(object sender, EventArgs args)
   
{
       
MonoBehaviour.print("HandleRewardBasedVideoStarted event received");
   
}

   
public void HandleRewardBasedVideoClosed(object sender, EventArgs args)
   
{
       
MonoBehaviour.print("HandleRewardBasedVideoClosed event received");
   
}

   
public void HandleRewardBasedVideoRewarded(object sender, Reward args)
   
{
       
string type = args.Type;
       
double amount = args.Amount;
       
MonoBehaviour.print(
           
"HandleRewardBasedVideoRewarded event received for "
                       
+ amount.ToString() + " " + type);
   
}

   
public void HandleRewardBasedVideoLeftApplication(object sender, EventArgs args)
   
{
       
MonoBehaviour.print("HandleRewardBasedVideoLeftApplication event received");
   
}
}

 

HandleRewardBasedVideoClosedとかHandleRewardBasedVideoLeftApplicationとか色々あるんですが、これ適当にテストすると分かりやすいですね。何が何のイベントなのか理解出来ると思います。

 

前回も書いたんですが、僕は今のところAdMobメインなんですよ。でもAdMobって動画広告のスキップボタンを消せないんですよね。だから開始2秒でスキップされたりするんですけど、それを避けるために実装してみました。

アプリの広告はAdMobがメイン。今の段階で他の選択肢を考えたことはほとんどないです - ホーリーのプログラミング日記

 

ユーザビリティが落ちることは間違いないんですけど、広告効果としてはどうなんでしょうか?

いつでも離脱出来る状態と、最後まで見なければいけない状態では、広告のクリック率って変化するものですかね?

 

なんとなく変わらない気もするんですよね。動画広告を見て「これいい!」って思うタイミングって、もう開始1秒で来てるんじゃないでしょうか。

だから無理矢理最後まで見せる必要も、本当はないと思うんですよね。

ユーザビリティが落ちるだけで、あとは何も変わらない予感がしています。

 

えー、まあまあ、そんなわけでとりあえず実装はしてみましたよ。動画リワードのイベントハンドラを取得出来るようにはなりました。