From 6d73bf6e816570291865674bef8bce8972e4de3f Mon Sep 17 00:00:00 2001
From: xm <1271024303@qq.com>
Date: 星期三, 01 十二月 2021 16:32:57 +0800
Subject: [PATCH] 2021-12-01-01

---
 HDL-ON_iOS/AppDelegate.cs |  365 +++++++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 301 insertions(+), 64 deletions(-)

diff --git a/HDL-ON_iOS/AppDelegate.cs b/HDL-ON_iOS/AppDelegate.cs
index b85adf9..2d22046 100644
--- a/HDL-ON_iOS/AppDelegate.cs
+++ b/HDL-ON_iOS/AppDelegate.cs
@@ -1,4 +1,4 @@
-锘縰sing System;
+锘縰sing System;
 using Foundation;
 using HDL_ON;
 using Shared;
@@ -7,6 +7,9 @@
 using Microsoft.AppCenter;
 using Microsoft.AppCenter.Analytics;
 using Microsoft.AppCenter.Crashes;
+using HDL_ON.UI;
+using HDL_ON.DAL.Server;
+using Intents;
 
 namespace SharedMethod
 {
@@ -14,7 +17,7 @@
     {
         public static UIApplication sharedApp;
         public static PageLayout CurPageLayout = null;
-        public static bool IsBackground;
+        //public static bool IsBackground;
 
         //public static string CheckVersion()
         //{
@@ -22,7 +25,7 @@
         //    UserConfig.Instance.IsAppStoreVersionNewer = Harpy.Harpy.SharedInstance.TestIsAppStoreVersionNewer;
         //    UserConfig.Instance.StoreVersion = Harpy.Harpy.SharedInstance.CurrentAppStoreVersion;
         //    UserConfig.Instance.SaveUserConfig();
-        //    if (Shared.SimpleControl.MainPage.LoginUser.AccountString == @"464027401@qq.com")
+        //    if (Shared.SimpleControl. UserInfo.Current.AccountString == @"464027401@qq.com")
         //    {
         //        return $"TestIsAppStoreVersionNewer : {UserConfig.Instance.IsAppStoreVersionNewer};;  CurrentAppStoreVersion : {UserConfig.Instance.StoreVersion}";
         //    }
@@ -33,6 +36,7 @@
         //}
     }
 
+    
 }
 
 namespace HDL_ON_iOS
@@ -40,7 +44,7 @@
     // The UIApplicationDelegate for the application. This class is responsible for launching the
     // User Interface of the application, as well as listening (and optionally responding) to application events from iOS.
     [Register("AppDelegate")]
-    public class AppDelegate : BaseApplicationDelegate
+    public class AppDelegate : BaseApplicationDelegateForHdlOn// BaseApplicationDelegate
     {
         // class-level declarations
 
@@ -56,6 +60,7 @@
         //    // If not required for your application you can safely delete this method
         //    return true;
         //}
+        internal static UINavigationController rootViewController;
 
         public static void CleanApplicationIconBadgeNumber()
         {
@@ -95,18 +100,23 @@
 
                 // Save new device token 
                 NSUserDefaults.StandardUserDefaults.SetString(DeviceToken, "PushDeviceToken");
-                string userPhoneName = UIDevice.CurrentDevice.Name;
 
+                //UserInfo.Current.PushDeviceToken = DeviceToken;
+                //UserInfo.Current.PhoneName = userPhoneName;
+                //UserInfo.Current.SaveUserInfo();
                 OnAppConfig.Instance.PushDeviceToken = DeviceToken;
-                //UserConfig.Instance.phoneName = userPhoneName;
-                //UserConfig.Instance.SaveUserConfig();
+                OnAppConfig.Instance.PhoneName = UIDevice.CurrentDevice.Name;
+                OnAppConfig.Instance.SaveConfig();
             }
             if (OnAppConfig.Instance.PushDeviceToken != DeviceToken)
             {
-                string userPhoneName = UIDevice.CurrentDevice.Name;
+                //string userPhoneName = UIDevice.CurrentDevice.Name;
+                //UserInfo.Current.PushDeviceToken = DeviceToken;
+                //UserInfo.Current.PhoneName = userPhoneName;
+                //UserInfo.Current.SaveUserInfo();
                 OnAppConfig.Instance.PushDeviceToken = DeviceToken;
-                //UserConfig.Instance.phoneName = userPhoneName;
-                //UserConfig.Instance.SaveUserConfig();
+                OnAppConfig.Instance.PhoneName = UIDevice.CurrentDevice.Name;
+                OnAppConfig.Instance.SaveConfig();
             }
         }
 
