【Unity】接入Max广告聚合SDK

这篇具有很好参考价值的文章主要介绍了【Unity】接入Max广告聚合SDK。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

下载和导入MAX Unity插件:
官方SDK链接
在这里插入图片描述
【Unity】接入Max广告聚合SDK

2.初始化MAX SDK:

MaxSdkCallbacks.OnSdkInitializedEvent += (MaxSdkBase.SdkConfiguration sdkConfiguration) => {
    // AppLovin SDK is initialized, start loading ads
};

MaxSdk.SetSdkKey("YOUR_SDK_KEY_HERE");
MaxSdk.SetUserId("USER_ID");
MaxSdk.InitializeSdk();

3.配置广告源
选择所需要的广告源。点install。ExternalDependencyManager会帮你根据选择的广告源下载对应的SDK,可能需要挂vpn

【Unity】接入Max广告聚合SDK
【Unity】接入Max广告聚合SDK

4.在Unity应用中加载广告

激励视频有一下参考接口

	//加载激励视频
     MaxSdk.LoadRewardedAd(adUnitId); 

	//判断是是否已经加载激励视频
	MaxSdk.IsRewardedAdReady(adUnitId)

	//播放激励视频
	MaxSdk.ShowRewardedAd(adUnitId);

    //添加奖励下发回调
     MaxSdkCallbacks.Rewarded.OnAdReceivedRewardEvent += OnRewardedAdReceivedRewardEvent;

其他类型的广告接口可以看侧边栏的这里选择
【Unity】接入Max广告聚合SDK

给一份接入后的参考代码:文章来源地址https://www.toymoban.com/news/detail-476643.html

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using AppLovinMax;
using System;

/// <summary>
/// Max广告聚合中间类
/// </summary>
public class MaxAdsUtil : AdsSDKBase
{
    /// <summary>
    /// Max SDK key
    /// </summary>
    string maxKey = SDKConstant.Max_sdk_key;
    /// <summary>
    /// 激励视频id
    /// </summary>
    string IdReward = SDKConstant.Max_reward_ads_key;
    /// <summary>
    /// 插屏视频id
    /// </summary>
    string IdInterstitial = SDKConstant.Max_interstitial_ads_key;
    /// <summary>
    /// 横幅视频id
    /// </summary>
    string IdBannar = SDKConstant.Max_bannar_ads_key;

    /// <summary>
    /// 初始化
    /// </summary>
    public override void Init()
    {
        //base.Init();
        if (string.IsNullOrEmpty(maxKey))
        {
            Loger.Error("MAX SDK KEY is empty");
            return;
        }
        if (isInit)
        {
            Loger.Info("MAX SDK is Inited");
        }
        //起动回调
        MaxSdkCallbacks.OnSdkInitializedEvent += (MaxSdkBase.SdkConfiguration sdkConfiguration) =>
        {
            Loger.Info("MAX SDK Init!!!");
            InitializeRewardedAds();
            isInit = true;
        };

        string deviceId = SystemInfo.deviceUniqueIdentifier;
        MaxSdk.SetUserId(deviceId);
        MaxSdk.SetSdkKey(maxKey);
        MaxSdk.InitializeSdk();
    }

    public void ShowDebugView()
    {
        MaxSdk.ShowMediationDebugger();
    }


    #region ------------------ 激励视频 ------------------

    /// <summary>
    /// 激励激励已经准备
    /// </summary>
    /// <returns></returns>
    public override bool IsRewardReady()
    {
        if (string.IsNullOrEmpty(IdReward)) return false;
        return MaxSdk.IsRewardedAdReady(IdReward);
    }

    /// <summary>
    /// 播放激励
    /// </summary>
    /// <param name="callBack"></param>
    public override void PlayRewardAds(Action<bool> callBack)
    {
        if (!IsRewardReady()) return;
        onPlayReward = callBack;
        MaxSdk.ShowRewardedAd(IdReward);
    }

    /// <summary>
    /// 激励视频重试请求次数
    /// </summary>
    int retryAttemptReward = 0;
    /// <summary>
    /// 激励回调
    /// </summary>
    Action<bool> onPlayReward;

