diff --git a/Runtime/Code/SDK/GuruSDK.Ads.cs b/Runtime/Code/SDK/GuruSDK.Ads.cs
index a1a1962..aed1b2e 100644
--- a/Runtime/Code/SDK/GuruSDK.Ads.cs
+++ b/Runtime/Code/SDK/GuruSDK.Ads.cs
@@ -18,7 +18,7 @@ namespace Guru
             _adInitSpec = spec;
             if (InitConfig.UseCustomConsent)
             {
-                UnityEngine.Debug.Log($"{Tag} --- Call StartAdsWithCustomConsent when you use custom consent, and pass the result (boolean) to the method.");
+                Debug.Log($"{Tag} --- Call StartAdsWithCustomConsent when you use custom consent, and pass the result (boolean) to the method.");
                 return;
             }
             
@@ -59,7 +59,7 @@ namespace Guru
             }
             else
             {
-                UnityEngine.Debug.Log($"{Tag} --- User refuse to provide ads Id, Ads Service will be cancelled");
+                Debug.Log($"{Tag} --- User refuse to provide ads Id, Ads Service will be cancelled");
             }
         }
 
@@ -244,7 +244,7 @@ namespace Guru
             // bool hasNotiGranted = false;
             _notiStatue = "no_determined";
             NotificationService.Initialize(); // 初始化 Noti 服务
-            SetNotiPerm(NotificationService.GetStatus());
+            Analytics.SetNotiPerm(NotificationService.GetStatus());
         }
         
         /// 
@@ -266,7 +266,7 @@ namespace Guru
             if (isGranted)
             {
                 Debug.Log($"[SDK] ---- Set Notification Permission: {status}");
-                SetNotiPerm(status);
+                Analytics.SetNotiPerm(status);
                 return;
             }
 
@@ -285,7 +285,7 @@ namespace Guru
             NotificationService.RequestPermission(status =>
             {
                 Debug.Log($"[SDK] ---- Set Notification Permission: {status}");
-                if(!string.IsNullOrEmpty(status)) SetNotiPerm(status);
+                if(!string.IsNullOrEmpty(status)) Analytics.SetNotiPerm(status);
                 
                 callback?.Invoke(status);
             });
@@ -326,7 +326,7 @@ namespace Guru
         /// 
         /// 启动广告服务
         /// 
