diff --git a/Runtime/Code/SDK/GuruSDK.Ads.cs b/Runtime/Code/SDK/GuruSDK.Ads.cs
index cb3e154..65aeb4a 100644
--- a/Runtime/Code/SDK/GuruSDK.Ads.cs
+++ b/Runtime/Code/SDK/GuruSDK.Ads.cs
@@ -137,15 +137,18 @@ namespace Guru
         private static void CheckAttStatus(bool autoReCall = false)
         {
             _autoReCallAtt = autoReCall;
-            ATTManager.CheckStatus(ReportAttStatus);
+            
+            // Delay 1s to get the user choice
+            Delay(1, () => ATTManager.CheckStatus(ReportAttStatus));
         }
 
         private static void ReportAttStatus(string status)
         {
             LogI($"{Tag} --- Get Att status:{status}  att Type:{_attType}  recall:{_autoReCallAtt}");
             SetUserProperty(Analytics.ParameterATTStatus, status); // 当前的状态
-            if (!string.IsNullOrEmpty(_initialAttStatus) 
-                && _initialAttStatus != status
+            
+            if (!string.IsNullOrEmpty(status) 
+                && status != _initialAttStatus 
                 && status !=  ATTManager.ATT_STATUS_NOT_DETERMINED)
             {
                 // 上报点位:
diff --git a/Runtime/Code/SDK/GuruSDK.Analytics.cs b/Runtime/Code/SDK/GuruSDK.Analytics.cs
index abc60e9..e5a7611 100644
--- a/Runtime/Code/SDK/GuruSDK.Analytics.cs
+++ b/Runtime/Code/SDK/GuruSDK.Analytics.cs
@@ -262,6 +262,27 @@ namespace Guru
         }
         
         
+        #endregion
+
+        #region SDK 打点
+        
+        /// 
+        /// Log SDK boost time
+        /// 
+        /// 
+        private static void LogSDKInitTime(double time)
+        {
+            Analytics.Track("sdk_init_time", new Dictionary()
+            {
+                {"time", time.ToString("F6")},
+                {"device_id", DeviceId},
+            }, new Analytics.EventSetting()
+            {
+                EnableFirebaseAnalytics = true,
+            });
+        }
+        
+
         #endregion
     }
 }
\ No newline at end of file
diff --git a/Runtime/Code/SDK/GuruSDK.cs b/Runtime/Code/SDK/GuruSDK.cs
index 7756933..bc6fd36 100644
--- a/Runtime/Code/SDK/GuruSDK.cs
+++ b/Runtime/Code/SDK/GuruSDK.cs
@@ -37,9 +37,7 @@ namespace Guru
         internal static GuruSDKInitConfig InitConfig => Instance._initConfig;
         internal static GuruSDKModel Model => GuruSDKModel.Instance;
         private static GuruServicesConfig _appServicesConfig;
-
         private static GuruSettings _guruSettings;
-
         private static GuruSettings GuruSettings
         {
             get
@@ -50,6 +48,9 @@ namespace Guru
         }
 
 
+        private static DateTime _initTime;
+
+
         private static bool _isDebugEnabled = false;
         /// 
         /// Debug Mode
@@ -102,6 +103,7 @@ namespace Guru
         
         public static void Init(GuruSDKInitConfig config, Action onComplete)
         {
+            _initTime = DateTime.Now.ToUniversalTime();
             LogI($"---- Guru SDK init ----\n{config.ToString()}");
             Instance.StartWithConfig(config, onComplete);
         }
@@ -154,6 +156,9 @@ namespace Guru
             // 根据上次的云控配置来初始化参数
             SetupServicesConfig();
             
+            var sp = DateTime.Now.ToUniversalTime() - _initTime;
+            LogSDKInitTime(sp.TotalSeconds);
+            
             _onCompleteCallback?.Invoke(true);
         }
         
@@ -304,7 +309,11 @@ namespace Guru
             SetUserBPlay(bplay);
         }
 
-        public static string UID => _model?.UserId ?? "";
+        public static string UID => _model?.UserId ?? IPMConfig.IPM_UID;
+
+        public static string DeviceId => IPMConfig.IPM_DEVICE_ID ?? "";  // TODO: change it to _model member later.
+
+        public static string PushToken => IPMConfig.IPM_PUSH_TOKEN ?? ""; // TODO: change it to _model member later.
 
         public static string SupportEmail => GuruSettings.SupportEmail ?? "";
 
@@ -449,9 +458,9 @@ namespace Guru
         /// 
         /// 
         /// 
-        public static void Delay(float seconds, Action callback)
+        public static Coroutine Delay(float seconds, Action callback)
         {
-            DoCoroutine(Instance.OnDelayCall(seconds, callback));
+            return DoCoroutine(Instance.OnDelayCall(seconds, callback));
         }
 
         private IEnumerator OnDelayCall(float delay, Action callback)