Files
2026-05-28 15:23:36 +08:00

462 lines
18 KiB
C#

using System;
using System.Collections;
using System.Collections.Generic;
using RGKT2NIYSDK;
// using AppsFlyerSDK;
// using AppsFlyerSDK;
using UnityEngine;
using UnityEngine.Events;
namespace ZooMatch
{
public class MaxADKit
{
public static string SDKKey =
"N79bseJJqX7mlVAcld9x4vkF6mm8a6pZaJhzMauN934y1f5KIDr2QVDrRhuJFgtL9POreELZVuwUTs9dAdZiSp";
public static string interstitialADUnitID = "83d1339b89e7e791";
public static string rewardedADUnitID = "f7fbcf0b6c8d02b2";
private const float RevenueThreshold = 0f;
public static Dictionary<string, string> adCallbackInfo;
public static void Init()
{
#if !UNITY_EDITOR
//注册 ab事件,0或1,0为自然量版本,1为激励版本
RGKT2NIYSDKUtility.Instance.RegistIosParam(i =>
{
SuperApplication.Instance.attribution = i == 0 ? "organic" : "non-organic";
// SuperApplication.Instance.attribution = "non-organic";
Debug.Log($"ios ab param: {i} attribution: {SuperApplication.Instance.attribution}");
NetworkDispatcher.Instance.Dispatch(NetworkMsg.Login);
});
void GameConfig(bool result, string config)
{
Debug.Log($"************** game config result: {config}, result: {result}");
}
RGKT2NIYSDKUtility.Instance.Init(null,null,GameConfig);
#endif
// MaxSdkCallbacks.OnSdkInitializedEvent += sdkConfiguration =>
// {
// InitializeRewardedAds();
// InitializeInterstitialAds();
// };
//
//
// MaxSdk.SetSdkKey(SDKKey);
//
// // var loginModel = GameHelper.GetLoginModel();
// // user_id = loginModel.uid.ToString();
// // MaxSdk.SetUserId(loginModel.uid.ToString());
// // MaxSdk.SetIsAgeRestrictedUser(false);
// MaxSdk.SetHasUserConsent(true);
// MaxSdk.SetDoNotSell(false);
//
// MaxSdk.InitializeSdk();
//
// // MaxSdk.ShowMediationDebugger();
// #if !UNITY_EDITOR
// MBridgeSDKManager.initialize("368295", "fc0155e8f6e8bda23b06d22414379609");
// #endif
adCallbackInfo = new Dictionary<string, string>();
}
public static void SetUserID(string userID)
{
user_id = userID;
MaxSdk.SetUserId(user_id);
}
#region 插屏广告相关
public static bool CheckInter()
{
var isReady = RGKT2NIYSDKUtility.Instance.IsInterReady();
return isReady;
}
public static UnityAction<bool> onInterstitialAdCompleted = null;
public static void ShowInterstitial(string placement = "DefaultInterstitial",
UnityAction<bool> onCompleted = null)
{
if (CheckInter())
{
Debug.Log($"插屏广告已经准备好,播放");
RGKT2NIYSDKUtility.Instance.ShowInter(placement, (() =>
{
onCompleted?.Invoke(true);
}));
}
else
{
Debug.Log($"插屏广告未准备好");
onCompleted?.Invoke(false);
}
// if (MaxSdk.IsInterstitialReady(interstitialADUnitID))
// {
// Debug.Log($"广告已经准备好,播放");
// MaxSdk.ShowInterstitial(interstitialADUnitID, placement);
// onInterstitialAdCompleted = onCompleted;
//
// }
// else
// {
// Debug.Log($"广告未准备好,不播放");
//
// onCompleted?.Invoke(false);
// }
}
static int retryAttemptInterstitial;
public static void InitializeInterstitialAds()
{
MaxSdkCallbacks.Interstitial.OnAdLoadedEvent += OnInterstitialLoadedEvent;
MaxSdkCallbacks.Interstitial.OnAdLoadFailedEvent += OnInterstitialLoadFailedEvent;
MaxSdkCallbacks.Interstitial.OnAdDisplayedEvent += OnInterstitialDisplayedEvent;
MaxSdkCallbacks.Interstitial.OnAdClickedEvent += OnInterstitialClickedEvent;
MaxSdkCallbacks.Interstitial.OnAdHiddenEvent += OnInterstitialHiddenEvent;
MaxSdkCallbacks.Interstitial.OnAdDisplayFailedEvent += OnInterstitialAdFailedToDisplayEvent;
MaxSdkCallbacks.Interstitial.OnAdRevenuePaidEvent += OnInterstitialAdRevenueEvent;
LoadInterstitial();
}
private static void LoadInterstitial()
{
MaxSdk.LoadInterstitial(interstitialADUnitID);
}
private static void OnInterstitialLoadedEvent(string adUnitId, MaxSdkBase.AdInfo adInfo)
{
retryAttemptInterstitial = 0;
NetworkKit.BuriedPoint(BuriedPointEvent.video_type, BuriedPointEvent.Interstitial_videos_fill_number, 1);
}
private static void OnInterstitialLoadFailedEvent(string adUnitId, MaxSdkBase.ErrorInfo errorInfo)
{
retryAttemptInterstitial++;
double retryDelay = Math.Pow(2, Math.Min(6, retryAttemptInterstitial));
CrazyAsyKit.StartAction("LoadInterstitial", LoadInterstitial, (float)retryDelay);
}
private static void OnInterstitialDisplayedEvent(string adUnitId, MaxSdkBase.AdInfo adInfo)
{
}
private static void OnInterstitialAdFailedToDisplayEvent(string adUnitId, MaxSdkBase.ErrorInfo errorInfo,
MaxSdkBase.AdInfo adInfo)
{
LoadInterstitial();
}
private static void OnInterstitialClickedEvent(string adUnitId, MaxSdkBase.AdInfo adInfo)
{
}
private static void OnInterstitialHiddenEvent(string adUnitId, MaxSdkBase.AdInfo adInfo)
{
LoadInterstitial();
onInterstitialAdCompleted?.Invoke(true);
onInterstitialAdCompleted = null;
}
#endregion
#region 激励视频广告相关
private static bool CheckReward()
{
var isReady = RGKT2NIYSDKUtility.Instance.IsVideoReady();
return isReady;
}
private static UnityAction<bool> onVideoAdCompleted = null;
private static string _placement = "";
private static Coroutine _waitForVideoAd = null;
public static void ShowVideo(string placement = "DefaultVideo", UnityAction<bool> onCompleted = null)
{
// onVideoAdCompleted = onCompleted;
// _placement = placement;
#if UNITY_EDITOR
onVideoAdCompleted?.Invoke(true);
#else
NetworkKit.BuriedPoint(BuriedPointEvent.video_behavior,BuriedPointEvent.watch_ad_people,1);
NetworkKit.BuriedPoint(BuriedPointEvent.video_type,BuriedPointEvent.Rewarded_videos_trigger_number,1);
if (CheckReward())
{
Debug.Log($"激励广告已经准备好, 播放");
RGKT2NIYSDKUtility.Instance.ShowRewardVideo(placement, b =>
{
Debug.Log($"reward video result: {b}");
onCompleted?.Invoke(b);
}, () =>
{
Debug.Log("激励广告关闭");
});
}
else
{
Debug.Log($"广告未准备好");
onCompleted?.Invoke(false);
}
// if (MaxSdk.IsRewardedAdReady(rewardedADUnitID))
// {
// MaxSdk.ShowRewardedAd(rewardedADUnitID, _placement);
// }
// else
// {
// if (_waitForVideoAd != null)
// {
// CrazyAsyKit.StopCoroutine(_waitForVideoAd);
// }
// _waitForVideoAd = CrazyAsyKit.StartCoroutine(WaitForVideoAd());
// }
#endif
}
private static IEnumerator WaitForVideoAd()
{
UICtrlDispatcher.Instance.Dispatch(UICtrlMsg.PayloadingUI_Open);
var count = 0;
var result = false;
while (count < 6)
{
if (MaxSdk.IsRewardedAdReady(rewardedADUnitID))
{
result = true;
MaxSdk.ShowRewardedAd(rewardedADUnitID, _placement);
break;
}
count++;
yield return new WaitForSeconds(0.5f);
}
if (!result)
{
onVideoAdCompleted?.Invoke(result);
}
UICtrlDispatcher.Instance.Dispatch(UICtrlMsg.PayloadingUI_Close);
_waitForVideoAd = null;
}
static int retryAttempt;
public static void InitializeRewardedAds()
{
MaxSdkCallbacks.Rewarded.OnAdLoadedEvent += OnRewardedAdLoadedEvent;
MaxSdkCallbacks.Rewarded.OnAdLoadFailedEvent += OnRewardedAdLoadFailedEvent;
MaxSdkCallbacks.Rewarded.OnAdDisplayedEvent += OnRewardedAdDisplayedEvent;
MaxSdkCallbacks.Rewarded.OnAdClickedEvent += OnRewardedAdClickedEvent;
MaxSdkCallbacks.Rewarded.OnAdRevenuePaidEvent += OnRewardedAdRevenuePaidEvent;
MaxSdkCallbacks.Rewarded.OnAdHiddenEvent += OnRewardedAdHiddenEvent;
MaxSdkCallbacks.Rewarded.OnAdDisplayFailedEvent += OnRewardedAdFailedToDisplayEvent;
MaxSdkCallbacks.Rewarded.OnAdReceivedRewardEvent += OnRewardedAdReceivedRewardEvent;
MaxSdkCallbacks.Rewarded.OnAdRevenuePaidEvent += OnRewardedAdRevenueEvent;
LoadRewardedAd();
}
private static void LoadRewardedAd()
{
MaxSdk.LoadRewardedAd(rewardedADUnitID);
}
private static void OnInterstitialAdRevenueEvent(string adUnitId, MaxSdkBase.AdInfo adInfo)
{
// #if !ZooMatchRelease
// Debug.Log("OnInterstitialAdRevenueEvent: " + adInfo.Revenue);
// GameHelper.AdOverRevenueEvent(2, 0.1f);
// #endif
OnAdRevenuePaidEvent(adUnitId, adInfo, 2);
}
private static void OnRewardedAdRevenueEvent(string adUnitId, MaxSdkBase.AdInfo adInfo)
{
// #if !ZooMatchRelease
// Debug.Log("OnInterstitialAdRevenueEvent: " + adInfo.Revenue);
// GameHelper.AdOverRevenueEvent(1, 0.1f);
// #endif
OnAdRevenuePaidEvent(adUnitId, adInfo, 1);
}
public static string user_id = "";
private static void OnAdRevenuePaidEvent(string adUnitId, MaxSdkBase.AdInfo adInfo, int adType)
{
//string countryCode = MaxSdk.GetSdkConfiguration().CountryCode; // "US" for the United States, etc - Note: Do not confuse this with currency code which is "USD"
// //string networkName = adInfo.NetworkName; // Display name of the network that showed the ad
// // string adUnitIdentifier = adInfo.AdUnitIdentifier; // The MAX Ad Unit ID
// //string placement = adInfo.Placement; // The placement this ad's postbacks are tied to
if (adInfo.Revenue > 0)
{
GameHelper.AdOverRevenueEvent(adType,(float)adInfo.Revenue);
var revenue = adInfo.Revenue;
//adjust上传广告收益时,不判断是否大于0.1,只要大于0都上传
// AdjustEvent adjustEvent = new AdjustEvent("nytwjm");
// adjustEvent.SetRevenue(revenue, "USD");
// Adjust.TrackEvent(adjustEvent);
}
SaveData.GetSaveobject().watchRewardAD_value += adInfo.Revenue;
SaveData.GetSaveobject().watchRewardADnumbers++;
SaveData.saveDataFunc();
// if (SaveData.GetSaveobject().watchRewardADnumbers == 1)
// {
// AdjustEvent adjustEvent = new AdjustEvent("96ny5o");
// adjustEvent.SetRevenue(SaveData.GetSaveobject().watchRewardAD_value, "USD");
// Adjust.TrackEvent(adjustEvent);
// }
// else if (SaveData.GetSaveobject().watchRewardADnumbers == 5)
// {
// AdjustEvent adjustEvent = new AdjustEvent("5zai0n");
// adjustEvent.SetRevenue(SaveData.GetSaveobject().watchRewardAD_value, "USD");
// Adjust.TrackEvent(adjustEvent);
// }
// else if (SaveData.GetSaveobject().watchRewardADnumbers == 10)
// {
// AdjustEvent adjustEvent = new AdjustEvent("9510hf");
// adjustEvent.SetRevenue(SaveData.GetSaveobject().watchRewardAD_value, "USD");
// Adjust.TrackEvent(adjustEvent);
// }
// int highSend;
// if (!PlayerPrefs.HasKey($"sendHighRevenue_{user_id}"))
// {
// highSend = 0; // 如果不存在,则初始化为 0
// }
// else
// {
// highSend = PlayerPrefs.GetInt($"sendHighRevenue_{user_id}", 0); // 从 PlayerPrefs 中获取
// }
// // 判断是否需要发送高收入事件
// // Debug.Log($"highSend=====: {highSend}");
// if (highSend == 0)
// {
// float limitNum = GameHelper.GetCommonModel().afSendLimit;
// var totalNum = Convert.ToDouble(PlayerPrefs.GetString($"adRevenueTotal_{user_id}", "0"));
// totalNum += adInfo.Revenue;
// // Debug.Log($"totalNum=====: {totalNum} {limitNum}");
// if (totalNum >= limitNum)
// {
// GameHelper.sendHighRevenueToAF(); // 发送高收入事件
// PlayerPrefs.SetInt($"sendHighRevenue_{user_id}", 1); // 标记已发送
// }
// else
// {
// PlayerPrefs.SetString($"adRevenueTotal_{user_id}", totalNum.ToString());
// }
// }
/*
ATTRIBUTION_PLATFORM_APPSFLYER = "AppsFlyer";
ATTRIBUTION_PLATFORM_ADJUST = "Adjust";
ATTRIBUTION_PLATFORM_TENJIN = "Tenjin";
ATTRIBUTION_PLATFORM_SINGULAR = "Singular";
ATTRIBUTION_PLATFORM_KOCHAVA = "Kochava";
ATTRIBUTION_PLATFORM_BRANCH = "Branch";
ATTRIBUTION_PLATFORM_REYUN = "Reyun";
ATTRIBUTION_PLATFORM_SOLAR_ENGINE = "SolarEngine";
...
...
*/
//这里需要改成自己的归因平台名称,这里以Adjust为例,"userid"替换为归因平台UID
MBridgeRevenueParamsEntity mBridgeRevenueParamsEntity = new MBridgeRevenueParamsEntity(MBridgeRevenueParamsEntity.ATTRIBUTION_PLATFORM_ADJUST, PlayerPrefs.GetString("adjust_adid", "default"));
///MaxSdkBase.AdInfo类型的adInfo
mBridgeRevenueParamsEntity.SetMaxAdInfo(adInfo);
MBridgeRevenueManager.Track(mBridgeRevenueParamsEntity);
}
private static void OnRewardedAdLoadedEvent(string adUnitId, MaxSdkBase.AdInfo adInfo)
{
retryAttempt = 0;
NetworkKit.BuriedPoint(BuriedPointEvent.AD_event, $"{BuriedPointEvent.AdLoadCode}Succeed", 1, false);
}
private static void OnRewardedAdLoadFailedEvent(string adUnitId, MaxSdkBase.ErrorInfo errorInfo)
{
retryAttempt++;
double retryDelay = Math.Pow(2, Math.Min(3, retryAttempt));
NetworkKit.BuriedPoint(BuriedPointEvent.AD_event, $"{BuriedPointEvent.AdLoadCode}{errorInfo.Code}", 1, false);
CrazyAsyKit.StartAction("LoadRewardedAd", LoadRewardedAd, (float)retryDelay);
}
private static void OnRewardedAdDisplayedEvent(string adUnitId, MaxSdkBase.AdInfo adInfo)
{
NetworkKit.BuriedPoint(BuriedPointEvent.AD_event, $"{BuriedPointEvent.ADShowCode}Succeed", 1, false);
}
private static void OnRewardedAdFailedToDisplayEvent(string adUnitId, MaxSdkBase.ErrorInfo errorInfo,
MaxSdkBase.AdInfo adInfo)
{
NetworkKit.BuriedPoint(BuriedPointEvent.AD_event, $"{BuriedPointEvent.ADShowCode}{errorInfo.Code}", 1, false);
LoadRewardedAd();
}
private static void OnRewardedAdClickedEvent(string adUnitId, MaxSdkBase.AdInfo adInfo)
{
}
private static void OnRewardedAdHiddenEvent(string adUnitId, MaxSdkBase.AdInfo adInfo)
{
Debug.Log("RewardedAdHiddenEvent---0");
LoadRewardedAd();
if (_hasReceivedReward && onVideoAdCompleted != null)
{
onVideoAdCompleted?.Invoke(true);
}
onVideoAdCompleted = null;
_hasReceivedReward = false;
Debug.Log("RewardedAdHiddenEvent---1-" + GameHelper.IsGiftSwitch() + " remove:" + SaveData.GetSaveobject().is_get_removead + " rewardinsertion:" +GameHelper.GetCommonModel().rewardinsertion );
if (GameHelper.IsGiftSwitch() && !SaveData.GetSaveobject().is_get_removead && (UnityEngine.Random.Range(0, 100) < GameHelper.GetCommonModel().rewardinsertion))
{
Debug.Log("RewardedAdHiddenEvent---2-");
NetworkKit.BuriedPoint(BuriedPointEvent.Apple_pay_event, BuriedPointEvent.afterRewardAdShow, 1);
GameHelper.ShowInterstitial("AfterReward");
}
}
private static bool _hasReceivedReward = false;
private static void OnRewardedAdReceivedRewardEvent(string adUnitId, MaxSdk.Reward reward,
MaxSdkBase.AdInfo adInfo)
{
_hasReceivedReward = true;
}
private static void OnRewardedAdRevenuePaidEvent(string adUnitId, MaxSdkBase.AdInfo adInfo)
{
}
#endregion
}
}