-        internal static void StartAdService(AdsInitSpec spec = null)
+        private static void StartAdService(AdsInitSpec spec = null)
         {
             
             //---------- Using InitConfig ----------
diff --git a/Runtime/Code/SDK/GuruSDK.Analytics.cs b/Runtime/Code/SDK/GuruSDK.Analytics.cs
index d5d3681..3131667 100644
--- a/Runtime/Code/SDK/GuruSDK.Analytics.cs
+++ b/Runtime/Code/SDK/GuruSDK.Analytics.cs
@@ -10,7 +10,6 @@ namespace Guru
     /// 
     public partial class GuruSDK
     {
-        
         #region 通用接口
 
         /// 
@@ -37,6 +36,20 @@ namespace Guru
 
         #endregion
         
+        #region 设置用户属性
+
+        /// 
+        /// 设置用户属性
+        /// 
+        /// 
+        /// 
+        public static void SetUserProperty(string key, string value)
+        {
+            Analytics.SetUserProperty(key, value);
+        }
+
+        #endregion
+        
         #region 游戏打点
 
         /// 
@@ -283,183 +296,8 @@ namespace Guru
             LogEvent(Consts.EventHpPoints, dict);
         }
 
-
         #endregion
-
-        #region 用户属性
-
-        /// 
-        /// 提前调用用户属性
-        /// 
-        private static void InitUserProperties()
-        {
-            if (!IsInitialSuccess)
-            {
-                Debug.LogError($"{Tag} :: InitUserProperties :: Please call  first, before you call .");
-                return;
-            }
-            
-            Debug.Log($"[SDK] --- PurchasedCount:{Model.PurchasedCount}");
-            Debug.Log($"[SDK] --- IsIapUser:{Model.IsIapUser}");
-            
-            SetUserIsIAP(Model.IsIapUser); // 预先设置用户的 IAP User 属性
-            SetUserBLevel(Model.SuccessLevelId); // 预先设置用户的 BLevel 属性
-            SetUserBPlay(Model.TotalPlayedCount);  // 预先设置用户的 BPlay 属性
-            if (Model.IsNoAds) SetBuyNoAds(true); // 设置用户已经购买了去广告
-        }
-
-        /// 
-        /// 设置用户属性
-        /// 
-        /// 
-        /// 
-        public static void SetUserProperty(string key, string value)
-        {
-            Analytics.SetUserProperty(key, value);
-        }
         
-        public static void SetUID(string uid)
-        {
-            Analytics.SetUid(uid);
-            SetUserProperty(Consts.PropertyUserID, uid);
-        }
-
-        public static void SetUserBLevel(int blevel)
-        {
-            if (!InitConfig.AutoRecordFinishedLevels)
-            {
-                Model.SetBLevelValue(blevel);
-                Analytics.BLevel = blevel;
-            }
-            SetUserProperty(Consts.PropertyLevel, $"{blevel}");
-        }
-        
-        public static void SetUserBPlay(int bplay)
-        {
-            if (!InitConfig.AutoRecordFinishedLevels)
-            {
-                Model.SetBPlayValue(bplay);
-                Analytics.BPlay = bplay;
-            }
-            SetUserProperty(Consts.PropertyPlay, $"{bplay}");
-        }
-        
-        /// 
-        /// 上报用户全部的 Coin (当前值)
-        /// 
-        /// 
-        public static void SetUserCoin(int coins)
-        {
-            SetUserProperty(Consts.PropertyCoin, $"{coins}");        
-        }
-        
-        /// 
-        /// 上报用户免费金币的 数量 (累加值)
-        /// 
-        /// 
-        public static void SetUserNonIapCoin(int freeCoins)
-        {
-            SetUserProperty(Consts.PropertyNonIAPCoin, $"{freeCoins}");        
-        }
-        
-        /// 
-        /// 上报用户付费金币的 数量 (累加值)
-        /// 
-        /// 
-        public static void SetUserIapCoin(int paidCoins)
-        {
-            SetUserProperty(Consts.PropertyIAPCoin, $"{paidCoins}");        
-        }
-        
-        public static void SetUserExp(int exp)
-        {
-            SetUserProperty(Consts.PropertyExp, $"{exp}");        
-        }
-        
-        public static void SetUserHp(int hp)
-        {
-            SetUserProperty(Consts.PropertyHp, $"{hp}");        
-        }
-
-        public static void SetUserGrade(int grade)
-        {
-            SetUserProperty(Consts.PropertyGrade, $"{grade}");        
-        }
-
-        public static void SetUserIsIAP(bool isIapUser)
-        {
-            // SetUserProperty(Consts.PropertyIsIAPUser, isIapUser? "true" : "false");
-            Analytics.SetIsIapUser(isIapUser);
-        }
-
-        public static void SetFirstOpenTime(string timestamp)
-        {
-            if (string.IsNullOrEmpty(timestamp))
-            {
-                timestamp = IPMConfig.FIRST_OPEN_TIME;
-                Model.FirstOpenTime = timestamp;
-            }
-            SetUserProperty(Analytics.PropertyFirstOpenTime, timestamp);
-        }
-        
-        public static void SetNotiPerm(string status)
-        {
-            // SetUserProperty(Consts.PropertyNotiPerm, status);
-            Analytics.SetNotiPerm(status);
-        }
-        
-        public static void SetATTStatus(string status)
-        {
-            // SetUserProperty(Consts.PropertyATTStatus, status);
-            Analytics.SetAttStatus(status);
-        }
-
-        public static void SetAdjustId(string adjustId)
-        {
-            SetUserProperty(Consts.PropertyAdjustId, adjustId);
-        }
-
-        public static void SetNetworkStatus()
-        {
-            SetUserProperty(Consts.PropertyNetwork, Instance.GetNetworkStatus());
-        }
-
-        private static bool _hasUserPropertiesInitiallyUpdated = false;
-        /// 
-        /// 初始化时补全一下所有的属性打点 
-        /// 如果用户已经设置过 Key, 则不会再次设置
-        /// 用户属性文档
-        /// 
-        private static void InitiallyUpdateUserProperties()
-        {
-            if (_hasUserPropertiesInitiallyUpdated) return;
-            _hasUserPropertiesInitiallyUpdated = true;
-            
-            SetFirstOpenTime(Model?.FirstOpenTime ?? "");    //  first_open_time 
-            SetUserIsIAP(Model?.IsIapUser ?? false);    // is_iap_user
-            SetUserBLevel(Model?.SuccessLevelId ?? 0);  // b_level
-            SetUserBPlay(Model?.TotalPlayedCount ?? 0); // b_play
-            SetUserProperty(Consts.PropertyDeviceID, DeviceId); // device_id
-        
-            // SetUserIapCoin(0); // iap_coin
-            // SetUserNonIapCoin(0); // non_iap_coin
-            // SetUserCoin(0);// coin
-            // SetUserGrade(0); // grade
-            // SetUserExp(0); // exp
-            // SetUserHp(0); // hp
-            
-            if(!string.IsNullOrEmpty(UID))
-                SetUID(UID); // user_id
-            
-#if UNITY_IOS
-            SetATTStatus("notDetermined"); // att_status
-#endif
-            SetNotiPerm("not_determined"); // noti_perm
-            SetNetworkStatus(); // NetworkStatus
-        }
-
-        #endregion
-
         #region SDK 打点
         
         /// 
@@ -478,8 +316,6 @@ namespace Guru
             {
                 EnableFirebaseAnalytics = true,
             });
