update: 添加 GuruServices 配置参数, 预制 TradePlus 参数

deeplink
胡宇飞 2024-03-01 13:13:26 +08:00
parent 8e88cb88ec
commit 7044f87d3b
6 changed files with 168 additions and 49 deletions

View File

@ -80,6 +80,7 @@ namespace Guru.Editor
cfg.ad_settings = new GuruAdSettings();
cfg.adjust_settings = new GuruAdjustSettings();
cfg.fb_settings = new GuruFbSettings();
cfg.parameters = new GuruParameters();
return cfg;
}

View File

@ -137,14 +137,6 @@ namespace Guru.Editor
{
settings.app_settings.ios_store = value;
}
else if (GetValue(line, "level_end_success_num", out value))
{
settings.app_settings.level_end_success_num = GetInt(value);
}
else if (GetValue(line, "enable_keywords", out value))
{
settings.app_settings.enable_keywords = GetBool(value);
}
else if (GetValue(line, "enable_firebase", out value))
{
settings.app_settings.enable_firebase = GetBool(value);
@ -161,17 +153,9 @@ namespace Guru.Editor
{
settings.app_settings.enable_iap = GetBool(value);
}
else if (GetValue(line, "tch_020", out value))
{
settings.app_settings.tch_020 = GetDouble(value);
}
else if (GetValue(line, "using_uuid", out value))
{
settings.app_settings.using_uuid = GetBool(value);
}
}
/// <summary>
/// AdjustSettings 填充
/// </summary>
@ -183,7 +167,7 @@ namespace Guru.Editor
string[] list = null;
string line = lines[index];
bool pass = false;
List<string> events = new List<string>(20);
List<string> events = new List<string>(40);
while (!lines[index].StartsWith(K_FB_SETTINGS))
{
@ -255,7 +239,8 @@ namespace Guru.Editor
string[] pubmatic_ids_ios = new string[3];
string[] moloco_ids_android = new string[3];
string[] moloco_ids_ios = new string[3];
string[] tradplus_ids_android = new string[3];
string[] tradplus_ids_ios = new string[3];
//------- 开始记录广告配置;
@ -350,6 +335,24 @@ namespace Guru.Editor
moloco_ids_android[2] = arr[0];
moloco_ids_ios[2] = arr[1];
}
else if (line.StartsWith("tradplus_bads"))
{
arr = GetStringArray(line, 1, 2);
tradplus_ids_android[0] = arr[0];
tradplus_ids_ios[0] = arr[1];
}
else if (line.StartsWith("tradplus_iads"))
{
arr = GetStringArray(line, 1, 2);
tradplus_ids_android[1] = arr[0];
tradplus_ids_ios[1] = arr[1];
}
else if (line.StartsWith("tradplus_rads"))
{
arr = GetStringArray(line, 1, 2);
tradplus_ids_android[2] = arr[0];
tradplus_ids_ios[2] = arr[1];
}
index++;
}
@ -362,6 +365,8 @@ namespace Guru.Editor
settings.ad_settings.pubmatic_ids_ios = pubmatic_ids_ios;
settings.ad_settings.moloco_ids_android = moloco_ids_android;
settings.ad_settings.moloco_ids_ios = moloco_ids_ios;
settings.ad_settings.tradplus_ids_android = tradplus_ids_android;
settings.ad_settings.tradplus_ids_ios = tradplus_ids_ios;
index--;
}

View File

