【Unity 収益化】Admobのリワード広告の実装(Android)
解説動画
基本こいつに従う
スタートガイド | Unity | Google Developers
リワード広告 | Unity | Google Developers
準備
Admobアカウントの作成
- こちらを参考に:AdMob に申し込む - AdMob ヘルプ
アプリIDの作成
- admobサイトで、アプリ追加からアプリIDを作成する
- アプリがストアにあれば、それを連携
- ストアになければ、先に作って後から連携
- 広告IDの作成作成
Unityでの実装
- プラグイン(Package)をダウンロード
- PackageをUnityにインポート
- Assets > Play Services Resolver > Android Resolver > Resolveを選択
- Assets > Google Mobile Ads > SettingsにAdMob アプリ ID を設定する
- 広告を貼りたいシーンで空のGameObjectを作成する
- 以下のスクリプトを作成し空のGameObjectに貼り付ける
using System; using UnityEngine; using GoogleMobileAds; using GoogleMobileAds.Api; using UnityEngine.UI; public class GoogleAds : MonoBehaviour { private RewardedAd rewardedAd; public Text messageText; int count = 0; bool isRewarded; // Use this for initialization void Start() { #if UNITY_ANDROID string appId = "ca-app-pub-3940256099942544~3347511713"; #elif UNITY_IPHONE string appId = "ca-app-pub-3940256099942544~1458002511"; #else string appId = "unexpected_platform"; #endif // Initialize the Google Mobile Ads SDK. MobileAds.Initialize(appId); RequestRewardAd(); } private void Update() { if (isRewarded) { isRewarded = false; ShowRewardResult(); } } public void UserChoseToWatchAd() { if (this.rewardedAd.IsLoaded()) { this.rewardedAd.Show(); } } void RequestRewardAd() { #if UNITY_ANDROID string adUnitId = "ca-app-pub-3940256099942544/5224354917"; #elif UNITY_IPHONE string adUnitId = "ca-app-pub-3940256099942544/2934735716"; #else string adUnitId = "unexpected_platform"; #endif this.rewardedAd = new RewardedAd(adUnitId); // Load成功時に実行する関数の登録 this.rewardedAd.OnAdLoaded += HandleRewardedAdLoaded; // Load失敗時に実行する関数の登録 this.rewardedAd.OnAdFailedToLoad += HandleRewardedAdFailedToLoad; // 表示時に実行する関数の登録 this.rewardedAd.OnAdOpening += HandleRewardedAdOpening; // 表示失敗時に実行する関数の登録 this.rewardedAd.OnAdFailedToShow += HandleRewardedAdFailedToShow; // 報酬受け取り時に実行する関数の登録 this.rewardedAd.OnUserEarnedReward += HandleUserEarnedReward; // 広告を閉じる時に実行する関数の登録 this.rewardedAd.OnAdClosed += HandleRewardedAdClosed; AdRequest request = new AdRequest.Builder().Build(); this.rewardedAd.LoadAd(request); } public void ShowRewardResult() { count++; messageText.text = count.ToString(); } public void CreateAndLoadRewardedAd() { #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 this.rewardedAd = new RewardedAd(adUnitId); this.rewardedAd.OnAdLoaded += HandleRewardedAdLoaded; this.rewardedAd.OnUserEarnedReward += HandleUserEarnedReward; this.rewardedAd.OnAdClosed += HandleRewardedAdClosed; AdRequest request = new AdRequest.Builder().Build(); this.rewardedAd.LoadAd(request); } public void HandleRewardedAdLoaded(object sender, EventArgs args) { MonoBehaviour.print("HandleRewardedAdLoaded event received"); } public void HandleRewardedAdFailedToLoad(object sender, AdErrorEventArgs args) { MonoBehaviour.print( "HandleRewardedAdFailedToLoad event received with message: " + args.Message); } public void HandleRewardedAdOpening(object sender, EventArgs args) { MonoBehaviour.print("HandleRewardedAdOpening event received"); } public void HandleRewardedAdFailedToShow(object sender, AdErrorEventArgs args) { MonoBehaviour.print( "HandleRewardedAdFailedToShow event received with message: " + args.Message); } public void HandleRewardedAdClosed(object sender, EventArgs args) { MonoBehaviour.print("HandleRewardedAdClosed event received"); CreateAndLoadRewardedAd(); } public void HandleUserEarnedReward(object sender, Reward args) { string type = args.Type; double amount = args.Amount; MonoBehaviour.print( "HandleRewardedAdRewarded event received for " + amount.ToString() + " " + type); isRewarded = true; } }
僕はこれをシングルトンにして使っていますが、おすすめ実装方法あれば教えてください。
- ビルドしてテストがうまく行ったら、自身のアプリIDと広告IDをスクリプトに書き込む
- 本番ビルドで終了
参考サイト
Unityで作ったゲームにAdMob広告を実装する方法【バナー広告編】 | FREE SWORDER
Rewarded Ads | Unity | Google Developers
スタジオしまづから
しまづと一緒に開発を楽しみたいという方は以下のオンラインサロンもぜひ! community.camp-fire.jp
新サービス:スタジオしまづの限定動画が見放題&オンラインサロンの加入特典 | スタジオしまづアカデミア