-            
-            SetUserProperty("sdk_version", Version);
         }
 
         /// 
diff --git a/Runtime/Code/SDK/GuruSDK.Properties.cs b/Runtime/Code/SDK/GuruSDK.Properties.cs
index 3d04253..527b3b4 100644
--- a/Runtime/Code/SDK/GuruSDK.Properties.cs
+++ b/Runtime/Code/SDK/GuruSDK.Properties.cs
@@ -75,8 +75,7 @@ namespace Guru
         {
             Model.IsNoAds = value;
             ADService.Instance.IsBuyNoAds = value;
-            SetUserProperty(Consts.PropertyNoAds, value? "true" : "false");
-            if(value) SetUserIsIAP(true);
+            if(value) Analytics.SetIsIapUser(true);
         }
 
         /// 
diff --git a/Runtime/Code/SDK/GuruSDK.cs b/Runtime/Code/SDK/GuruSDK.cs
index 5071adc..7dc24ba 100644
--- a/Runtime/Code/SDK/GuruSDK.cs
+++ b/Runtime/Code/SDK/GuruSDK.cs
@@ -125,7 +125,6 @@ namespace Guru
             InitThreadHandler(); // 初始化线程处理器
             InitServices(); // 初始化所有的服务
             InitNetworkMonitor(); // 网络状态
-            InitiallyUpdateUserProperties(); // 上报所有初始化用户属性
             
             onComplete?.Invoke(true);
         }
@@ -189,7 +188,6 @@ namespace Guru
         private void InitAllGuruServices()
         {
             // -------- Init Analytics ---------
-            InitUserProperties();
             SetSDKEventPriority();
             // -------- Init Notification -----------
             InitNotiPermission();
@@ -419,12 +417,12 @@ namespace Guru
 
         private void OnBLevelChanged(int bLevel)
         {
-            SetUserBLevel(bLevel);
+            Analytics.SetBLevel(bLevel);
         }
 
         private void OnBPlayChanged(int bPlay)
         {
-            SetUserBPlay(bPlay);
+            Analytics.SetBPlay(bPlay);
         }
         
         #endregion
@@ -726,8 +724,6 @@ namespace Guru
         {
             if (success)
             {
-                Analytics.ShouldFlushGuruEvents();
-                
                 Model.UserId = IPMConfig.IPM_UID;
                 if (GuruIAP.Instance != null)
                 {
@@ -736,7 +732,9 @@ namespace Guru
                 }
                 
                 // 自打点设置用户 ID
-                SetUID(UID);
+                Analytics.SetUid(UID);
+                // 上报所有的事件
+                Analytics.ShouldFlushGuruEvents();
             }
             
             Callbacks.SDK.InvokeOnGuruUserAuthResult(success);
@@ -792,7 +790,7 @@ namespace Guru
             // if (!string.IsNullOrEmpty(IPMConfig.ADJUST_ID))
             //     Analytics.SetAdjustId(IPMConfig.ADJUST_ID); // 二次启动后,若有值则立即上报属性
             
-            AdjustService.Instance.StartService(appToken, fbAppId, firebaseId, DeviceId,
+            AdjustService.Instance.Start(appToken, fbAppId, firebaseId, DeviceId,
                 OnAdjustInitComplete, onDeeplinkCallback ,OnGetGoogleAdId );
         }