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

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

内容简介:接下来点击菜单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)》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

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

Android和PHP开发最佳实践

Android和PHP开发最佳实践

黄隽实 / 机械工业出版社华章公司 / 2013-3-20 / 79.00元

本书是国内第一本同时讲述Android客户端开发和PHP服务端开发的经典著作。 本书以一个完整的微博应用项目实例为主线,由浅入深地讲解了Android客户端开发和PHP服务端开发的思路和技巧。从前期的产品设计、架构设计,到客户端和服务端的编码实现,再到性能测试和系统优化,以及最后的打包发布,完整地介绍了移动互联网应用开发的过程。同时,本书也介绍了Android系统中比较有特色的功能,比如Go......一起来看看 《Android和PHP开发最佳实践》 这本书的介绍吧!

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

各进制数互转换器

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具