JLChen
2021-01-11 5a5a2b696866f947b6025d26c3302e8ffef46435
Crabtree/ON.Ios/AppDelegate.cs
@@ -6,6 +6,8 @@
using Microsoft.AppCenter.Analytics;
using Microsoft.AppCenter.Crashes;
using Shared;
using Shared.SimpleControl;
using SmartHome;
using UIKit;
using UserNotifications;
@@ -33,7 +35,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.FinishLaunching
    [Register ("AppDelegate")]
    public class AppDelegate : BaseApplicationDelegate
    public class AppDelegate : BaseApplicationDelegateForHdlOn
    {
        public override UIWindow Window{
            get;
@@ -73,9 +75,11 @@
        public override bool FinishedLaunching (UIApplication application, NSDictionary launchOptions)
        {
            AppCenter.Start ("44cbdfbf-d33e-4e92-a795-1c4452e54d3e", typeof (Analytics), typeof (Crashes));
            Console.WriteLine ("FinishedLaunching");
            base.FinishedLaunching (application, launchOptions);
            Utlis.WriteLine ("FinishedLaunching");
            //Shared.Application.IsGpsEnable = false;
            //Shared.Application.IsUsePingFang = true;
            base.FinishedLaunching (application, launchOptions);
            SharedMethod.SharedMethod.sharedApp = application;
@@ -109,7 +113,7 @@
            }
            if (UIApplication.SharedApplication.ApplicationIconBadgeNumber > 0) {
                RemoteInfo.Current.ReadMsgList (NSUserDefaults.StandardUserDefaults.StringForKey ("PushDeviceToken"), true);
                //RemoteInfo.Current.ReadMsgList (NSUserDefaults.StandardUserDefaults.StringForKey ("PushDeviceToken"), true);
            }
            //if (UserConfig.Instance.SkinCode == 0) {
                application.StatusBarStyle = UIStatusBarStyle.DarkContent;
@@ -162,23 +166,23 @@
        public override void DidReceiveRemoteNotification (UIApplication application, NSDictionary userInfo, Action<UIBackgroundFetchResult> completionHandler)
        {
            Console.WriteLine ("DidReceiveRemoteNotification:" + application.ApplicationState.ToString ());
            Utlis.WriteLine ("DidReceiveRemoteNotification:" + application.ApplicationState.ToString ());
            UserConfig.Instance.SaveUserConfig ();
            RemoteInfo.Current.ReadMsgList (NSUserDefaults.StandardUserDefaults.StringForKey ("PushDeviceToken"),
                                            application.ApplicationState == UIApplicationState.Active ? true : false);
            //RemoteInfo.Current.ReadMsgList (NSUserDefaults.StandardUserDefaults.StringForKey ("PushDeviceToken"),
            //                                application.ApplicationState == UIApplicationState.Active ? true : false);
            UIApplication.SharedApplication.ApplicationIconBadgeNumber = 0;
        }
        public override void ReceivedRemoteNotification (UIApplication application, NSDictionary userInfo)
        {
            if (application.ApplicationState == UIApplicationState.Active) {
                Console.WriteLine ("ReceivedRemoteNotification1");
                Utlis.WriteLine ("ReceivedRemoteNotification1");
            } else if (application.ApplicationState == UIApplicationState.Background) {
                Console.WriteLine ("ReceivedRemoteNotification2");
                Utlis.WriteLine ("ReceivedRemoteNotification2");
            } else if (application.ApplicationState == UIApplicationState.Inactive) {
                Console.WriteLine ("ReceivedRemoteNotification3");
                Utlis.WriteLine ("ReceivedRemoteNotification3");
            }
            //string extKey1 = "PushResType"; 
@@ -188,38 +192,99 @@
        public override void OnResignActivation (UIApplication application)
        {
            Console.WriteLine ("OnResignActivation");
            Shared.BusSocket.Stop ();
            Utlis.WriteLine ("OnResignActivation");
            //Shared.BusSocket.Stop ();
            //BusSocketStop ();
        }
        public override void DidEnterBackground (UIApplication application)
        {
            SharedMethod.SharedMethod.IsBackground = true;
            Console.WriteLine ("DidEnterBackground");
            Utlis.WriteLine ("DidEnterBackground");
            BusSocketStop ();
        }
        public override void WillEnterForeground (UIApplication application)
        {
            SharedMethod.SharedMethod.IsBackground = false;
            Console.WriteLine ("WillEnterForeground");
            Utlis.WriteLine ("WillEnterForeground");
            //if (UIApplication.SharedApplication.ApplicationIconBadgeNumber > 0)
            //    RemoteInfo.Current.ReadMsgList (NSUserDefaults.StandardUserDefaults.StringForKey ("PushDeviceToken"), true);
            UIApplication.SharedApplication.ApplicationIconBadgeNumber = 0;
            // Called as part of the transiton from background to active state.
            // Here you can undo many of the changes made on entering the background.
            BusSocketStart ();
        }
        public override void WillTerminate (UIApplication application)
        {
            Console.WriteLine ("WillTerminate");
            Utlis.WriteLine ("WillTerminate");
            // Called when the application is about to terminate. Save data, if needed. See also DidEnterBackground.
        }
        public override void OnActivated (UIApplication application)
        {
            Console.WriteLine ("OnActivated");
            Utlis.WriteLine ("OnActivated");
            base.OnActivated (application);
            //BusSocketStart ();
            ////有些系统版本这里启动比视图控制器快
            //if (!Shared.SimpleControl.MainPage.Showed) {
            //    System.Threading.Tasks.Task.Run (() => {
            //        while (true) {
            //            System.Threading.Thread.Sleep (10);
            //            if (Shared.SimpleControl.MainPage.Showed) {
            //                break;
            //            }
            //        }
            //        Shared.Application.RunOnMainThread (() => {
            //            Shared.BusSocket.Start (6000);
            //            Shared.SimpleControl.EquipmentPublicClass.CheckLinkRemote ((int)Reachability.InternetConnectionStatus (),false);
            //            //RemoteInfo.Current.ReadMsgList (NSUserDefaults.StandardUserDefaults.StringForKey ("PushDeviceToken"), true);
            //            if (SmartHome.WiFiSet.refreshView != null) {
            //                SmartHome.WiFiSet.refreshView ();
            //            }
            //        });
            //    });
            //    return;
            //}
            //Shared.BusSocket.Start (6000);
            //Shared.SimpleControl.EquipmentPublicClass.CheckLinkRemote ((int)Reachability.InternetConnectionStatus (), false);
            //if (SmartHome.WiFiSet.refreshView != null) {
            //    SmartHome.WiFiSet.refreshView ();
            //}
            //com.freeview.global.Video.FVapplicationDidBecomeActive (application);
        }
        DateTime closeTime = DateTime.MinValue;
        /// <summary>
        /// BusSocketStop
        /// </summary>
        void BusSocketStop ()
        {
            //进入后台mqtt正在连接重置状态
            MqttCommon.remoteMqttIsConnecting = false;
            Shared.BusSocket.Stop ();
            closeTime = DateTime.Now;
        }
        /// <summary>
        /// BusSocketStart
        /// </summary>
        void BusSocketStart ()
        {
            if (closeTime == DateTime.MinValue) {
                closeTime = DateTime.Now;
            } else if (closeTime.AddSeconds (10) < DateTime.Now) {
                if (CommonPage.IsRemote) {
                    MqttCommon.DisConnectRemote ("closeTime", false);
                }
            }
            var netStatus = (int)Reachability.InternetConnectionStatus ();
            //有些系统版本这里启动比视图控制器快
            if (!Shared.SimpleControl.MainPage.Showed) {
                System.Threading.Tasks.Task.Run (() => {
@@ -231,23 +296,24 @@
                    }
                    Shared.Application.RunOnMainThread (() => {
                        Shared.BusSocket.Start (6000);
                        Shared.SimpleControl.EquipmentPublicClass.CheckLinkRemote ((int)Reachability.InternetConnectionStatus ());
                        RemoteInfo.Current.ReadMsgList (NSUserDefaults.StandardUserDefaults.StringForKey ("PushDeviceToken"), true);
                        Shared.SimpleControl.EquipmentPublicClass.CheckLinkRemote (netStatus, false);
                        //RemoteInfo.Current.ReadMsgList (true);
                        if (SmartHome.WiFiSet.refreshView != null) {
                            SmartHome.WiFiSet.refreshView ();
                        }
                    });
                });
                return;
            } else {
                Shared.BusSocket.Start (6000);
                Shared.SimpleControl.EquipmentPublicClass.CheckLinkRemote (netStatus, false);
                //RemoteInfo.Current.ReadMsgList (true);
            }
            Shared.BusSocket.Start (6000);
            Shared.SimpleControl.EquipmentPublicClass.CheckLinkRemote ((int)Reachability.InternetConnectionStatus ());
            if (SmartHome.WiFiSet.refreshView != null) {
                SmartHome.WiFiSet.refreshView ();
            }
            //com.freeview.global.Video.FVapplicationDidBecomeActive (application);
            if (netStatus == 0)
                return;
        }
    }
}