From 82b67388873fdd2213b00fa212b9e46c0d40e3cf Mon Sep 17 00:00:00 2001
From: wxr <464027401@qq.com>
Date: 星期一, 04 九月 2023 13:35:18 +0800
Subject: [PATCH] 备份2

---
 OnPro/RongAn/AppDelegate.cs |  411 +++++++++++++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 389 insertions(+), 22 deletions(-)

diff --git a/OnPro/RongAn/AppDelegate.cs b/OnPro/RongAn/AppDelegate.cs
index 9a1e1bb..13bec41 100644
--- a/OnPro/RongAn/AppDelegate.cs
+++ b/OnPro/RongAn/AppDelegate.cs
@@ -1,42 +1,409 @@
-锘縰sing Foundation;
+锘縰sing System;
+using Foundation;
+using HDL_ON;
+using Shared;
 using UIKit;
+using HDL_ON.UI;
+using HDL_ON.DAL.Server;
+
 
 namespace RongAn
 {
     // 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 : UIResponder, IUIApplicationDelegate {
-    
-        [Export("window")]
-        public UIWindow Window { get; set; }
+    [Register("AppDelegate")]
+    public class AppDelegate : BaseApplicationDelegateForHdlOn// BaseApplicationDelegate
+    {
+        // class-level declarations
 
-        [Export ("application:didFinishLaunchingWithOptions:")]
-        public bool FinishedLaunching (UIApplication application, NSDictionary launchOptions)
+        public override UIWindow Window
         {
-            // Override point for customization after application launch.
-            // If not required for your application you can safely delete this method
+            get;
+            set;
+        }
+
+        //}
+        public static UINavigationController rootViewController;
+
+        public static void CleanApplicationIconBadgeNumber()
+        {
+            UIApplication.SharedApplication.ApplicationIconBadgeNumber = 0;
+        }
+
+        public override void RegisteredForRemoteNotifications(UIApplication application, NSData deviceToken)
+        {
+            //byte[] array = new byte[(ulong)deviceToken.Length];
+            //System.Runtime.InteropServices.Marshal.Copy(deviceToken.Bytes, array, 0, array.Length);
+            //System.Text.StringBuilder stringBuilder = new System.Text.StringBuilder();
+            //for (int i = 0; i < array.Length; i++)
+            //{
+            //    stringBuilder.AppendFormat("{0:x2}", array[i]);
+            //}
+            //string text = stringBuilder.ToString();
+            //if (NSUserDefaults.StandardUserDefaults.StringForKey("PushDeviceToken") != text)
+            //{
+            //    NSUserDefaults.StandardUserDefaults.SetString(text, "PushDeviceToken");
+            //}
+
+            ///// Get current device token
+            //var DeviceToken = text;
+            //if (!string.IsNullOrWhiteSpace(DeviceToken))
+            //{
+            //    DeviceToken = DeviceToken.Trim('<').Trim('>').Replace(" ", "");
+            //}
+
+            //// Get previous device token
+            //var oldDeviceToken = NSUserDefaults.StandardUserDefaults.StringForKey("PushDeviceToken");
+
+            //// Has the token changed?
+            //if (string.IsNullOrEmpty(oldDeviceToken) || !oldDeviceToken.Equals(DeviceToken))
+            //{
+            //    NSUserDefaults.StandardUserDefaults.SetString(DeviceToken, "PushDeviceToken");
+
+            //    OnAppConfig.Instance.PushDeviceToken = DeviceToken;
+            //    OnAppConfig.Instance.PhoneName = UIDevice.CurrentDevice.Name;
+            //    OnAppConfig.Instance.SaveConfig();
+            //}
+            //if (OnAppConfig.Instance.PushDeviceToken != DeviceToken)
+            //{
+            //    OnAppConfig.Instance.PushDeviceToken = DeviceToken;
+            //    OnAppConfig.Instance.PhoneName = UIDevice.CurrentDevice.Name;
+            //    OnAppConfig.Instance.SaveConfig();
+            //}
+        }
+
+        public override void DidReceiveRemoteNotification(UIApplication application, NSDictionary userInfo, Action<UIBackgroundFetchResult> completionHandler)
+        {
+            //Console.WriteLine("DidReceiveRemoteNotification:" + application.ApplicationState.ToString());
+
+            //Console.WriteLine("鎺ㄩ�佹秷鎭細"+userInfo);
+
+            ////璇诲彇鎺ㄩ�佷俊鎭�
+            //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)
+        {
+            if (application.ApplicationState == UIApplicationState.Active)
+            {
+                Console.WriteLine("ReceivedRemoteNotification1");
+            }
+            else if (application.ApplicationState == UIApplicationState.Background)
+            {
+                Console.WriteLine("ReceivedRemoteNotification2");
+            }
+            else if (application.ApplicationState == UIApplicationState.Inactive)
+            {
+                Console.WriteLine("ReceivedRemoteNotification3");
+            }
+
+
+        }
+
+        public override void OnResignActivation(UIApplication application)
+        {
+            Console.WriteLine("OnResignActivation");
+            UserInfo.Current.unlockTime = DateTime.Now;
+        }
+
+        public override void DidEnterBackground(UIApplication application)
+        {
+            //杩涘叆鍚庡彴
+            BusSocketStop();
+            Console.WriteLine("DidEnterBackground");
+        }
+
+
+        public override void WillEnterForeground(UIApplication application)
+        {
+            //鍥炲埌鍓嶅彴锛屽鐞嗕簨浠�
+            BusSocketStart();
+            Console.WriteLine("WillEnterForeground");
+        }
+
+        public override void WillTerminate(UIApplication application)
+        {
+            Console.WriteLine("WillTerminate");
+        }
+
+        public override void OnActivated(UIApplication application)
+        {
+            Console.WriteLine("OnActivated");
+            base.OnActivated(application);
+
+        }
+
+        /// <summary>
+        /// 璁剧疆褰撳墠浣跨敤璇█
+        /// </summary>
+        void SetCurrentLanguage()
+        {
+            if (string.IsNullOrEmpty(OnAppConfig.Instance.SetLanguage))
+            {
+                if (NSLocale.PreferredLanguages[0].Contains("zh-"))
+                {
+                    Language.CurrentLanguage = "Chinese";
+                }
+                else
+                {
+                    Language.CurrentLanguage = "English";
+                }
+            }
+            else
+            {
+                Language.CurrentLanguage = OnAppConfig.Instance.SetLanguage;
+            }
+        }
+
+        public override bool FinishedLaunching(UIApplication application, NSDictionary launchOptions)
+        {
+
+
+            Console.WriteLine("111111111111");
+            SetCurrentLanguage();
+            //Shared.Application.FontSize = 12;
+            //Bugly.Bugly.StartWithAppId("1dc40c170a");
+            //鍙栨秷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();
+
+            application.StatusBarStyle = UIStatusBarStyle.DarkContent;
+            DealWithPushMes(launchOptions);
+
+            Console.WriteLine("FinishedLaunching");
             return true;
         }
 
-        // UISceneSession Lifecycle
 
-        [Export ("application:configurationForConnectingSceneSession:options:")]
-        public UISceneConfiguration GetConfiguration (UIApplication application, UISceneSession connectingSceneSession, UISceneConnectionOptions options)
+        /// <summary>
+        /// 澶勭悊閫氱煡娑堟伅
+        /// </summary>
+        void HandleNotificationMessageUserInfo(NSDictionary userInfo, bool bFinishedLaunching)
         {
-            // Called when a new scene session is being created.
-            // Use this method to select a configuration to create the new scene with.
-            return UISceneConfiguration.Create ("Default Configuration", connectingSceneSession.Role);
+            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 (!string.IsNullOrEmpty(pushMes.spk))//鑷爺鍙瀵硅闇�瑕佽褰曟椂闂村弽鍛�
+                    {
+                        UserInfo.Current.pushMessageInfo = pushMes;
+                        UserInfo.Current.inCall = DateTime.Now;
+                    }
+
+                    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);
+                                this.CommonAdjustPushMessage(pushMes);//2023骞�04鏈�13鏃�15:55:54 淇敼
+                            }
+                        }
+                    }
+                    else
+                    {
+                        //HDLCommon.Current.AdjustPushMessage(pushMes);
+                        this.CommonAdjustPushMessage(pushMes);
+                    }
+
+                }
+            }
+            catch
+            {
+                //HDLCommon.Current.ShowAlert("catch2222");
+            }
         }
 
