学习笔记:Mopub在Unity环境下的集成(Banner和Interstitial)

栏目: 编程语言 · 发布时间: 6年前

内容简介:接下来点击菜单Assets->Import Package->Custom Package,选择包文件至此包就被包含进去了,包里面有简单的使用用例,不过不适合直接接入项目中。我们还是要写一个新的Controller来处理广告相关的事务。由于广告请求的函数的参数不是string,而是string数组,所以需要另三个函数来承接上面的id

首先,需要在项目中包含MoPubUnity.unitypackage,包的下载地址:

https://github.com/mopub/mopu...

接下来点击菜单Assets->Import Package->Custom Package,选择包文件

至此包就被包含进去了,包里面有简单的使用用例,不过不适合直接接入项目中。我们还是要写一个新的Controller来处理广告相关的事务。

新的Controller在本文中被命名为 MopubAdsController,首先将广告id暴露到Inspector界面:
#region Inspector Variables
            [SerializeField] private string iOSBannerID;
            [SerializeField] private string iOSInterstitialID;
            [SerializeField] private string iOSVideoID;
            [Space]
            [SerializeField] private string AndroidBannerID;
            [SerializeField] private string AndroidInterstitialID;
            [SerializeField] private string AndroidVideoID;
    #endregion

由于广告请求的函数的参数不是string,而是string数组,所以需要另三个函数来承接上面的id

private string[] _bannerAdUnits;
    private string[] _interstitialAdUnits;
    private string[] _rewardedVideoAdUnits;

接下来进入Start函数:

void Start()
            {
    #if UNITY_IOS
                _bannerAdUnits = new string[] {iOSBannerID};
                _interstitialAdUnits = new string[] { iOSInterstitialID };
                _rewardedVideoAdUnits = new string[] { iOSVideoID };
    
    #elif UNITY_ANDROID || UNITY_EDITOR
    
                _bannerAdUnits = new string[] {AndroidBannerID};
                _interstitialAdUnits = new string[] { AndroidInterstitialID };
                _rewardedVideoAdUnits = new string[] { AndroidVideoID };
    
    #endif
    
                var anyAdUnitId = _bannerAdUnits[0];
                MoPub.InitializeSdk(new MoPub.SdkConfiguration
                {
                    AdUnitId = anyAdUnitId,
                    LogLevel = MoPubBase.LogLevel.MPLogLevelDebug,
                    MediatedNetworks = new MoPub.MediatedNetwork[]
                    {
                    },
                });
    
                MoPub.LoadBannerPluginsForAdUnits(_bannerAdUnits);
    #if UNITY_IOS
                MoPub.CreateBanner(_bannerAdUnits[0], MoPubBase.AdPosition.BottomCenter);
    #elif UNITY_ANDROID
                MoPub.CreateBanner("REPLACE_BY_ANDROID_AD_UNIT_ID_HERE", MoPubAdPosition.BottomCenter );
    #endif
    
                MoPub.LoadInterstitialPluginsForAdUnits(_interstitialAdUnits);
                MoPub.RequestInterstitialAd(_interstitialAdUnits[0]);
    
                MoPub.LoadRewardedVideoPluginsForAdUnits(_rewardedVideoAdUnits);
    
    
                //初始化各种广告,现在还没有使用好几个id的需求,所以每个广告类型先都用一个id,所以都取[0]。按着官方用例,如果有多种id的话可以写一个for循环直接遍历创造就好
    
    
    
                //以下是各种回调的承接,相当于OC的XX.delegate = self;
    
                MoPubManager.OnSdkInitializedEvent += OnSdkInitializedEvent;
    
                MoPubManager.OnAdLoadedEvent += OnAdLoadedEvent;
                MoPubManager.OnAdFailedEvent += OnAdFailedEvent;
    
                MoPubManager.OnInterstitialLoadedEvent += OnInterstitialLoadedEvent;
                MoPubManager.OnInterstitialFailedEvent += OnInterstitialFailedEvent;
                MoPubManager.OnInterstitialDismissedEvent += OnInterstitialDismissedEvent;
    
                MoPubManager.OnRewardedVideoLoadedEvent += OnRewardedVideoLoadedEvent;
                MoPubManager.OnRewardedVideoFailedEvent += OnRewardedVideoFailedEvent;
                MoPubManager.OnRewardedVideoFailedToPlayEvent += OnRewardedVideoFailedToPlayEvent;
                MoPubManager.OnRewardedVideoClosedEvent += OnRewardedVideoClosedEvent;
            }

