This commit is contained in:
juncong lee 2026-01-08 10:16:46 +08:00
parent 85e0c0da96
commit 20b80f9e3c
22 changed files with 58 additions and 153 deletions

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools">
<application>
<application tools:replace="android:enableOnBackInvokedCallback">
<activity android:name="com.unity3d.player.UnityPlayerActivity" android:theme="@style/UnityThemeSelector">
<intent-filter>
<action android:name="android.intent.action.MAIN" />

View File

@ -1 +1 @@
<?xml version="1.0" encoding="utf-8"?><resources><string name="com.crashlytics.android.build_id" translatable="false">44866dc4-8429-4db0-8dfb-a5a86c830b9f</string></resources>
<?xml version="1.0" encoding="utf-8"?><resources><string name="com.crashlytics.android.build_id" translatable="false">bccad182-0be4-4005-ab4a-2ceadacc9933</string></resources>

View File

@ -1,32 +0,0 @@
fileFormatVersion: 2
guid: c639efe897383441bba950ffd80be3dd
PluginImporter:
externalObjects: {}
serializedVersion: 2
iconMap: {}
executionOrder: {}
defineConstraints: []
isPreloaded: 0
isOverridable: 0
isExplicitlyReferenced: 0
validateReferences: 1
platformData:
- first:
Android: Android
second:
enabled: 1
settings: {}
- first:
Any:
second:
enabled: 0
settings: {}
- first:
Editor: Editor
second:
enabled: 0
settings:
DefaultValueInitialized: true
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 47e631a6b8aee480cb3272b209d73c9f
guid: 12ea2c2805188403481780f0aa760364
PluginImporter:
externalObjects: {}
serializedVersion: 2

View File

@ -64,7 +64,6 @@ dependencies {
implementation 'io.bidmachine:ads:3.3.0' // Assets/ThinkupTpnPlugin/AnyThinkAds/Plugins/Android/NonChina/mediation/bidmachine/Editor/Dependencies.xml:6
implementation 'io.github.kwainetwork:adApi:1.2.21' // Assets/ThinkupTpnPlugin/AnyThinkAds/Plugins/Android/NonChina/mediation/kwai/Editor/Dependencies.xml:3
implementation 'io.github.kwainetwork:adImpl:1.2.21' // Assets/ThinkupTpnPlugin/AnyThinkAds/Plugins/Android/NonChina/mediation/kwai/Editor/Dependencies.xml:4
implementation 'net.pubnative:hybid.sdk:3.6.2' // Assets/ThinkupTpnPlugin/AnyThinkAds/Plugins/Android/NonChina/mediation/pubnative/Editor/Dependencies.xml:6
implementation 'org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.4.10' // Assets/ThinkupTpnPlugin/AnyThinkAds/Plugins/Android/NonChina/mediation/kwai/Editor/Dependencies.xml:9
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.1' // Assets/ThinkupTpnPlugin/AnyThinkAds/Plugins/Android/NonChina/mediation/chartboost/Editor/Dependencies.xml:15
implementation 'org.jetbrains.kotlinx:kotlinx-serialization-json:1.5.1' // Assets/ThinkupTpnPlugin/AnyThinkAds/Plugins/Android/NonChina/mediation/chartboost/Editor/Dependencies.xml:16

View File

@ -39,9 +39,6 @@ dependencyResolutionManagement {
maven {
url "https://artifact.bytedance.com/repository/pangle" // Assets/ThinkupTpnPlugin/AnyThinkAds/Plugins/Android/NonChina/mediation/pangle/Editor/Dependencies.xml:5
}
maven {
url "https://verve.jfrog.io/artifactory/verve-gradle-release" // Assets/ThinkupTpnPlugin/AnyThinkAds/Plugins/Android/NonChina/mediation/pubnative/Editor/Dependencies.xml:5
}
maven {
url "https://s3.amazonaws.com/smaato-sdk-releases/" // Assets/ThinkupTpnPlugin/AnyThinkAds/Plugins/Android/NonChina/mediation/smaato/Editor/Dependencies.xml:5
}

View File

@ -54,8 +54,11 @@ public class AdjustManager : D_MonoSingleton<AdjustManager>
ShuShuEvent.Instance.SetSuperProperties(new Dictionary<string, object>() { { "adid", id } });
ShuShuEvent.Instance.UserSet(new Dictionary<string, object>() { { "adid", id } });
});
var network = GetAdjustNetwork();
LoggerUtils.Debug("初始化adjust network"+network);
var network = AdjustNetwork.GetNetwork();
if (!string.IsNullOrEmpty(network))
{
RushSDKManager.Instance.OnUserSourceListener?.Invoke(IsOrganic(network), network);
@ -111,7 +114,7 @@ public class AdjustManager : D_MonoSingleton<AdjustManager>
}
}
if (callGetTimes >= 3*60)
if (callGetTimes >= 20)
{
if (attribute != null)
{
@ -121,7 +124,7 @@ public class AdjustManager : D_MonoSingleton<AdjustManager>
{
OnReceiveCallback(null);
}
CancelInvoke(nameof(CallGetAttributionAsync));
}
}
@ -146,6 +149,7 @@ public class AdjustManager : D_MonoSingleton<AdjustManager>
private void OnReceiveCallback(AdjustAttribution attribution)
{
CancelInvoke(nameof(CallGetAttributionAsync));
string campaign = "";
string adgroup = "";
string creative = "";
@ -171,7 +175,6 @@ public class AdjustManager : D_MonoSingleton<AdjustManager>
network = "Organic";
}
AdjustNetwork.Instance.SetNetwork(attribution.Network);
RushSDKManager.Instance.OnUserSourceListener?.Invoke(IsOrganic(network), network);
PlayerPrefsUtils.SavePlayerPrefsString(_adjustNetwork, network);
PlayerPrefsUtils.SavePlayerPrefsString(_adjustCampaign, campaign);