-        [Export ("application:didDiscardSceneSessions:")]
-        public void DidDiscardSceneSessions (UIApplication application, NSSet<UISceneSession> sceneSessions)
+        ///// <summary>
+        ///// 閫�鍑虹櫥褰曟爣璁�
+        ///// </summary>
+        //bool haveToSignOut;
+        /// <summary>
+        /// 鍚姩APP 澶勭悊閫氱煡
+        /// </summary>
+        /// <param name="launchOptions"></param>
+        void DealWithPushMes(NSDictionary launchOptions)
         {
-            // Called when the user discards a scene session.
-            // If any sessions were discarded while the application was not running, this will be called shortly after `FinishedLaunching`.
-            // Use this method to release any resources that were specific to the discarded scenes, as they will not return.
+            //haveToSignOut = false;
+            if (launchOptions != null)
+            {
+                // check for a remote notification
+                if (launchOptions.ContainsKey(UIApplication.LaunchOptionsRemoteNotificationKey))
+                {
+                    NSDictionary userInfo = launchOptions[UIApplication.LaunchOptionsRemoteNotificationKey] as NSDictionary;
+
+                    if (userInfo != null)
+                    {
+                        //HandleNotificationMessageUserInfo(userInfo, 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();
+            //閲嶈繛mqtt闃叉mqtt杩涘叆鍋囨鐘舵�� 2023-05-03 22:55:12 wxr
+            HDL_ON.DAL.Mqtt.MqttClient.InitState();
+
+
+            new AppUnlockPage().LoadPage();
+            UIApplication.SharedApplication.ApplicationIconBadgeNumber = 0;
+            HDL_ON.DriverLayer.Control.Ins.SearchLoaclGateway();
+        }
+
+
+        public void CommonAdjustPushMessage(JPushMessageInfo pushMes)
+        {
+            new System.Threading.Thread(new System.Threading.ThreadStart(() =>
+            {
+                while (MainPage.BasePageView == null)
+                {
+                    System.Threading.Thread.Sleep(300);
+                }
+                Shared.Application.RunOnMainThread(() =>
+                {
+                    HDLCommon.Current.AdjustPushMessage(pushMes);
+                });
+            })).Start();
+
+        }
+
+
     }
-}
 
+}
 

--
Gitblit v1.8.0