    /// <summary>
    /// 初始化激励视频
    /// </summary>
    public void InitializeRewardedAds()
    {
        // Attach callback
        MaxSdkCallbacks.Rewarded.OnAdLoadedEvent += OnRewardedAdLoadedEvent;
        MaxSdkCallbacks.Rewarded.OnAdLoadFailedEvent += OnRewardedAdLoadFailedEvent;
        MaxSdkCallbacks.Rewarded.OnAdHiddenEvent += OnRewardedAdHiddenEvent;
        MaxSdkCallbacks.Rewarded.OnAdDisplayFailedEvent += OnRewardedAdFailedToDisplayEvent;
        MaxSdkCallbacks.Rewarded.OnAdReceivedRewardEvent += OnRewardedAdReceivedRewardEvent;
        if (string.IsNullOrEmpty(IdReward))
        {
            Loger.Error("MAX SDK RewardId is empty");
        }
        // Load the first rewarded ad
        LoadRewardedAd();
    }

    /// <summary>
    /// 加载广告
    /// </summary>
    private void LoadRewardedAd()
    {
        if (string.IsNullOrEmpty(IdReward)) return;
        MaxSdk.LoadRewardedAd(IdReward);

    }

    /// <summary>
    /// 广告加载成功
    /// </summary>
    /// <param name="adUnitId"></param>
    /// <param name="adInfo"></param>
    private void OnRewardedAdLoadedEvent(string adUnitId, MaxSdkBase.AdInfo adInfo)
    {

        retryAttemptReward = 0;
        Loger.Log($"Max SDK rewardAD ready :  id:{adInfo.AdUnitIdentifier}, channel:{adInfo.NetworkName}");
    }

    /// <summary>
    /// 广告加载失败
    /// </summary>
    /// <param name="adUnitId"></param>
    /// <param name="errorInfo"></param>
    private void OnRewardedAdLoadFailedEvent(string adUnitId, MaxSdkBase.ErrorInfo errorInfo)
    {
        retryAttemptReward++;
        float retryDelay = Math.Clamp(2 * retryAttemptReward, 0, 64);
        Loger.Info($"Max SDK rewardAD fail :{errorInfo.Code}  {errorInfo.Message}");
        TimerManager.runTimeOnce(retryDelay, LoadRewardedAd);

    }

    /// <summary>
    /// 广告播放失败
    /// </summary>
    /// <param name="adUnitId"></param>
    /// <param name="errorInfo"></param>
    /// <param name="adInfo"></param>
    private void OnRewardedAdFailedToDisplayEvent(string adUnitId, MaxSdkBase.ErrorInfo errorInfo, MaxSdkBase.AdInfo adInfo)
    {
        LoadRewardedAd();
        onPlayReward = null;
    }

    /// <summary>
    /// 广告关闭
    /// </summary>
    /// <param name="adUnitId"></param>
    /// <param name="adInfo"></param>
    private void OnRewardedAdHiddenEvent(string adUnitId, MaxSdkBase.AdInfo adInfo)
    {
        LoadRewardedAd();
        onPlayReward = null;
    }

    /// <summary>
    /// 发放奖励
    /// </summary>
    /// <param name="adUnitId"></param>
    /// <param name="reward"></param>
    /// <param name="adInfo"></param>
    private void OnRewardedAdReceivedRewardEvent(string adUnitId, MaxSdk.Reward reward, MaxSdkBase.AdInfo adInfo)
    {

        onPlayReward?.Invoke(true);
        onPlayReward = null;
        Loger.Log($"Max SDK rewardAD Revice :  id:{adInfo.AdUnitIdentifier}, channel:{adInfo.NetworkName}");
    }


    #endregion


    #region ------------------ 插屏视频 ------------------
    /// <summary>
    /// 激励激励已经准备
    /// </summary>
    /// <returns></returns>
    public override bool IsInterstitialReady()
    {
        if (string.IsNullOrEmpty(IdInterstitial)) return false;
        return MaxSdk.IsInterstitialReady(IdInterstitial);
    }

    /// <summary>
    /// 播放激励
    /// </summary>
    /// <param name="callBack"></param>
    public override void PlayInterstitialAds(Action<bool> callBack)
    {
        if (!IsInterstitialReady()) return;
        onPlayInterstitial = callBack;
        MaxSdk.ShowInterstitial(IdInterstitial);
    }

    /// <summary>
    /// 插屏视频重试请求次数
    /// </summary>
    int retryAttemptInterstitial = 0;
    /// <summary>
    /// 插屏回调
    /// </summary>
    Action<bool> onPlayInterstitial;

    /// <summary>
    /// 初始化插屏
    /// </summary>
    public void InitializeInterstitialAds()
    {
        // Attach callback
        MaxSdkCallbacks.Interstitial.OnAdLoadedEvent += OnInterstitialLoadedEvent;
        MaxSdkCallbacks.Interstitial.OnAdLoadFailedEvent += OnInterstitialLoadFailedEvent;
        MaxSdkCallbacks.Interstitial.OnAdHiddenEvent += OnInterstitialHiddenEvent;
        MaxSdkCallbacks.Interstitial.OnAdDisplayFailedEvent += OnInterstitialAdFailedToDisplayEvent;
        if (string.IsNullOrEmpty(IdInterstitial))
        {
            Loger.Error("MAX SDK InterstitiaId is empty");
        }
        // Load the first interstitial
        LoadInterstitial();
    }