View File

@ -6,34 +6,6 @@ using WZ;
public class AdjustNetwork : D_MonoSingleton<AdjustNetwork>
{
private const string KEY_USER_NETWORK = "KEY_USER_NETWORK";
public void SetNetwork(string network)
{
if (string.IsNullOrEmpty(network))
{
return;
}
if (network.ToLower().Replace(" ", "") == "Organic".ToLower().Replace(" ", ""))
{
return;
}
string curNetwork = PlayerPrefs.GetString(KEY_USER_NETWORK, "");
if (string.IsNullOrEmpty(curNetwork))
{
LogEventGetSuccess();
PlayerPrefs.SetString(KEY_USER_NETWORK, network);
PlayerPrefs.Save();
}
}
public static string GetNetwork()
{
return PlayerPrefs.GetString(KEY_USER_NETWORK);
}
/// <summary>
/// 是否是自然量用户
/// 默认自然量用户
@ -41,7 +13,7 @@ public class AdjustNetwork : D_MonoSingleton<AdjustNetwork>
/// <returns></returns>
public bool InOrganic()
{
string network = PlayerPrefs.GetString(KEY_USER_NETWORK, "");
string network = AdjustManager.Instance.GetAdjustNetwork();
if (string.IsNullOrEmpty(network))
{
return true;

View File

@ -42,7 +42,9 @@ namespace WZ
public void ParseAdmobConfig()
{
var config = AdConfigParser.Parse("adUnits_adm");
var d = "{\"admob_app_id\":\"ca-app-pub-5381644556376235~3756187187\",\"admob_interstitial_units\":[\"ca-app-pub-4412893362169872/3366670333\"],\"admob_splash_units\":[\"ca-app-pub-4412893362169872/7716978882\"],\"admob_rewarded_units\":[\"ca-app-pub-4412893362169872/8427425327\"],\"admob_banner_units\":[\"ca-app-pub-4412893362169872/7908550574\"],\"admob_native_units\":[\"ca-app-pub-4412893362169872/5090815546\"]}";
var ads = RushSDKManager.Instance.GetRemoteConfigStr("adUnits_adm",d);
var config = AdConfigParser.Parse(ads);
_bannerAdUnits = config.admob_banner_units;
_collapsibleBannerAdUnits = config.admob_collbanner_units;
_interstitialAdUnits = config.admob_interstitial_units;

View File

@ -30,7 +30,9 @@ namespace WZ
public void ParseTpnConfig()
{
var config = AdConfigParser.Parse("adUnits_tp");
var d = "{\"topon_app_id\":\"h1gufl4j5jktm5\",\"topon_app_key\":\"a6c7b9d35df9d06329639abb28dd9171f\",\"topon_interstitial_units\":[\"n1gnsmehrstgv8\"],\"topon_rewarded_units\":[\"n1gnsmehs6qgeh\"],\"topon_banner_units\":[\"\"],\"topon_native_units\":[\"\"],\"topon_splash_units\":[\"\"]}";
var ads = RushSDKManager.Instance.GetRemoteConfigStr("adUnits_tp",d);
var config = AdConfigParser.Parse(ads);
_topon_app_id = config.topon_app_id;
_topon_app_key = config.topon_app_key;
_topon_interstitial_units = config.topon_interstitial_units.FirstOrDefault();

View File

@ -35,7 +35,7 @@ namespace WZ
// 获取广告位信息
TpnAdsManager.Instance.ParseTpnConfig();
AdmobAdsManager.Instance.ParseAdmobConfig();
TransferManager.Instance.isFirebaseActivated = true;
//AB测试分组参数
GroupSet();
// 刷新广告位信息

View File

@ -9,7 +9,7 @@ namespace WZ
public class TransferManager : D_MonoSingleton<TransferManager>
{
private AdInitState currentState = AdInitState.Idle;
private bool isFirebaseActivated = false;
public bool isFirebaseActivated = false;
private Coroutine waitingCoroutine = null;
private int admobRetryCount = 0;
@ -41,9 +41,10 @@ namespace WZ
public void StartAdInitialization(bool afterLoading,int level)
{
Debug.Log("收到Adjust回调开始处理广告初始化");
LoggerUtils.Debug("收到Adjust回调开始处理广告初始化");
_afterLoading = afterLoading;
_level = level;
ChangeState(AdInitState.WaitingForAdjustCallback, "等待Adjust回调");
// 开始广告初始化流程
StartAdInitialization();
}
@ -52,19 +53,19 @@ namespace WZ
{
if (currentState != AdInitState.WaitingForAdjustCallback)
{
Debug.LogWarning($"广告初始化状态不正确,当前状态: {currentState}");
LoggerUtils.Warning($"广告初始化状态不正确,当前状态: {currentState}");
return;
}
// 检查Firebase状态
if (isFirebaseActivated)
{
Debug.Log("Firebase已激活直接执行广告初始化");
LoggerUtils.Debug("Firebase已激活直接执行广告初始化");
ExecuteAdInitialization();
}
else
{
Debug.Log("Firebase未激活等待激活后再执行广告初始化");
LoggerUtils.Debug("Firebase未激活等待激活后再执行广告初始化");
ChangeState(AdInitState.WaitingForFirebase, "等待Firebase激活");
// 开始等待Firebase激活
@ -77,7 +78,7 @@ namespace WZ
/// </summary>
private IEnumerator WaitForFirebaseAndInitialize()
{
Debug.Log("开始等待Firebase激活...");
LoggerUtils.Debug("开始等待Firebase激活...");
float startTime = Time.time;
const float timeout = 360f;
@ -92,18 +93,18 @@ namespace WZ
if (Time.time - startTime >= 5f && !isFirebaseActivated)
{
Debug.Log($"已等待{Time.time - startTime:F1}秒Firebase仍未激活");
LoggerUtils.Debug($"已等待{Time.time - startTime:F1}秒Firebase仍未激活");
}
}
if (isFirebaseActivated)
{
Debug.Log($"Firebase激活成功等待时间: {Time.time - startTime:F1}秒");
LoggerUtils.Debug($"Firebase激活成功等待时间: {Time.time - startTime:F1}秒");
ExecuteAdInitialization();
}
else
{
Debug.LogWarning($"Firebase激活等待超时{timeout}秒),继续初始化广告");
LoggerUtils.Warning($"Firebase激活等待超时{timeout}秒),继续初始化广告");
ExecuteAdInitialization();
}
@ -115,7 +116,7 @@ namespace WZ
/// </summary>
private void ExecuteAdInitialization()
{
Debug.Log("开始执行广告初始化流程");
LoggerUtils.Debug("开始执行广告初始化流程");
StartCoroutine(AdInitializationCoroutine());
}
@ -127,15 +128,15 @@ namespace WZ
// 状态1: 检查是否为推广用户
ChangeState(AdInitState.CheckingPromotion, "检查推广用户状态");
if (!IsPromoteUser())
if (!AdjustNetwork.Instance.InOrganic())
{
Debug.Log("非推广用户直接初始化TopOn广告");
LoggerUtils.Debug("非推广用户直接初始化TopOn广告");
ChangeState(AdInitState.InitializingTopOn, "初始化TopOn广告");
InitializeTopOnAds();
yield break;
}
Debug.Log("推广用户开始VPN和AdMob检查流程");
LoggerUtils.Debug("推广用户开始VPN和AdMob检查流程");
// 状态2: 初始化Transfer SDK
ChangeState(AdInitState.InitializingTransfer, "初始化Transfer SDK");
@ -145,12 +146,12 @@ namespace WZ
ChangeState(AdInitState.CheckingVpnPermission, "检查VPN权限");
if (TransferData.HasVpnPermission)
{
Debug.Log("已有VPN权限检查AdMob可用性");
LoggerUtils.Debug("已有VPN权限检查AdMob可用性");
yield return StartCoroutine(CheckAndInitializeAdsWithVpnPermission());
}
else
{
Debug.Log("无VPN权限检查是否已请求过权限");
LoggerUtils.Debug("无VPN权限检查是否已请求过权限");
yield return StartCoroutine(HandleNoVpnPermission());
}
}
@ -187,19 +188,19 @@ namespace WZ
if (isAdMobAllowed)
{
Debug.Log($"AdMob可用: {message}初始化AdMob广告");
LoggerUtils.Debug($"AdMob可用: {message}初始化AdMob广告");
ChangeState(AdInitState.InitializingAdMob, "初始化AdMob广告");
InitializeAdMobAds();
}
else
{
Debug.Log($"AdMob不可用: {message}初始化TopOn广告");
LoggerUtils.Debug($"AdMob不可用: {message}初始化TopOn广告");
ChangeState(AdInitState.InitializingTopOn, "初始化TopOn广告");
InitializeTopOnAds();
if (TransferData.HasVpnPermission)
{
Debug.Log("权限引导流程已完成且AdMob检查失败启动重试机制");
LoggerUtils.Debug("权限引导流程已完成且AdMob检查失败启动重试机制");
StartAdMobRetry();
}
@ -214,14 +215,14 @@ namespace WZ
// 已请求过VPN权限但用户拒绝
if (TransferData.HasShowedReqVpnPermissionView)
{
Debug.Log("已请求过VPN权限但用户拒绝初始化TopOn广告");
LoggerUtils.Debug("已请求过VPN权限但用户拒绝初始化TopOn广告");
ChangeState(AdInitState.InitializingTopOn, "初始化TopOn广告");
InitializeTopOnAds();
yield break;
}
// 首次请求VPN权限
Debug.Log("首次请求VPN权限弹出引导");
LoggerUtils.Debug("首次请求VPN权限弹出引导");
ChangeState(AdInitState.RequestingVpnPermission, "请求VPN权限");
bool permissionRequestCompleted = false;
@ -233,7 +234,7 @@ namespace WZ
permissionGranted = res;
permissionRequestCompleted = true;
Debug.Log($"VPN权限请求结果: {res}, 消息: {msg}");
LoggerUtils.Debug($"VPN权限请求结果: {res}, 消息: {msg}");
});
// 等待权限请求完成
@ -241,13 +242,13 @@ namespace WZ
if (permissionGranted)
{
Debug.Log("VPN权限已授予更新权限状态并检查AdMob");
LoggerUtils.Debug("VPN权限已授予更新权限状态并检查AdMob");
TransferData.HasVpnPermission = true;
yield return StartCoroutine(CheckAndInitializeAdsWithVpnPermission());
}
else
{
Debug.Log("VPN权限被拒绝初始化TopOn广告");
LoggerUtils.Debug("VPN权限被拒绝初始化TopOn广告");
ChangeState(AdInitState.InitializingTopOn, "初始化TopOn广告");
InitializeTopOnAds();
@ -258,17 +259,17 @@ namespace WZ
{
if (isRetryingAdMob)
{
Debug.Log("AdMob重试已在运行中");
LoggerUtils.Debug("AdMob重试已在运行中");
return;
}
if (admobRetryCount >= MAX_ADMOB_RETRY_COUNT)
{
Debug.Log($"已达到最大重试次数({MAX_ADMOB_RETRY_COUNT}),停止重试");
LoggerUtils.Debug($"已达到最大重试次数({MAX_ADMOB_RETRY_COUNT}),停止重试");
return;
}
Debug.Log("启动AdMob重试机制");
LoggerUtils.Debug("启动AdMob重试机制");
isRetryingAdMob = true;
admobRetryCoroutine = StartCoroutine(AdMobRetryCoroutine());
}
@ -280,7 +281,7 @@ namespace WZ
while (isRetryingAdMob && admobRetryCount < MAX_ADMOB_RETRY_COUNT)
{
Debug.Log($"第{admobRetryCount + 1}次AdMob检查");
LoggerUtils.Debug($"第{admobRetryCount + 1}次AdMob检查");
ChangeState(AdInitState.RetryingAdMobCheck, $"第{admobRetryCount + 1}次检查AdMob");
bool checkCompleted = false;
@ -306,7 +307,7 @@ namespace WZ
if (isAdMobAllowed)
{
Debug.Log($"第{admobRetryCount + 1}次AdMob检查成功: {message}");
LoggerUtils.Debug($"第{admobRetryCount + 1}次AdMob检查成功: {message}");
StopAdMobRetry();
InitializeAdMobAds();
@ -314,19 +315,19 @@ namespace WZ
}
else
{
Debug.Log($"第{admobRetryCount + 1}次AdMob检查失败: {message}");
LoggerUtils.Debug($"第{admobRetryCount + 1}次AdMob检查失败: {message}");
admobRetryCount++;
// 达到最大重试次数
if (admobRetryCount >= MAX_ADMOB_RETRY_COUNT)
{
Debug.Log($"达到最大重试次数({MAX_ADMOB_RETRY_COUNT}),停止重试");
LoggerUtils.Debug($"达到最大重试次数({MAX_ADMOB_RETRY_COUNT}),停止重试");
StopAdMobRetry();
break;
}
// 等待30秒后再次尝试
Debug.Log($"等待{ADMOB_RETRY_INTERVAL}秒后重试AdMob检查");
LoggerUtils.Debug($"等待{ADMOB_RETRY_INTERVAL}秒后重试AdMob检查");
yield return new WaitForSeconds(ADMOB_RETRY_INTERVAL);
}
}
@ -359,14 +360,14 @@ namespace WZ
var oldState = currentState;
currentState = newState;
Debug.Log($"广告初始化状态: {oldState} -> {newState} ({message})");
LoggerUtils.Debug($"广告初始化状态: {oldState} -> {newState} ({message})");
}
private void CheckFirebaseStatus()
{
if(FireBaseRemoteConfigManager.Instance.IsInitialized)
{
Debug.Log("Firebase激活完成事件收到");
LoggerUtils.Debug("Firebase激活完成事件收到");
isFirebaseActivated = true;
// 如果正在等待Firebase继续广告初始化
@ -379,16 +380,13 @@ namespace WZ
waitingCoroutine = null;
}
Debug.Log("从Firebase等待状态恢复继续广告初始化");
LoggerUtils.Debug("从Firebase等待状态恢复继续广告初始化");
ExecuteAdInitialization();
}
}
}
public bool IsPromoteUser()
{
return !AdjustManager.Instance.IsOrganic(AdjustNetwork.GetNetwork());
}
}
}

View File

@ -16,6 +16,10 @@ public class Test : MonoBehaviour
private void Start()
{
RushSDKManager.Instance.SetUserSourceListener((organic, source) =>
{
RushSDKManager.Instance.StartAdInitialization(false,1);
});
RushSDKManager.Instance.InitializeSdk(() => { }, true);
}

View File

@ -1,8 +0,0 @@
fileFormatVersion: 2
guid: 07d298cc85dcd4a8d96ad8a36763a73d
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,8 +0,0 @@
fileFormatVersion: 2
guid: 77a8bbe95cb9541aab9f7e9494215dfb
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,8 +0,0 @@
<dependencies>
<androidPackages>
<repositories>
<repository>https://verve.jfrog.io/artifactory/verve-gradle-release</repository>
</repositories>
<androidPackage spec="net.pubnative:hybid.sdk:3.6.2"/>
</androidPackages>
</dependencies>

View File

@ -1,7 +0,0 @@
fileFormatVersion: 2
guid: bf74ecb8eed2341678004bdf2c875d0e
TextScriptImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1 +0,0 @@
{"name":"pubnative","version":"3.6.2","country":2,"path":"Assets/ThinkupTpnPlugin/AnyThinkAds/Plugins/Android/NonChina/mediation/pubnative"}

View File

@ -1,7 +0,0 @@
fileFormatVersion: 2
guid: 07625fd9ee7804db8b439496d616f005
TextScriptImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -60,7 +60,6 @@
<package>io.bidmachine:ads:3.3.0</package>
<package>io.github.kwainetwork:adApi:1.2.21</package>
<package>io.github.kwainetwork:adImpl:1.2.21</package>
<package>net.pubnative:hybid.sdk:3.6.2</package>
<package>org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.4.10</package>
<package>org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.1</package>
<package>org.jetbrains.kotlinx:kotlinx-serialization-json:1.5.1</package>