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.ad_settings = new GuruAdSettings();
cfg.adjust_settings = new GuruAdjustSettings(); cfg.adjust_settings = new GuruAdjustSettings();
cfg.fb_settings = new GuruFbSettings(); cfg.fb_settings = new GuruFbSettings();
cfg.parameters = new GuruParameters();
return cfg; return cfg;
} }

View File

@ -137,14 +137,6 @@ namespace Guru.Editor
{ {
settings.app_settings.ios_store = value; 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)) else if (GetValue(line, "enable_firebase", out value))
{ {
settings.app_settings.enable_firebase = GetBool(value); settings.app_settings.enable_firebase = GetBool(value);
@ -161,17 +153,9 @@ namespace Guru.Editor
{ {
settings.app_settings.enable_iap = GetBool(value); 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> /// <summary>
/// AdjustSettings 填充 /// AdjustSettings 填充
/// </summary> /// </summary>
@ -183,7 +167,7 @@ namespace Guru.Editor
string[] list = null; string[] list = null;
string line = lines[index]; string line = lines[index];
bool pass = false; bool pass = false;
List<string> events = new List<string>(20); List<string> events = new List<string>(40);
while (!lines[index].StartsWith(K_FB_SETTINGS)) while (!lines[index].StartsWith(K_FB_SETTINGS))
{ {
@ -255,7 +239,8 @@ namespace Guru.Editor
string[] pubmatic_ids_ios = new string[3]; string[] pubmatic_ids_ios = new string[3];
string[] moloco_ids_android = new string[3]; string[] moloco_ids_android = new string[3];
string[] moloco_ids_ios = 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_android[2] = arr[0];
moloco_ids_ios[2] = arr[1]; 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++; index++;
} }
@ -362,6 +365,8 @@ namespace Guru.Editor
settings.ad_settings.pubmatic_ids_ios = pubmatic_ids_ios; settings.ad_settings.pubmatic_ids_ios = pubmatic_ids_ios;
settings.ad_settings.moloco_ids_android = moloco_ids_android; settings.ad_settings.moloco_ids_android = moloco_ids_android;
settings.ad_settings.moloco_ids_ios = moloco_ids_ios; 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--; index--;
} }

View File

@ -240,6 +240,18 @@ namespace Guru.Editor
AddResultLine($"{MARK_INDENT}{mk_warn} Moloco iOS Test IDs is missing!", CheckStatus.Warning); AddResultLine($"{MARK_INDENT}{mk_warn} Moloco iOS Test IDs is missing!", CheckStatus.Warning);
_serviceNormalFail++; _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); if (passed) AddResultLine(check_passed);
@ -532,10 +544,10 @@ namespace Guru.Editor
p = n.serializedObject.FindProperty("IPMSetting.bundleId"); p = n.serializedObject.FindProperty("IPMSetting.bundleId");
p.stringValue = _servicesConfig.app_settings.bundle_id; p.stringValue = _servicesConfig.app_settings.bundle_id;
// tokenValidTime // tokenValidTime
if (_servicesConfig.app_settings.token_vaild_time > 0) if (_servicesConfig.TokenValidTime() > 0)
{ {
p = n.serializedObject.FindProperty("IPMSetting.tokenValidTime"); p = n.serializedObject.FindProperty("IPMSetting.tokenValidTime");
p.intValue = _servicesConfig.app_settings.token_vaild_time; p.intValue = _servicesConfig.TokenValidTime();
} }
if (_servicesConfig.fb_settings != null) 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 ------------------- //----------- ADSettings -------------------
n = so.FindProperty("ADSetting"); n = so.FindProperty("ADSetting");
if (null != n) if (null != n)
@ -695,13 +734,13 @@ namespace Guru.Editor
if (null != n) if (null != n)
{ {
p = n.serializedObject.FindProperty("AnalyticsSetting.levelEndSuccessNum"); 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 = n.serializedObject.FindProperty("AnalyticsSetting.enalbeFirebaseAnalytics");
p.boolValue = _servicesConfig.app_settings.enable_firebase; p.boolValue = _servicesConfig.IsFirebaseEnabled();
p = n.serializedObject.FindProperty("AnalyticsSetting.enalbeFacebookAnalytics"); p = n.serializedObject.FindProperty("AnalyticsSetting.enalbeFacebookAnalytics");
p.boolValue = _servicesConfig.app_settings.enable_facebook; p.boolValue = _servicesConfig.IsFacebookEnabled();
p = n.serializedObject.FindProperty("AnalyticsSetting.enalbeAdjustAnalytics"); p = n.serializedObject.FindProperty("AnalyticsSetting.enalbeAdjustAnalytics");
p.boolValue = _servicesConfig.app_settings.enable_adjust; p.boolValue = _servicesConfig.IsAdjustEnabled();
p = n.serializedObject.FindProperty("AnalyticsSetting.adjustEventList"); p = n.serializedObject.FindProperty("AnalyticsSetting.adjustEventList");
if (null != p && IsArrayNotEmpty(_servicesConfig.adjust_settings.events)) if (null != p && IsArrayNotEmpty(_servicesConfig.adjust_settings.events))
{ {

View File

@ -9,6 +9,7 @@ namespace Guru
{ {
public long version = 0; public long version = 0;
public GuruAppSettings app_settings; public GuruAppSettings app_settings;
public GuruParameters parameters;
public GuruAdjustSettings adjust_settings; public GuruAdjustSettings adjust_settings;
public GuruFbSettings fb_settings; public GuruFbSettings fb_settings;
public GuruAdSettings ad_settings; public GuruAdSettings ad_settings;
@ -33,11 +34,35 @@ namespace Guru
public bool IsMolocoIOSEnabled() => ad_settings != null && public bool IsMolocoIOSEnabled() => ad_settings != null &&
ad_settings.moloco_ids_ios != null && ad_settings.moloco_ids_ios != null &&
ad_settings.moloco_ids_ios.Length > 0; 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 public bool IsIAPEnabled() => app_settings != null && app_settings.enable_iap
&& products != null && products.Length > 0; && 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] [Serializable]
@ -51,17 +76,25 @@ namespace Guru
public string terms_url; public string terms_url;
public string android_store; public string android_store;
public string ios_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_firebase = true;
public bool enable_facebook = true; public bool enable_facebook = true;
public bool enable_adjust = true; public bool enable_adjust = true;
public bool enable_iap = false; 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] [Serializable]
public class GuruAdjustSettings public class GuruAdjustSettings
{ {
@ -92,6 +125,8 @@ namespace Guru
public string[] pubmatic_ids_ios; public string[] pubmatic_ids_ios;
public string[] moloco_ids_android; public string[] moloco_ids_android;
public string[] moloco_ids_ios; 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 #region Guru Consent
private bool _hasConsentCalled = false;
/// <summary> /// <summary>
/// 启动Consent流程 /// 启动Consent流程
/// 因为之后规划广告流程会放在 Consent 初始化之后, 因此请求广告的时候会需要先请求 Consent
/// </summary> /// </summary>
private void StartConsentFlow() private void StartConsentFlow()
{ {
LogI($"StartConsentFlow"); if (_hasConsentCalled) return;
GuruConsent.StartConsent(OnConsentOver); _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) private void OnConsentOver(int code)
{ {
#if UNITY_IOS #if UNITY_IOS
@ -73,10 +83,10 @@ namespace Guru
{ {
case GuruConsent.StatusCode.OBTAINED: case GuruConsent.StatusCode.OBTAINED:
case GuruConsent.StatusCode.NOT_AVAILABLE: case GuruConsent.StatusCode.NOT_AVAILABLE:
// 已获取授权, 或者地区不可用 // 已获取授权, 或者地区不可用, ATT 尚未启动
#if UNITY_IOS // #if UNITY_IOS
CheckAttStatus(); // CheckAttStatus(); // 删除主动触发的逻辑
#endif // #endif
break; break;
} }

View File

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