@ -240,6 +240,18 @@ namespace Guru.Editor
AddResultLine($"{MARK_INDENT}{mk_warn} Moloco iOS Test IDs is missing!", CheckStatus.Warning);
_serviceNormalFail++;
}
if (!IsArrayNotEmpty(_servicesConfig.ad_settings.tradplus_ids_android))
{
passed = false;
AddResultLine($"{MARK_INDENT}{mk_warn} Tradplus Android Test IDs is missing!", CheckStatus.Warning);
_serviceNormalFail++;
}
if (!IsArrayNotEmpty(_servicesConfig.ad_settings.tradplus_ids_ios))
{
passed = false;
AddResultLine($"{MARK_INDENT}{mk_warn} Tradplus iOS Test IDs is missing!", CheckStatus.Warning);
_serviceNormalFail++;
}
}
if (passed) AddResultLine(check_passed);
@ -532,10 +544,10 @@ namespace Guru.Editor
p = n.serializedObject.FindProperty("IPMSetting.bundleId");
p.stringValue = _servicesConfig.app_settings.bundle_id;
// tokenValidTime
if (_servicesConfig.app_settings.token_vaild_time > 0)
if (_servicesConfig.TokenValidTime() > 0)
{
p = n.serializedObject.FindProperty("IPMSetting.tokenValidTime");
p.intValue = _servicesConfig.app_settings.token_vaild_time;
p.intValue = _servicesConfig.TokenValidTime();
}
if (_servicesConfig.fb_settings != null)
{
@ -648,6 +660,33 @@ namespace Guru.Editor
}
}
//---------- TRADPLUS -----------------------
n = so.FindProperty("TradplusSetting");
if (null != n)
{
arr = _servicesConfig.ad_settings.tradplus_ids_android;
if (IsArrayHasLength(arr, 3))
{
p = n.serializedObject.FindProperty("TradplusSetting.Android.bannerUnitID");
p.stringValue = arr[0];
p = n.serializedObject.FindProperty("TradplusSetting.Android.interUnitID");
p.stringValue = arr[1];
p = n.serializedObject.FindProperty("TradplusSetting.Android.rewardUnitID");
p.stringValue = arr[2];
}
arr = _servicesConfig.ad_settings.tradplus_ids_ios;
if (IsArrayHasLength(arr, 3))
{
p = n.serializedObject.FindProperty("TradplusSetting.iOS.bannerUnitID");
p.stringValue = arr[0];
p = n.serializedObject.FindProperty("TradplusSetting.iOS.interUnitID");
p.stringValue = arr[1];
p = n.serializedObject.FindProperty("TradplusSetting.iOS.rewardUnitID");
p.stringValue = arr[2];
}
}
//----------- ADSettings -------------------
n = so.FindProperty("ADSetting");
if (null != n)
@ -695,13 +734,13 @@ namespace Guru.Editor
if (null != n)
{
p = n.serializedObject.FindProperty("AnalyticsSetting.levelEndSuccessNum");
p.intValue = _servicesConfig.app_settings.level_end_success_num;
p.intValue = _servicesConfig.LevelEndSuccessNum();
p = n.serializedObject.FindProperty("AnalyticsSetting.enalbeFirebaseAnalytics");
p.boolValue = _servicesConfig.app_settings.enable_firebase;
p.boolValue = _servicesConfig.IsFirebaseEnabled();
p = n.serializedObject.FindProperty("AnalyticsSetting.enalbeFacebookAnalytics");
p.boolValue = _servicesConfig.app_settings.enable_facebook;
p.boolValue = _servicesConfig.IsFacebookEnabled();
p = n.serializedObject.FindProperty("AnalyticsSetting.enalbeAdjustAnalytics");
p.boolValue = _servicesConfig.app_settings.enable_adjust;
p.boolValue = _servicesConfig.IsAdjustEnabled();
p = n.serializedObject.FindProperty("AnalyticsSetting.adjustEventList");
if (null != p && IsArrayNotEmpty(_servicesConfig.adjust_settings.events))
{

View File

@ -9,6 +9,7 @@ namespace Guru
{
public long version = 0;
public GuruAppSettings app_settings;
public GuruParameters parameters;
public GuruAdjustSettings adjust_settings;
public GuruFbSettings fb_settings;
public GuruAdSettings ad_settings;
@ -33,11 +34,35 @@ namespace Guru
public bool IsMolocoIOSEnabled() => ad_settings != null &&
ad_settings.moloco_ids_ios != null &&
ad_settings.moloco_ids_ios.Length > 0;
public bool IsTradplusAndroidEnabled() => ad_settings != null &&
ad_settings.tradplus_ids_android != null &&
ad_settings.tradplus_ids_android.Length > 0;
public bool IsTradplusIOSEnabled() => ad_settings != null &&
ad_settings.tradplus_ids_ios != null &&
ad_settings.tradplus_ids_ios.Length > 0;
public bool IsIAPEnabled() => app_settings != null && app_settings.enable_iap
&& products != null && products.Length > 0;
public bool IsKeywordsEnabled() => app_settings != null && app_settings.enable_keywords;
public bool IsFirebaseEnabled() => app_settings?.enable_firebase ?? true;
public bool IsFacebookEnabled() => app_settings?.enable_facebook ?? true;
public bool IsAdjustEnabled() => app_settings?.enable_adjust ?? true;
//-------------------------------- 配置检测 -------------------------------
//-------------------------------- Parameters --------------------------------
public double Tch02Value() => parameters?.tch_020 ?? 0;
public bool IsAppReview() => parameters?.apple_review ?? false;
public bool DMACountryCheck() => parameters?.dma_country_check ?? false;
public string DMAMapRule() => parameters?.dma_map_rule ?? "";
public bool UseUUID() => parameters?.using_uuid ?? false;
public bool KeywordsEnabled() => parameters?.enable_keywords ?? false;
public int TokenValidTime() => parameters?.token_vaild_time ?? 604800;
public int LevelEndSuccessNum() => parameters?.level_end_success_num ?? 50;
//-------------------------------- Parameters --------------------------------
}
[Serializable]
@ -51,17 +76,25 @@ namespace Guru
public string terms_url;
public string android_store;
public string ios_store;
public int token_vaild_time = 604800;
public int level_end_success_num = 50;
public bool enable_keywords = true;
public bool enable_firebase = true;
public bool enable_facebook = true;
public bool enable_adjust = true;
public bool enable_iap = false;
public double tch_020 = 0;
public bool using_uuid = false;
}
[Serializable]
public class GuruParameters
{
public int token_vaild_time = 604800;
public int level_end_success_num = 50;
public bool enable_keywords = false;
public double tch_020 = 0;
public bool using_uuid = true;
public string dma_map_rule = "";
public bool dma_country_check = false;
public bool apple_review = false; // 苹果审核标志位
}
[Serializable]
public class GuruAdjustSettings
{
@ -92,6 +125,8 @@ namespace Guru
public string[] pubmatic_ids_ios;
public string[] moloco_ids_android;
public string[] moloco_ids_ios;
public string[] tradplus_ids_android;
public string[] tradplus_ids_ios;
}
}