    /// <summary>
    /// 加载插屏广告
    /// </summary>
    private void LoadInterstitial()
    {
        if (string.IsNullOrEmpty(IdInterstitial)) return;
        MaxSdk.LoadInterstitial(IdInterstitial);
    }
    /// <summary>
    /// 插屏广告加载成功
    /// </summary>
    /// <param name="adUnitId"></param>
    /// <param name="adInfo"></param>
    private void OnInterstitialLoadedEvent(string adUnitId, MaxSdkBase.AdInfo adInfo)
    {
        retryAttemptInterstitial = 0;
    }
    /// <summary>
    /// 插屏广告加载失败
    /// </summary>
    /// <param name="adUnitId"></param>
    /// <param name="errorInfo"></param>
    private void OnInterstitialLoadFailedEvent(string adUnitId, MaxSdkBase.ErrorInfo errorInfo)
    {
        retryAttemptInterstitial++;
        float retryDelay = Math.Clamp(2 * retryAttemptInterstitial, 0, 64);
        TimerManager.runTimeOnce(retryDelay, LoadInterstitial);
    }

    /// <summary>
    /// 插屏广告显示失败
    /// </summary>
    /// <param name="adUnitId"></param>
    /// <param name="errorInfo"></param>
    /// <param name="adInfo"></param>
    private void OnInterstitialAdFailedToDisplayEvent(string adUnitId, MaxSdkBase.ErrorInfo errorInfo, MaxSdkBase.AdInfo adInfo)
    {
        LoadInterstitial();
        onPlayInterstitial = null;
    }

    /// <summary>
    /// 插屏广告显示关闭
    /// </summary>
    /// <param name="adUnitId"></param>
    /// <param name="adInfo"></param>
    private void OnInterstitialHiddenEvent(string adUnitId, MaxSdkBase.AdInfo adInfo)
    {
        LoadInterstitial();
        onPlayInterstitial?.Invoke(true);
        onPlayInterstitial = null;
    }

    #endregion

    #region ------------------ Bannar视频 ------------------

    bool isBannarReady = false;
    public override void ShowBannarAds()
    {
        if (IsBannarReady())
            MaxSdk.ShowBanner(IdBannar);
    }

    public override void HideBannarAds()
    {
        MaxSdk.HideBanner(IdBannar);

    }

    /// <summary>
    /// 设置广告位置
    /// </summary>
    /// <param name="pos"></param>
    public override void SetBannarPos(BannarPos pos = BannarPos.BottomCenter)
    {
        MaxSdkBase.BannerPosition enmuPos;
        switch (pos)
        {
            case BannarPos.TopCenter:
                enmuPos = MaxSdkBase.BannerPosition.TopCenter;break;
            case BannarPos.BottomCenter:
                enmuPos = MaxSdkBase.BannerPosition.BottomCenter;break;
            default:
                enmuPos = MaxSdkBase.BannerPosition.BottomCenter; break;
        }
        MaxSdk.UpdateBannerPosition(IdBannar, enmuPos);
    }

    public override bool IsBannarReady()
    {
        return isBannarReady;
    }

    public void InitializeBannerAds()
    {
        // Banners are automatically sized to 320×50 on phones and 728×90 on tablets
        // You may call the utility method MaxSdkUtils.isTablet() to help with view sizing adjustments
        MaxSdk.CreateBanner(IdBannar, MaxSdkBase.BannerPosition.BottomCenter);

        // Set background or background color for banners to be fully functional
        MaxSdk.SetBannerBackgroundColor(IdBannar, Color.white);
        
        MaxSdkCallbacks.Banner.OnAdLoadedEvent += OnBannerAdLoadedEvent;
        MaxSdkCallbacks.Banner.OnAdLoadFailedEvent += OnBannerAdLoadFailedEvent;
        MaxSdk.LoadBanner(IdBannar);
    }

    private void OnBannerAdLoadedEvent(string adUnitId, MaxSdkBase.AdInfo adInfo)
    {
        isBannarReady = true;
    }

    private void OnBannerAdLoadFailedEvent(string adUnitId, MaxSdkBase.ErrorInfo errorInfo)
    {
        isBannarReady = false;
        MaxSdk.LoadBanner(IdBannar);
    }


