下載和導(dǎo)入MAX Unity插件:
官方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會幫你根據(jù)選擇的廣告源下載對應(yīng)的SDK,可能需要掛vpn
4.在Unity應(yīng)用中加載廣告
激勵視頻有一下參考接口
//加載激勵視頻
MaxSdk.LoadRewardedAd(adUnitId);
//判斷是是否已經(jīng)加載激勵視頻
MaxSdk.IsRewardedAdReady(adUnitId)
//播放激勵視頻
MaxSdk.ShowRewardedAd(adUnitId);
//添加獎勵下發(fā)回調(diào)
MaxSdkCallbacks.Rewarded.OnAdReceivedRewardEvent += OnRewardedAdReceivedRewardEvent;
其他類型的廣告接口可以看側(cè)邊欄的這里選擇文章來源:http://www.zghlxwxcb.cn/news/detail-476643.html
給一份接入后的參考代碼:文章來源地址http://www.zghlxwxcb.cn/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");
}
//起動回調(diào)
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>
/// 激勵激勵已經(jīng)準(zhǔn)備
/// </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>
/// 激勵視頻重試請求次數(shù)
/// </summary>
int retryAttemptReward = 0;
/// <summary>
/// 激勵回調(diào)
/// </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>
/// 廣告關(guān)閉
/// </summary>
/// <param name="adUnitId"></param>
/// <param name="adInfo"></param>
private void OnRewardedAdHiddenEvent(string adUnitId, MaxSdkBase.AdInfo adInfo)
{
LoadRewardedAd();
onPlayReward = null;
}
/// <summary>
/// 發(fā)放獎勵
/// </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>
/// 激勵激勵已經(jīng)準(zhǔn)備
/// </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>
/// 插屏視頻重試請求次數(shù)
/// </summary>
int retryAttemptInterstitial = 0;
/// <summary>
/// 插屏回調(diào)
/// </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>
/// 插屏廣告顯示關(guān)閉
/// </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>
/// 設(shè)置廣告位置
/// </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
}
到了這里,關(guān)于【Unity】接入Max廣告聚合SDK的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!