其中:

MoPubManager.OnSdkInitializedEvent += OnSdkInitializedEvent;

是C#的回调承接方法。其中OnSdkInitializedEvent是一个回调方法

private void OnSdkInitializedEvent(string adUnitId)
{
    //_demoGUI.SdkInitialized();
}

而MoPubManager.OnSdkInitializedEvent则可以看做是一个装方法类型的数组,每当时间发生时,此数组中的方法会被依次调用,这也就是C#的回调原理。

接下来是Controller的public函数,供给外部调用,外部想显示广告只要调用响应函数就可以了

public void ShowBannerAd()
        {
            MoPub.ShowBanner(_bannerAdUnits[0], true);

        }

        public void HideBannerAd()
        {
            MoPub.ShowBanner(_bannerAdUnits[0], false);
        }


        public void OnAdLoadedEvent(string adUnitId, string height)
        {

        }

        public bool ShowInterstitial()
        {
            bool show = false;
            Debug.Log("mopub调试——interstitial尝试播放");
            if (MoPub.IsInterstitialReady(_interstitialAdUnits[0]))
            {
                MoPub.ShowInterstitialAd(_interstitialAdUnits[0]);
                show = true;
                Debug.Log("mopub调试——interstitial播放");
            }
            else
            {
                MoPub.RequestInterstitialAd(_interstitialAdUnits[0]);
                Debug.Log("mopub调试——interstitial未加载成功,重新加载");
            }
            return show;
        }

接下来是各种回调函数

//-----------------------回调-------------------------------------------
        //SDK初始化成功
        private void OnSdkInitializedEvent(string adUnitId)
        {
        }


        // Banner Events
        //banner读取成功
        private void OnAdLoadedEvent(string adUnitId, float height)
        {
            Debug.Log("mopub调试——banner读取成功");
        }

        //banner读取失败
        private void OnAdFailedEvent(string adUnitId, string error)
        {
            Debug.Log("mopub调试——banner读取失败, id:" + adUnitId);
        }


        // Interstitial Events
        //interstitial读取成功
        private void OnInterstitialLoadedEvent(string adUnitId)
        {
            Debug.Log("mopub调试——interstitial读取成功");
        }

        //interstitial读取失败
        private void OnInterstitialFailedEvent(string adUnitId, string error)
        {
            MoPub.RequestInterstitialAd(_interstitialAdUnits[0]);
            Debug.Log("mopub调试——interstitial读取失败, id:" + adUnitId);
        }

        //interstitial关闭
        private void OnInterstitialDismissedEvent(string adUnitId)
        {
            MoPub.RequestInterstitialAd(_interstitialAdUnits[0]);
            Debug.Log("mopub调试——interstitial关闭");
        }

以上所述就是小编给大家介绍的《学习笔记:Mopub在Unity环境下的集成(Banner和Interstitial)》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Essential ActionScript 3.0

Essential ActionScript 3.0

Colin Moock / Adobe Dev Library / June 22, 2007 / $34.64

ActionScript 3.0 is a huge upgrade to Flash's programming language. The enhancements to ActionScript's performance, feature set, ease of use, cleanliness, and sophistication are considerable. Essentia......一起来看看 《Essential ActionScript 3.0》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

SHA 加密
SHA 加密

SHA 加密工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具