@@ -116,6 +126,28 @@
 
             //璇诲彇鎺ㄩ�佷俊鎭�
             UIApplication.SharedApplication.ApplicationIconBadgeNumber = 0;
+
+            if (userInfo == null)
+            {
+                return;
+            }
+
+            Console.WriteLine(userInfo);
+            //HDLCommon.Current.ShowAlert("DidReceiveRemoteNotification:" + userInfo.ToString());
+
+
+            if (application.ApplicationState == UIApplicationState.Active || application.ApplicationState == UIApplicationState.Background)
+            {
+
+                HandleNotificationMessageUserInfo(userInfo, false);
+            }
+            else
+            {
+                //Inactive
+                HandleNotificationMessageUserInfo(userInfo, false);
+
+            }
+            completionHandler(UIBackgroundFetchResult.NewData);
         }
 
         public override void ReceivedRemoteNotification(UIApplication application, NSDictionary userInfo)
@@ -141,24 +173,27 @@
         public override void OnResignActivation(UIApplication application)
         {
             Console.WriteLine("OnResignActivation");
-            BusSocket.Stop();
+            UserInfo.Current.unlockTime = DateTime.Now;
         }
 
         public override void DidEnterBackground(UIApplication application)
         {
-            SharedMethod.SharedMethod.IsBackground = true;
-            if (MainPage.LoginUser != null)
-                HDL_ON.Entity.DB_ResidenceData.residenceData.SaveResidenceData();
+            //SharedMethod.SharedMethod.IsBackground = true;
+            //MainPage.IsEnterBackground = true;
+            ////杩涘叆鍚庡彴mqtt姝e湪杩炴帴閲嶇疆鐘舵��
+            //HDL_ON.DAL.Mqtt.MqttClient.RemoteMqttIsConnecting = false;
+            //HDL_ON.DriverLayer.UdpSocket._BusSocket.Stop();
+            //杩涘叆鍚庡彴
+            BusSocketStop();
             Console.WriteLine("DidEnterBackground");
         }
 
 
         public override void WillEnterForeground(UIApplication application)
         {
-            SharedMethod.SharedMethod.IsBackground = false;
-            BusSocket.Start(6000);
+            //鍥炲埌鍓嶅彴锛屽鐞嗕簨浠�
+            BusSocketStart();
             Console.WriteLine("WillEnterForeground");
-            UIApplication.SharedApplication.ApplicationIconBadgeNumber = 0;
         }
 
         public override void WillTerminate(UIApplication application)
