diff --git a/Runtime/Code/SDK/GuruSDK.Ads.cs b/Runtime/Code/SDK/GuruSDK.Ads.cs index db9f637..d7a6173 100644 --- a/Runtime/Code/SDK/GuruSDK.Ads.cs +++ b/Runtime/Code/SDK/GuruSDK.Ads.cs @@ -65,33 +65,43 @@ namespace Guru if (_hasConsentCalled) return; _hasConsentCalled = true; + _attType = InitConfig.UseCustomConsent ? ATTManager.GUIDE_TYPE_CUSTOM : ATTManager.GUIDE_TYPE_ADMOB; // 点位属性确定 + bool enableCountryCheck = _appServicesConfig.DMACountryCheck(); string dmaMapRule = _appServicesConfig.DMAMapRule(); +#if UNITY_IOS + InitAttStatus(); // Consent 启动前记录 ATT 初始值 +#endif Debug.Log($"{Tag} --- StartConsentFlow ---"); - GuruConsent.StartConsent(OnConsentOver, dmaMapRule:dmaMapRule, enableCountryCheck:enableCountryCheck); + GuruConsent.StartConsent(OnGuruConsentOver, dmaMapRule:dmaMapRule, enableCountryCheck:enableCountryCheck); } - - private void OnConsentOver(int code) + /// + /// Guru Consent flow is Over + /// + /// + private void OnGuruConsentOver(int code) { -#if UNITY_IOS - InitAttStatus(); -#endif + // 无论状态如何, 都在回调内启动广告初始化 + StartAdService(); + + // 调用回调 Callbacks.ConsentFlow._onConsentResult?.Invoke(code); + +#if UNITY_IOS + CheckAttStatus(); // [iOS] Consent 启动后检查 ATT 初始值 +#endif + + // 内部处理后继逻辑 switch(code) { case GuruConsent.StatusCode.OBTAINED: case GuruConsent.StatusCode.NOT_AVAILABLE: // 已获取授权, 或者地区不可用, ATT 尚未启动 -// #if UNITY_IOS -// CheckAttStatus(); // 删除主动触发的逻辑 -// #endif + // TODO: 添加后继处理逻辑 break; } - - // 无论状态如何, 都在回调内启动广告初始化 - StartAdService(); } #endregion @@ -102,7 +112,7 @@ namespace Guru private static string _initialAttStatus; private static String _attType = "admob"; - + private static bool _autoReCallAtt = false; /// /// 显示系统的 ATT 弹窗 @@ -125,15 +135,19 @@ namespace Guru /// /// iOS 平台检查 ATT 状态 /// - private static void CheckAttStatus() => ATTManager.CheckStatus(ReportAttStatus); - + private static void CheckAttStatus(bool autoReCall = false) + { + _autoReCallAtt = autoReCall; + ATTManager.CheckStatus(ReportAttStatus); + } + private static void ReportAttStatus(string status) { - LogI($"{Tag} --- Get Att status: {status}"); + LogI($"{Tag} --- Get Att status:{status} att Type:{_attType} recall:{_autoReCallAtt}"); SetUserProperty(Analytics.ParameterATTStatus, status); // 当前的状态 if (!string.IsNullOrEmpty(_initialAttStatus) - && status != ATTManager.ATT_STATUS_NOT_DETERMINED - && _initialAttStatus != status) + && _initialAttStatus != status + && status != ATTManager.ATT_STATUS_NOT_DETERMINED) { // 上报点位: Analytics.AttResult(status, _attType); @@ -143,7 +157,7 @@ namespace Guru { case ATTManager.ATT_STATUS_NOT_DETERMINED: // ATT 状态未知, 请求弹窗 - RequestAttDialog(); + if(_autoReCallAtt) RequestAttDialog(); break; case ATTManager.ATT_STATUS_RESTRICTED: case ATTManager.ATT_STATUS_DENIED: diff --git a/Runtime/Code/SDK/GuruSDK.cs b/Runtime/Code/SDK/GuruSDK.cs index 7c09a13..7756933 100644 --- a/Runtime/Code/SDK/GuruSDK.cs +++ b/Runtime/Code/SDK/GuruSDK.cs @@ -279,12 +279,7 @@ namespace Guru } return null; } - - - - - #endregion #region Apple 审核流程逻辑 diff --git a/package.json b/package.json index 271362a..8854134 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "com.guru.unity.sdk", "displayName": "Guru SDK", - "version": "1.0.7", + "version": "1.0.8", "description": "Guru SDK for unity project", "unity": "2020.3", "author":{