View File

@ -53,16 +53,26 @@ namespace Guru
#region Guru Consent
private bool _hasConsentCalled = false;
/// <summary>
/// 启动Consent流程
/// 因为之后规划广告流程会放在 Consent 初始化之后, 因此请求广告的时候会需要先请求 Consent
/// </summary>
private void StartConsentFlow()
{
LogI($"StartConsentFlow");
GuruConsent.StartConsent(OnConsentOver);
if (_hasConsentCalled) return;
_hasConsentCalled = true;
bool enableCountryCheck = _appServicesConfig.DMACountryCheck();
string dmaMapRule = _appServicesConfig.DMAMapRule();
Debug.Log($"{Tag} --- StartConsentFlow ---");
GuruConsent.StartConsent(OnConsentOver, dmaMapRule:dmaMapRule, enableCountryCheck:enableCountryCheck);
}
private void OnConsentOver(int code)
{
#if UNITY_IOS
@ -73,10 +83,10 @@ namespace Guru
{
case GuruConsent.StatusCode.OBTAINED:
case GuruConsent.StatusCode.NOT_AVAILABLE:
// 已获取授权, 或者地区不可用
#if UNITY_IOS
CheckAttStatus();
#endif
// 已获取授权, 或者地区不可用, ATT 尚未启动
// #if UNITY_IOS
// CheckAttStatus(); // 删除主动触发的逻辑
// #endif
break;
}

View File

@ -144,12 +144,6 @@ namespace Guru
private void OnFirebaseReady()
{
IsInitialSuccess = true;
if (!InitConfig.UseCustomConsent)
{
// LogI($"--- #3 Start Consent Flow ---");
StartConsentFlow();
}
if(!string.IsNullOrEmpty(IPMConfig.IPM_UID)) SetUID(IPMConfig.IPM_UID);
@ -198,12 +192,13 @@ namespace Guru
{
bool useKeywords = false;
bool useIAP = true;
bool appleReview = false;
var services = GetRemoteServicesConfig();
if (services != null)
{
_appServicesConfig = services;
useKeywords = _appServicesConfig.IsKeywordsEnabled();
useKeywords = _appServicesConfig.KeywordsEnabled();
useIAP = _appServicesConfig.IsIAPEnabled();
@ -219,18 +214,23 @@ namespace Guru
if (null != _appServicesConfig.app_settings)
{
if (_appServicesConfig.app_settings.tch_020 > 0)
if (_appServicesConfig.Tch02Value() > 0)
{
Analytics.EnableTch02Event = true;
Analytics.SetTch02TargetValue(_appServicesConfig.app_settings.tch_020);
Analytics.SetTch02TargetValue(_appServicesConfig.Tch02Value());
}
// 设置获取设备 UUID 的方法
if (_appServicesConfig.app_settings.using_uuid)
if (_appServicesConfig.UseUUID())
{
IPMConfig.UsingUUID = true; // 开始使用 UUID 作为 DeviceID 标识
}
#if UNITY_IOS
// 苹果审核标志位
appleReview = _appServicesConfig.IsAppReview();
#endif
if (null != GuruSettings)
{
// 更新和升级 GuruSettings 对应的值
@ -255,6 +255,19 @@ namespace Guru
{
KeywordsManager.Install(Model.IsIAPUser, Model.SuccessLevelCount); // 启动Keyword管理器
}
#if UNITY_IOS
if (appleReview)
{
StartAppleReviewFlow(); // 直接显示 ATT 弹窗, 跳过 Consent 流程
return;
}
#endif
if (!InitConfig.UseCustomConsent && !appleReview)
{
// LogI($"--- #3 Start Consent Flow ---");
StartConsentFlow();
}
}
private GuruServicesConfig GetRemoteServicesConfig()
@ -266,8 +279,24 @@ namespace Guru
}
return null;
}
#endregion
#region Apple 审核流程逻辑
#if UNITY_IOS
private void StartAppleReviewFlow()
{
CheckAttStatus();
}
#endif
#endregion
#region 数据
private void OnBLevelChanged(int blevel)