【Unity】Admobで子供向けのバナー広告を配信する方法。

2023年3月27日

どうも、だらはです。
今回はAdmobで子供向け広告を配信する方法について紹介したいと思います。
具体的に、コピペで動作するスクリプトを準備したので参考にして頂けたら嬉しいです。

スポンサーリンク

追記(2023.3.19)

以下に対応しました。

  • アプリ内でのプライバシーポリシー同意確認
    (アプリ内でプライバシーポリシーを表示する必要があるとのこと。ユーザーデータに記載)
  • テストデバイス登録への対応
    (Admobにログインして「設定 > テストデバイス」から登録する方法ではテスト広告が表示できなかった人用)
    実機実行時「Android Logcat」より「RequestConfiguration.Builder().setTestDeviceIds(Arrays.asList(“XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX")を探して下さい」
  • MobileAdsSDKの初期化完了待ち

追記(2023.2.28)

子供向け広告の設定方法が変わった?っぽいので更新しました。

追記(2022.11.29)

コメント部に記載しましたが、コードが変わったので更新しました。
最新情報は公式HPを参照ください。

実装方法

先ずは、GoogleAdmobの公式HP通りに、プラグインをインポートします。
そうしたら、以下のスクリプトを空のGameObjectにアタッチしてください。
バナー広告を、テスト用のアプリID、広告ユニットIDを用いて記載しました。

◆GoogleAds.cs

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using GoogleMobileAds.Api;
using GoogleMobileAds.Common;

public class GoogleAds : MonoBehaviour
{
    BannerView bannerView;
    bool flgLoadAdsOk;

    void Start()
    {
        //アプリID
        string appId = "ca-app-pub-3940256099942544~3347511713"; //Test

        //テストデバイスの設定
        List<string> deviceIds = new List<string>();
        deviceIds.Add("XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX");

        //ターゲティングの設定
        RequestConfiguration requestConfiguration = new RequestConfiguration.Builder()
            //子供向けの設定
            .SetTagForChildDirectedTreatment(TagForChildDirectedTreatment.True)
            //同意年齢に満たないユーザーの設定
            //.SetTagForUnderAgeOfConsent(TagForUnderAgeOfConsent.True)
            //広告コンテンツのフィルタリング設定
            .SetMaxAdContentRating(MaxAdContentRating.G)
            //リリース時は.SetTestDeviceIds(deviceIds)をコメントアウトする。
            .SetTestDeviceIds(deviceIds)
            .build();
        MobileAds.SetRequestConfiguration(requestConfiguration);

        //MobileAdsSDKの初期化
        //MobileAds.Initialize(appId);                  //旧法
        //MobileAds.Initialize(initStatus => { });      //新法
        MobileAds.Initialize(HandleInitCompleteAction); //新新法

        //バナー広告の表示
        //RequestBanner();
    }

    //MobileAdsSDKの初期化完了で処理開始
    void HandleInitCompleteAction(InitializationStatus initstatus)
    {
        //次のUpdate()で実行
        MobileAdsEventExecutor.ExecuteInUpdate(() =>
        {
            //MobileAdsSDKの初期化完了でフラグON
            flgLoadAdsOk = true;

            //プライバシーポリシー同意確認
            if (PlayerPrefs.HasKey("PrivacyPolicy"))
            {
                //プライバシーポリシーに同意(keyIntPrivacy = 1)ならバナー広告表示
                int keyIntPrivacy = PlayerPrefs.GetInt("PrivacyPolicy");
                if (keyIntPrivacy == 1)
                {
                    RequestBanner();
                }
            }
        });
    }

    //バナー広告の表示
    public void RequestBanner()
    {
        //MobileAdsSDKの初期化未完了で処理中止
        if (flgLoadAdsOk == false)
        {
            return;
        }

        //広告ユニットID(バナー用)
        string adUnitId = "ca-app-pub-3940256099942544/6300978111"; //Test

        //Clean up banner before reusing
        if (bannerView != null)
        {
            bannerView.Destroy();
        }

        //320x50のバナーを下に表示する設定
        bannerView = new BannerView(adUnitId, AdSize.Banner, AdPosition.Bottom);

        //アンカーアダプティブバナーを使用する場合(何故か子供向け広告で表示されない)
        //bannerView = new BannerView(adUnitId, AdSize.GetCurrentOrientationAnchoredAdaptiveBannerAdSizeWithWidth(AdSize.FullWidth), AdPosition.Bottom);        

        //子供向け広告 (2023.2.28時点で、TagForChildDirectedTreatmentがエラーとなった)
        AdRequest request = new AdRequest.Builder()
            //.TagForChildDirectedTreatment(true)
            .AddExtra("max_ad_content_rating", "G")
            .Build();

        //大人向け
        //AdRequest request = new AdRequest.Builder().Build();

        //バナーを表示する
        bannerView.LoadAd(request);
    }

    void OnDestroy()
    {
        bannerView.Destroy();
    }
}

なお、今回はバナー広告用のIDを記載しましたが、アプリ起動広告など他の広告IDも準備されています。
詳細はAdMobの公式HPを参照頂けたらと思います。
※子供向けアプリではアプリ起動広告はNGです。(ポリシーに記載してあったと思います。。)

コメントに記載しましたが、次世代のレスポンシブ広告「アダプティブバナー」の詳細は以下の公式を参照ください。

最後に

いかがでしたでしょうか。
上記スクリプトにて広告が表示されない場合は、そもそも広告配信のための前準備ができていないと思われます。
設定を見直して、再度トライしてみて下さい。

以上、だらはでした。

スポンサーリンク

応用

Posted by daraha_gm