LoginSignup
0
2

More than 3 years have passed since last update.

adMobスクリプトメモ

Last updated at Posted at 2019-08-14

adMobの公式ガイドをそのまま実装してる方の情報ばかりだったので
少しいじったものをメモ。

using System; //リワードで使用
using UnityEngine;
using UnityEngine.UI; //テキスト(テスト用)で使ってるだけ
using GoogleMobileAds.Api; //必須

public class AdMob : MonoBehaviour {

    private enum Adtype {
        banner,
        reward,
        inter,
        native
    }
    [SerializeField]
    private Adtype adtype; //タイプをインスペクタで選べるように

    [SerializeField]
    private string Android_appId = default; //AndroidのappID 「~」がある方
    [SerializeField]
    private string ios_appId = default; //iosのappID
    [SerializeField]
    private string Android_UnitId = default; //AndroidのUnitID 「/」がある方
    [SerializeField]
    private string ios_UnitId = default; //iosのUnitID

    private RewardBasedVideoAd rewardBasedVideo;

    private string appId;
    private string adUnitId;

    public Text text; //テスト用


    void Awake ()
    {
        DontDestroyOnLoad (this); //このスクリプトがアタッチされてるobjは消えない

#if UNITY_ANDROID
        appId = Android_appId;
#elif UNITY_IPHONE
        appId = ios_appId;
#else
        appId = "unexpected_platform";
#endif

#if UNITY_ANDROID
        adUnitId = Android_UnitId;
#elif UNITY_IPHONE
        adUnitId = ios_UnitId;
#else
        adUnitId = "unexpected_platform";
#endif

        MobileAds.Initialize (appId); // Initialize the Google Mobile Ads SDK.

        switch (adtype) { //enumで選んだものが実行される
        case Adtype.banner: RequestBanner (); break;
        case Adtype.reward:
            rewardBasedVideo = RewardBasedVideoAd.Instance; // Get singleton reward based video ad reference.
            rewardBasedVideo.OnAdClosed += HandleRewardBasedVideoClosed; // Called when the ad is closed.
            RequestRewardBasedVideo (); break;
        case Adtype.inter: break; //未設定
        case Adtype.native: break; //未設定
        }
    }

    private void RequestBanner () //バナーの命令
    {
        BannerView bannerView = new BannerView (adUnitId, AdSize.Banner, AdPosition.Top); // Create a 320x50 banner at the top of the screen.

        AdRequest bannerrequest = new AdRequest.Builder ().Build (); // Create an empty ad request.

        bannerView.LoadAd (bannerrequest); // Load the banner with the request.
    }

    private void RequestRewardBasedVideo () //リワードの命令
    {
        AdRequest rewardrequest = new AdRequest.Builder ().Build (); // Create an empty ad request.

        rewardBasedVideo.LoadAd (rewardrequest, adUnitId); // Load the rewarded video ad with the request.
    }


    public void HandleRewardBasedVideoClosed (object sender, EventArgs args)
    {
        RequestRewardBasedVideo (); //広告を再び再生できるようにリセット
        text.text += "成功!!"; //広告を閉じた時に実行される命令(テスト用)
        MonoBehaviour.print ("HandleRewardBasedVideoClosed event received");
    }

    public void testButton () //ボタン命令(テスト用)
    {
        if (rewardBasedVideo.IsLoaded ()) { //ロード完了してたら
            rewardBasedVideo.Show (); //リワード動画を表示
        }
    }

}


インスペクタでIDを入れられるようにして
enumがついてるのでプルダウンメニューから
バナーなのかリワードなのか選べるようにしました。
(バナーリワード以外は今の所作ってません)

あとはボタンを押したらリワードが出るようにしてるので
UIボタンにtestButtonをアタッチすれば
ボタンを押した時(ロードしきってれば)再生されます。
ロードしきったらボタンが押せるようにするのが一番いいかも。

広告を閉じる命令で
text.text += "成功!!";
が発生してるのでここを任意のものにすれば
わりといろいろできる気がする。

と、まぁなんとなく出来たことをメモしただけですが
自分的に整理されたので一応メモっておきますー。

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2