From 7dbff3d2bc96c4015cdd0e26e857babbe536e8f4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=89=E5=B3=B0?= Date: Thu, 4 Sep 2025 16:50:26 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=92=E5=B1=8F=E8=A7=84=E5=88=99=E3=80=81?= =?UTF-8?q?=E8=8E=B7=E5=8F=96=E4=BA=92=E5=8A=A8=E5=B9=BF=E5=91=8A=E9=93=BE?= =?UTF-8?q?=E6=8E=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../SDKManager/AdsSDKManager/AdsSDKManager.cs | 49 +++++++++++-------- Assets/Script/SDKManager/AppSDKManager.cs | 3 +- .../SDKManager/EFSdkManager/EFSdkManager.cs | 34 +++++++++++-- 3 files changed, 61 insertions(+), 25 deletions(-) diff --git a/Assets/Script/SDKManager/AdsSDKManager/AdsSDKManager.cs b/Assets/Script/SDKManager/AdsSDKManager/AdsSDKManager.cs index d5b8775..c70e55c 100644 --- a/Assets/Script/SDKManager/AdsSDKManager/AdsSDKManager.cs +++ b/Assets/Script/SDKManager/AdsSDKManager/AdsSDKManager.cs @@ -240,20 +240,20 @@ namespace WZ public bool IvRulesShow(IvType ivadType) { //1.获取远程配置 - string json = FireBaseRemoteConfigManager.Instance.GetRemoteConfigString("IV_RULES"); - if (string.IsNullOrEmpty(json)) - { - LoggerUtils.Debug("[SDK] 获取远程配置IV_RULES是空 没有限制"); - return true; - } - //2.解析配置 - var dates = JsonConvert.DeserializeObject(json); - if (dates == null && dates.Length == 0) - { - LoggerUtils.Debug("[SDK] 获取远程配置信息是空"); - return true; - } - //3.获取IVADType对应的配置 + string json = FireBaseRemoteConfigManager.Instance.GetRemoteConfigString("IV_RULES"); + if (string.IsNullOrEmpty(json)) + { + LoggerUtils.Debug("[SDK] 获取远程配置IV_RULES是空 没有限制"); + return true; + } + //2.解析配置 + var dates = JsonConvert.DeserializeObject(json); + if (dates == null && dates.Length == 0) + { + LoggerUtils.Debug("[SDK] 获取远程配置信息是空"); + return true; + } + //3.获取IVADType对应的配置 IvRulesData ivRulesData = null; foreach (var data in dates) { @@ -270,19 +270,26 @@ namespace WZ //4.判断skip(次安装跳过几次触发不展示广告) int skipLevel = ivRulesData.skipLevel; int currentSkipLevel = PlayerPrefsUtils.GetPlayerPrefsInt($"{IvRulesKey.KEY_SKIPLEVEL}_{ivadType.ToString()}", 0); - LoggerUtils.Debug($"[SDK] {ivadType.ToString()} 前N次不展示插屏, 本地次数是{currentSkipLevel}, 远程参数是{skipLevel}"); + LoggerUtils.Debug($"[SDK] {ivadType.ToString()} 前N次不展示插屏, 本地次数是{currentSkipLevel + 1}, 远程参数是{skipLevel}"); if (currentSkipLevel < skipLevel) { PlayerPrefsUtils.SavePlayerPrefsInt($"{IvRulesKey.KEY_SKIPLEVEL}_{ivadType.ToString()}", currentSkipLevel + 1); return false; } - //5.判断overLevel(每跳过几次触发) + //5.判断overLevel(每跳过几次触发) 第一次会展示 之后每展示一次间隔+1 int overLevel = ivRulesData.overLevel; int currentOverLevel = IvRulesConst.OverLevels.ContainsKey(ivadType.ToString()) ? IvRulesConst.OverLevels[ivadType.ToString()] : 0; - LoggerUtils.Debug($"[SDK] {ivadType.ToString()} 当前间隔次数: 本地次数是{currentOverLevel}, 远程参数是{overLevel}"); - if (currentOverLevel < overLevel) + LoggerUtils.Debug($"[SDK] {ivadType.ToString()} 当前间隔次数: 本地次数是{currentOverLevel + 1}, 远程参数是{overLevel}"); + if (currentOverLevel != 0) { - IvRulesConst.OverLevels[ivadType.ToString()] = currentOverLevel + 1; + if (currentOverLevel >= overLevel) + { + IvRulesConst.OverLevels[ivadType.ToString()] = 0; + } + else + { + IvRulesConst.OverLevels[ivadType.ToString()] += 1; + } return false; } @@ -295,8 +302,8 @@ namespace WZ { return false; } - - return true; + + return true; } /// diff --git a/Assets/Script/SDKManager/AppSDKManager.cs b/Assets/Script/SDKManager/AppSDKManager.cs index 2647959..9da0bdb 100644 --- a/Assets/Script/SDKManager/AppSDKManager.cs +++ b/Assets/Script/SDKManager/AppSDKManager.cs @@ -106,7 +106,7 @@ public class AppSDKManager : D_MonoSingleton AdsSDKManager.Instance.ShowInterstitialAd(position, ivadType, (revenue) => { //展示完一个插屏之后调用 - IvRulesConst.OverLevels[ivadType.ToString()] = 0; + IvRulesConst.OverLevels[ivadType.ToString()] = 1; IvRulesConst.Intervals[ivadType.ToString()] = TimeUtils.GetLocalTimestamp(); AdsSplashManager.Instance.backgroundTime = Time.realtimeSinceStartup; callback?.Invoke(revenue); @@ -366,6 +366,7 @@ public class AppSDKManager : D_MonoSingleton return; } + EFSdkManager.Instance.AddUrl(id, url); EFSdkManager.Instance.SetOkspinShowPos(pos); EFSdk.get().ShowWebView(id, url, pRect, pCam); } diff --git a/Assets/Script/SDKManager/EFSdkManager/EFSdkManager.cs b/Assets/Script/SDKManager/EFSdkManager/EFSdkManager.cs index d90c3d5..8edf742 100644 --- a/Assets/Script/SDKManager/EFSdkManager/EFSdkManager.cs +++ b/Assets/Script/SDKManager/EFSdkManager/EFSdkManager.cs @@ -1,4 +1,5 @@ using System; +using System.Collections.Generic; using EFSDK; using Firebase.Analytics; using UnityEngine; @@ -14,6 +15,9 @@ namespace WZ private Action _webviewShowSuccessAction; + //保存的链接 + private List urls = new List(); + public void Init() { if (Application.isEditor) @@ -24,7 +28,6 @@ namespace WZ { if (actionType == EFSdk.ActionType.H5_Load_Succ) { - //webview展示成功 _webviewShowSuccessAction?.Invoke(str); } }); @@ -48,10 +51,10 @@ namespace WZ /// string 是互动广告的url public void SetHdH5ImpressionCallback() { - EFSdk.get().SetHdH5ImpressionCallback((url) => + EFSdk.get().SetHdH5ImpressionCallback((pid) => { //判断链接不为空 - if (string.IsNullOrEmpty(url)) + if (string.IsNullOrEmpty(pid)) { return; } @@ -60,6 +63,8 @@ namespace WZ int count = PlayerPrefsUtils.GetPlayerPrefsInt(KEY_OKSPIN_SHOW_COUNT, 0); count++; PlayerPrefsUtils.SavePlayerPrefsInt(KEY_OKSPIN_SHOW_COUNT, count); + + string url = GetUrl(pid); //互动广告只有okSpin float revenue = FireBaseRemoteConfigManager.Instance.GetRemoteConfigFloat("rev_okspin", 0); @@ -82,5 +87,28 @@ namespace WZ { _webviewShowSuccessAction = action; } + + public void AddUrl(int id, string url) + { + if (!urls.Contains(url)) + { + urls.Add(url); + } + } + + private string GetUrl(string pid) + { + foreach (var url in urls) + { + if (url.Contains(pid)) + { + return url; + } + } + + return pid; + } + + } } \ No newline at end of file