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