スマホ用アプリ 広告設定 (Admob)

2021/03/23

Android Unity

Google AdMobでの広告の設定~実装まで
ここではバナーと動画リワード広告を設定します。
・アカウント取得して広告設定
・Mobile Ads Unityプラグインをインストール
・広告表示の実装

アカウントを取得して広告設定

アカウントがなければ以下から取得
Google Admobページ
申し込みは以下を参照
AdMob に申し込むヘルプページ


アプリIDと広告ユニットIDの設定
実装に上記2つのIDが要りますので設定します。
Admobに入り、左メニューからアプリを追加

プラットフォームとアプリ名を設定
ストアの設定は実際にアプリ登録をしてから設定します。


広告ユニット設定
広告ユニットを追加してフォーマットを選択


後は名前入力
フォーマット以外はそのままでもOK。

アプリIDはアプリ設定、広告ユニットIDは広告ユニットのトップ画面で確認できます。
AndroidとiOS両方作る場合はそれぞれどちらもIDを作成します。

Mobile Ads Unityプラグインをインストール

以下から最新版を取得

https://github.com/googleads/googleads-mobile-unity/releases

プロジェクトにDLしたものをインポート。
対象は全て選択


最初に依存関係の処理するか聞かれるので
Enabled、Applyを選択

この時、1回もビルドしてない場合はエラーがでるので
1回はビルドしておく。ビルド時に必要なものがインポートされますが、
それが必要みたいです。

その後以下を確認

successになっていればOK

作成したアプリIDを設定
AndroidかiOSのところに入力します。
テストの時は必ず以下のテスト用を使用
“ca-app-pub-3940256099942544~3347511713”

Assets→GoogleMobileAds→Settingでも開けます。

本番用にビルドする際は作成したアプリIDにします。

広告表示の実装

スクリプトを作成してコードを書きます。
最初に空オブジェクトを作ってアタッチしておきます。

作成した広告ユニットIDを使いますが、
テスト時は必ずテスト用のIDを設定します。
バナー用テストID:"ca-app-pub-3940256099942544~3347511713"

バナー広告は以下のように記述。usingにGoogleMobileAds.Api追加要

using UnityEngine;

using System;

using GoogleMobileAds.Api; //追加


public class Admob : MonoBehaviour

{

    private string adUnitId;

    private BannerView banner;

    private RewardedAd rewardedAd;


    void Start()

    {

        //アプリ起動時実行(他のスクリプトで実行していたら不要)

        MobileAds.Initialize(initStatus => { });

        //広告を表示

        RequestBanner();

    }


    private void RequestBanner() //バナー広告設定

    {

#if UNITY_ANDROID

        //adUnitId = "広告ユニットID(Android)";  //本番

        adUnitId = "ca-app-pub-3940256099942544/6300978111";  //テスト

#elif UNITY_IOS

        //adUnitId = "広告ユニットID(iOS)";  //本番

        adUnitId = "ca-app-pub-3940256099942544/2934735716";  //テスト

#endif

        //広告のインスタンス生成

        banner = new BannerView(adUnitId, AdSize.Banner, AdPosition.Bottom);

        AdRequest request = new AdRequest.Builder().Build();

        banner.LoadAd(request);

    }

}

Googleの実装手順にもあるサンプル通りでいけます。
バナー広告導入手順ページ
表示の設定は「new BannerView~」のところで変更できます。

バナーの表示非表示はShow,Hide関数でできます。

    public void BannerShowHid(bool sh) //広告表示非表示

    {

        if(sh) banner.Show();

        else banner.Hide();

    }


動画広告は以下のように記述。
動画用テストID:"ca-app-pub-3940256099942544/5224354917"

    private void RequestReward() //動画

    {

#if UNITY_ANDROID

        //adUnitId = "広告ユニットID(Android)";  //本番

        adUnitId = "ca-app-pub-3940256099942544/5224354917";  //テスト

#elif UNITY_IOS

        //adUnitId = "広告ユニットID(iOS)";  //本番

        //adUnitId = "ca-app-pub-3940256099942544/1712485313";  //テスト

#endif

        this.rewardedAd = new RewardedAd(adUnitId);

        //動画の視聴完了後の関数呼び出し

        this.rewardedAd.OnUserEarnedReward += HandleUserEarnedReward;


        AdRequest request = new AdRequest.Builder().Build();

        this.rewardedAd.LoadAd(request);

    }


リワード広告の場合、視聴後の報酬を設定します
上記の「this.reward~」の記述で以下を呼び出し

//視聴完了後の報酬    

public void HandleUserEarnedReward(object sender, Reward args) 

    {

        //完了後の報酬設定 ゲーム内コイン増加など

    }

また以下で動画広告を表示します。
ボタンなどに付けて関数を呼び出して使います。

    public void ShowReawrd() //動画広告表示

    {

        if (this.rewardedAd.IsLoaded())

        {

            this.rewardedAd.Show();

        }

    }


Start関数内にRequestReward()を追加

    void Start()

    {

        MobileAds.Initialize(initStatus => { });

        //広告を表示

        RequestBanner(); //バナー広告

        RequestReward(); //動画広告

    }

広告は何種類かあるので表示したいものを設定して呼び出します。
もう少し細かい設定をする場合は以下にまとめています。

表示確認は実機かエミュレーターで確認できます。
本番用を使うとAdmobのアカウント停止の可能性がありますので
テスト時はテストIDになっているか必ず確認します。


また本番用にビルドする場合は、

本番用のIDになっているか必ず確認します。