    #endregion
}

到了这里,关于【Unity】接入Max广告聚合SDK的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Unity 导入spine插件

    1.首先去spine官网下载插件,地址是http://zh.esotericsoftware.com/spine-runtimes 2.选择unitypackage 3.问美术 他们的spine版本号 选择对应版本 4.下载下来后 直接导入Unity,删除案例文件夹。这样插件就导入了 5.美术给的资源,一般是三个,你在Unity新建个文件夹直接拖入,这时候会报错,说

    2024年02月02日
    浏览(61)
  • unity游戏,插入聚合广告TopOn,优量汇,穿山甲,groMore,快手等,隐私协议解决方案!(包括传感器的使用目的和方式,还有Sdk使用Mac地址和软件列表的目的)

    很久以前参考别的大佬的代码,忘了来源,因为新游戏增加了一些东西,上架TapTap不合格,原因是少了传感器的使用目的和方式,还有Sdk使用Mac地址和软件列表的目的。 所以补充了传感器和软件列表。 只需要把这个代码放到UNITY项目的Editor目录,打包就有弹窗。

    2024年02月13日
    浏览(106)
  • 如何在vscode导入下载的插件安装包

    点击vscode插件 -- 点击3个点 -- 选择从VSIX安装 点击更新报 Cannot update while running on a read-only volume. The application is on a read-only volume. Please move the application and try again. If you’re on macOS Sierra or later, you’ll need to move the application out of the Downloads directory. This might mean the application was put o

    2024年02月11日
    浏览(68)
  • 官网下载IDE插件并导入IDE

    地址:https://plugins.jetbrains.com/plugin/21068-codearts-snap/versions 说明:本次演示以IDEA软件为例 操作: 等待下载完成 点击File-setting-Plugins 导入插件 找到刚刚下载的插件选择导入 导入成功 IDE软件不对应就会出现下列错误,等待后续插件更新再使用或者,降低IDE版本

    2024年04月15日
    浏览(45)
  • 使用Blender的CATS插件把MMD模型转为FBX,导入Unity

    CATS插件 https://github.com/absolute-quantum/cats-blender-plugin 安装到blender 我使用的是3.0版本 星穹铁道,原神等游戏的官方会把模型放在模之屋供二创下载 模之屋 https://www.aplaybox.com/ 我这次下载的是三月七的模型 解压缩后备用 按N选择CATS 点ImportModel,选择 三月七1.0.pmx 导入以后选sha

    2024年02月08日
    浏览(64)
  • 微信小程序激励广告接入指南:流量主开通与广告位设置

    本文详细介绍了如何在微信小程序中开通流量主并插入激励广告的具体步骤。从累计访问数要求到广告位创建,再到代码实现,一步步教您如何提高收益。

    2024年02月14日
    浏览(83)
  • Unity从0到放弃的学习之路day2——导入PMX模型,下载资源导入

    ​                                                                                          ——倚东风,一笑嫣然,转盼万花羞落。         什么!辛辛苦苦码了许久竟然被吞了!!!!又卑微的重新写了一遍,!这未保存的内容也太多了!放弃放弃!必

    2024年02月07日
    浏览(118)
  • CocosCreator接入微信流量主广告

    本文介绍cocos creator接入微信流量主广告主要流程,下方会附带代码。 微信小程序开通流量主要求: uv达1000人,没有严重的违规记录,账户最多绑定50个 满足上面要求后,便可开通流量主 如果要是当天满足1000人,开通按钮不会及时显示,一般在24小时内才会显示 下面是我开

    2024年02月09日
    浏览(54)
  • 鲸鸿动能广告接入如何高效变现流量?

    广告是App开发者最常用的流量变现方法之一,当App拥有一定数量用户时,开发者就需要考虑如何进行流量变现,帮助App实现商业可持续增长。 鲸鸿动能流量变现服务是广告服务依托华为终端强大的平台与数据能力为开发者提供的App流量变现服务,开发者通过该服务可以在自己

    2024年02月03日
    浏览(37)
  • 无广告 齐全 简洁 免费的音乐开源软件(支持 电脑max win linux 手机 )——lxMusic

    话不多说先上效果 (真香) 下载地址 (官方) https://www.lanzoui.com/b0bf2cfa/ 密码:glqw 软件安装包说明 文件名带 win_ 或带 Setup 的是在 Windows 系统上运行的版本; 其中以 Setup.exe 结尾的版本为安装版,带自动更新功能,可自动更新软件(但若你所在网络访问 GitHub 较慢,则可能

    2024年02月12日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包