@@ -170,75 +205,277 @@
         {
             Console.WriteLine("OnActivated");
             base.OnActivated(application);
+            //HDL_ON.DriverLayer.Control.Ins.SearchLoaclGateway();
+
+            //if (haveToSignOut == true)
+            //{
+            ////寮哄埗涓嬬嚎
+            //UserInfo.Current.LastTime = DateTime.MinValue;
+            //UserInfo.Current.headImagePagePath = "LoginIcon/2.png";//閲嶇疆鐢ㄦ埛澶村儚
+            //UserInfo.Current.SaveUserInfo();
+            //HDLCommon.Current.ShowAlert(Language.StringByID(StringId.LoggedOnOtherDevices));
+            //}
+
+        }
+
+        /// <summary>
+        /// 璁剧疆褰撳墠浣跨敤璇█
+        /// </summary>
+        void SetCurrentLanguage()
+        {
+            if (string.IsNullOrEmpty(OnAppConfig.Instance.SetLanguage))
+            {
+                if (NSLocale.PreferredLanguages[0].Contains("zh-"))
+                {
+                    Language.CurrentLanguage = "Chinese";
+                }
+                else if (NSLocale.PreferredLanguages[0].Contains("cs-"))
+                {
+                    Language.CurrentLanguage = "Czech";
+                }
+                else
+                {
+                    Language.CurrentLanguage = "English";
+                }
+            }
+            else
+            {
+                Language.CurrentLanguage = OnAppConfig.Instance.SetLanguage;
+            }
         }
 
         public override bool FinishedLaunching(UIApplication application, NSDictionary launchOptions)
         {
-            AppCenter.Start("e1add75a-82c6-4a5c-a902-4705b195748e",
-                               typeof(Analytics), typeof(Crashes));
+            Console.WriteLine("111111111111");
+            SetCurrentLanguage();
+            //Shared.Application.FontSize = 12;
+            //Bugly.Bugly.StartWithAppId("b58fb35436");
+            //鍙栨秷EditText榛樿瀵嗙爜杈撳叆鏂瑰紡
+            //Shared.Application.IsEditTextContentTypePassword = false;
+            //榛樿浣跨敤鑻规柟瀛椾綋
+            Shared.Application.IsUsePingFang = true;
+            //淇濇寔灞忓箷甯镐寒鎴栬�呰嚜鍔ㄩ攣灞�
+            application.IdleTimerDisabled = false;
             base.FinishedLaunching(application, launchOptions);
 
+            Window = new UIWindow(UIScreen.MainScreen.Bounds);
+            rootViewController = new UINavigationController(new ViewController()) { NavigationBarHidden = true };
+            Window.RootViewController = rootViewController;
+            Window.MakeKeyAndVisible();
+
+            AppCenter.Start("e1add75a-82c6-4a5c-a902-4705b195748e", typeof(Analytics), typeof(Crashes));
+
             SharedMethod.SharedMethod.sharedApp = application;
-            Shared.Application.IsGpsEnable = false;
             //NSString* nsCount = [[NSLocale currentLocale] objectForKey: NSLocaleCountryCode];
             application.StatusBarStyle = UIStatusBarStyle.DarkContent;
-
-            string nsCount = NSLocale.CurrentLocale.CountryCode;
-            if (nsCount != OnAppConfig.Instance.CountryCode)
-            {
-                OnAppConfig.Instance.CountryCode = nsCount;
-                OnAppConfig.Instance.SaveUserConfig();
-            }
-            application.IdleTimerDisabled = true;
-            application.RegisterForRemoteNotificationTypes(UIRemoteNotificationType.Alert | UIRemoteNotificationType.Badge | UIRemoteNotificationType.Sound);
-
-            Window = new UIWindow(UIScreen.MainScreen.Bounds);
-            var Root = new UINavigationController(new ViewController()) { NavigationBarHidden = true };
-            Window.RootViewController = Root;
-            Window.MakeKeyAndVisible();
             //window.AccessibilityNavigationStyle = UIAccessibilityNavigationStyle.Automatic;
             // check for a notification
+            DealWithPushMes(launchOptions);
+
+            //if (UIApplication.SharedApplication.ApplicationIconBadgeNumber > 0)
+            //{
+            //    //RemoteInfo.Current.ReadMsgList(true);
+            //}
+
+            #region Siri
+            // Request access to Siri
+            INPreferences.RequestSiriAuthorization((INSiriAuthorizationStatus status) => {
+                // Respond to returned status
+                switch (status)
+                {
+                    case INSiriAuthorizationStatus.Authorized:
+                        break;
+                    case INSiriAuthorizationStatus.Denied:
+                        break;
+                    case INSiriAuthorizationStatus.NotDetermined:
+                        break;
+                    case INSiriAuthorizationStatus.Restricted:
+                        break;
+                }
+            });
+
+            var language = INPreferences.SiriLanguageCode;
+
+            // Take action based on language
+            if (language == "en-US")
+            {
+                // Do something...
+            }
+
+            #endregion
+
+            //楂樺痉key
+            GDMapKit.setGDApiKey("f0635ea15c5d579c6e93d9f07a06da69");
+            Console.WriteLine("FinishedLaunching");
+            return true;
+        }
+
+        /// <summary>
+        /// 澶勭悊閫氱煡娑堟伅
+        /// </summary>
+        void HandleNotificationMessageUserInfo(NSDictionary userInfo, bool bFinishedLaunching)
+        {
+            try
+            {
+                if (userInfo.ContainsKey(new NSString("aps")))
+                {
+                    var aps = userInfo["aps"] as NSDictionary;
+                    var alert = aps["alert"] as NSDictionary;
+                    var body = alert["body"] as NSString;
+                    var title = alert["title"] as NSString;
+                    var expandData = "";
+                    var messageType = "";
+                    var expantContent = "";
+                    var homeId = "";
+                    if (userInfo.ContainsKey(new NSString("expandData")))
+                    {
+                        var expandDataStr = userInfo["expandData"] as NSString;
+                        if(expandDataStr == null)
+                        {
+                            var expandDataNSD = userInfo["expandData"] as NSDictionary;
+                            if (expandDataNSD != null)
+                            {
+                                expandData = expandDataNSD.ToString();
+                                if(expandDataNSD.ContainsKey(new NSString("messageType"))){
+                                    messageType = expandDataNSD["messageType"] as NSString;
+                                    Utlis.WriteLine("messageType: " + messageType);
+                                }
+
+                                if (expandDataNSD.ContainsKey(new NSString("expantContent")))
+                                {
+                                    expantContent = expandDataNSD["expantContent"] as NSString;
+                                    Utlis.WriteLine("expantContent: " + expantContent);
+                                }
+
+                                if (expandDataNSD.ContainsKey(new NSString("homeId")))
+                                {
+                                    homeId = expandDataNSD["homeId"].ToString();
+                                    Utlis.WriteLine("homeId: " + homeId);
+                                }
+
+                            }
+                        }
+                        else
+                        {
+                            expandData = expandDataStr;
+                        }
+
+                    }
+                    var pushMes = new JPushMessageInfo()
+                    {
+                        HomeId = homeId,
+                        Title = title,
+                        Content = body,
+                        Extras = expandData,
+                        messageType = messageType,
+                        expantContent = expantContent
+                    };
+                    Utlis.WriteLine("PushMes title : " + pushMes.Title);
+                    Utlis.WriteLine("PushMes message : " + pushMes.Content);
+                    Utlis.WriteLine("PushMes extras : " + pushMes.Extras);
+
+                    if (bFinishedLaunching)
+                    {
+                        if (pushMes.Extras != null)
+                        {
+                            if (pushMes.Extras.Contains("OffLine"))
+                            {
+                                //haveToSignOut = true;
+                                //寮哄埗涓嬬嚎
+                                UserInfo.Current.LastTime = DateTime.MinValue;
+                                UserInfo.Current.headImagePagePath = "LoginIcon/2.png";//閲嶇疆鐢ㄦ埛澶村儚
+                                UserInfo.Current.SaveUserInfo();
+                                HDLCommon.Current.ShowAlert(Language.StringByID(StringId.LoggedOnOtherDevices));
+                            }
+                            else
+                            {
+                                HDLCommon.Current.AdjustPushMessage(pushMes);
+                            }
+                        }
+                    }
+                    else
+                    {
+                        HDLCommon.Current.AdjustPushMessage(pushMes);
+                    }
+                   
+                }
+            }
+            catch
+            {
+                //HDLCommon.Current.ShowAlert("catch2222");
+            }
+        }
+
+        ///// <summary>
+        ///// 閫�鍑虹櫥褰曟爣璁�
+        ///// </summary>
+        //bool haveToSignOut;
+        /// <summary>
+        /// 鍚姩APP 澶勭悊閫氱煡
+        /// </summary>
+        /// <param name="launchOptions"></param>
+        void DealWithPushMes(NSDictionary launchOptions)
+        {
+            //haveToSignOut = false;
             if (launchOptions != null)
             {
                 // check for a remote notification
                 if (launchOptions.ContainsKey(UIApplication.LaunchOptionsRemoteNotificationKey))
                 {
+                    NSDictionary userInfo = launchOptions[UIApplication.LaunchOptionsRemoteNotificationKey] as NSDictionary;
 
-                    NSDictionary remoteNotification = launchOptions[UIApplication.LaunchOptionsRemoteNotificationKey] as NSDictionary;
-                    if (remoteNotification != null)
+                    if (userInfo != null)
                     {
-                        //UIApplication.SharedApplication.ApplicationIconBadgeNumber = 0;
+                        //HandleNotificationMessageUserInfo(userInfo, true);
+
                     }
                 }
             }
-            if (UIDevice.CurrentDevice.CheckSystemVersion(8, 0))
-            {
-                var notificationSettings = UIUserNotificationSettings.GetSettingsForTypes(UIUserNotificationType.Alert | UIUserNotificationType.Badge | UIUserNotificationType.Sound, null);
-                application.RegisterUserNotificationSettings(notificationSettings);
-                application.RegisterForRemoteNotifications();
-            }
-            else
-            {
-                //==== register for remote notifications and get the device token
-                // set what kind of notification types we want
-                UIRemoteNotificationType notificationTypes = UIRemoteNotificationType.Alert | UIRemoteNotificationType.Badge;
-                // register for remote notifications
-                UIApplication.SharedApplication.RegisterForRemoteNotificationTypes(notificationTypes);
-            }
-
-            if (UIApplication.SharedApplication.ApplicationIconBadgeNumber > 0)
-            {
-                //RemoteInfo.Current.ReadMsgList(true);
-            }
-
-            //Harpy.Harpy.SharedInstance.PresentingViewController = this.Window.RootViewController;
-            //Harpy.Harpy.SharedInstance.WeakDelegate = this;
-            //Harpy.Harpy.SharedInstance.AlertType = Harpy.HarpyAlertType.Skip;
-            //Harpy.Harpy.SharedInstance.DebugEnabled = false;
-            //Harpy.Harpy.SharedInstance.ForceLanguageLocalization = Harpy.Constants.HarpyLanguageChineseSimplified;
-            Console.WriteLine("FinishedLaunching");
-            return true;
         }
+
+        /// <summary>
+        /// 杩涘叆鍚庡彴鐨勬椂闂�
+        /// </summary>
+        DateTime CloseTime = DateTime.Now;
+
+        /// <summary>
+        /// 杩涘叆鍚庡彴澶勭悊鏃堕棿
+        /// BusSocketStop
+        /// </summary>
+        void BusSocketStop()
+        {
+            //SharedMethod.SharedMethod.IsBackground = true;
+            CloseTime = DateTime.Now;
+            MainPage.IsEnterBackground = true;
+            //杩涘叆鍚庡彴mqtt姝e湪杩炴帴閲嶇疆鐘舵��
+            HDL_ON.DAL.Mqtt.MqttClient.RemoteMqttIsConnecting = false;
+            HDL_ON.DriverLayer.UdpSocket._BusSocket.Stop();
+          
+        }
+
+
+        /// <summary>
+        /// 鍥炲埌鍓嶅彴锛屽鐞嗕簨浠�
+        /// </summary>
+        void BusSocketStart()
+        {
+            if (CloseTime.AddSeconds(10) < DateTime.Now)
+            {
+                //鍚庡彴瓒呰繃10s灏辨柇寮�MQTT閲嶈繛
+                //if (HDL_ON.DriverLayer.Control.Ins.IsRemote)
+                {
+                    HDL_ON.DAL.Mqtt.MqttClient.DisConnectRemote("closeTime", false);
+                }
+            }
+
+            MainPage.IsEnterBackground = false;
+            HDL_ON.DriverLayer.UdpSocket._BusSocket.Start();
+            new AppUnlockPage().LoadPage();
+            UIApplication.SharedApplication.ApplicationIconBadgeNumber = 0;
+            HDL_ON.DriverLayer.Control.Ins.SearchLoaclGateway();
+        }
+
     }
+
 }
 

--
Gitblit v1.8.0