/* using System; using Foundation; using Microsoft.AppCenter; using Microsoft.AppCenter.Analytics; using Microsoft.AppCenter.Crashes; using Shared; using UIKit; namespace SharedMethod { public static class SharedMethod { public static UIApplication sharedApp; public static PageLayout CurPageLayout = null; public static bool IsBackground; } } namespace ON.Ios { // 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 override UIWindow Window { get; set; } //public override UIInterfaceOrientationMask GetSupportedInterfaceOrientations (UIApplication application, UIWindow forWindow) //{ // if (UIDevice.CurrentDevice.UserInterfaceIdiom == UIUserInterfaceIdiom.Phone) { // return UIInterfaceOrientationMask.Portrait; // } else { // return UIInterfaceOrientationMask.LandscapeRight | UIInterfaceOrientationMask.Portrait; // } //} //class MyUINavigationController : UINavigationController //{ // public MyUINavigationController (UIViewController viewController) : base (viewController) { } // public override UIInterfaceOrientationMask GetSupportedInterfaceOrientations () // { // if (UIDevice.CurrentDevice.UserInterfaceIdiom == UIUserInterfaceIdiom.Pad) { // UIApplication.SharedApplication.SetStatusBarOrientation (UIInterfaceOrientation.LandscapeRight, false); // return UIInterfaceOrientationMask.LandscapeRight; // } else { // return UIInterfaceOrientationMask.Portrait; // } // } //} //public override UIInterfaceOrientationMask GetSupportedInterfaceOrientations (UIApplication application, UIWindow forWindow) //{ // if (UIDevice.CurrentDevice.UserInterfaceIdiom == UIUserInterfaceIdiom.Pad) { // return UIInterfaceOrientationMask.LandscapeRight; // } else { // return UIInterfaceOrientationMask.LandscapeRight | UIInterfaceOrientationMask.Portrait; // } //} public override bool FinishedLaunching (UIApplication application, NSDictionary launchOptions) { AppCenter.Start ("b95f7814-49fb-4345-bac5-98e70d098252", typeof (Analytics), typeof (Crashes)); Console.WriteLine ("FinishedLaunching"); base.FinishedLaunching (application, launchOptions); //FinishedLaunchingAction?.Invoke (application, launchOptions); SharedMethod.SharedMethod.sharedApp = application; //NSString* nsCount = [[NSLocale currentLocale] objectForKey: NSLocaleCountryCode]; //string nsCount = NSLocale.CurrentLocale.CountryCode; //if (nsCount != UserConfig.Instance.CountryCode) { // UserConfig.Instance.CountryCode = nsCount; // UserConfig.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 (); if (launchOptions != null) { if (launchOptions.ContainsKey (UIApplication.LaunchOptionsRemoteNotificationKey)) { NSDictionary remoteNotification = launchOptions [UIApplication.LaunchOptionsRemoteNotificationKey] as NSDictionary; if (remoteNotification != null) { } } } if (UIDevice.CurrentDevice.CheckSystemVersion (8, 0)) { var notificationSettings = UIUserNotificationSettings.GetSettingsForTypes (UIUserNotificationType.Alert | UIUserNotificationType.Badge | UIUserNotificationType.Sound, null); application.RegisterUserNotificationSettings (notificationSettings); application.RegisterForRemoteNotifications (); } else { UIRemoteNotificationType notificationTypes = UIRemoteNotificationType.Alert | UIRemoteNotificationType.Badge; UIApplication.SharedApplication.RegisterForRemoteNotificationTypes (notificationTypes); } return true; } //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)) { // //TODO: Put your own logic here to notify your server that the device token has changed/been created! // // Save new device token // NSUserDefaults.StandardUserDefaults.SetString (DeviceToken, "PushDeviceToken"); // string userPhoneName = UIDevice.CurrentDevice.Name; // UserConfig.Instance.tokenID = DeviceToken; // UserConfig.Instance.phoneName = userPhoneName; // UserConfig.Instance.SaveUserConfig (); //} //if (UserConfig.Instance.tokenID != DeviceToken) { // string userPhoneName = UIDevice.CurrentDevice.Name; // UserConfig.Instance.tokenID = DeviceToken; // UserConfig.Instance.phoneName = userPhoneName; // UserConfig.Instance.SaveUserConfig (); //} //} //public override void DidReceiveRemoteNotification (UIApplication application, NSDictionary userInfo, Action completionHandler) //{ // Console.WriteLine ("DidReceiveRemoteNotification:" + application.ApplicationState.ToString ()); // UserConfig.Instance.SaveUserConfig (); // UIApplication.SharedApplication.ApplicationIconBadgeNumber = 0; //} //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"); // } //} DateTime closeTime = DateTime.MinValue; public override void OnResignActivation (UIApplication application) { Console.WriteLine ("OnResignActivation"); Shared.BusSocket.Stop (); closeTime = DateTime.Now; } public override void DidEnterBackground (UIApplication application) { SharedMethod.SharedMethod.IsBackground = true; Console.WriteLine ("DidEnterBackground"); } public override void WillEnterForeground (UIApplication application) { SharedMethod.SharedMethod.IsBackground = false; Console.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. } public override void WillTerminate (UIApplication application) { Console.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"); base.OnActivated (application); if (closeTime == DateTime.MinValue) { closeTime = DateTime.Now; } else if (closeTime.AddMinutes (2) > DateTime.Now) { // MqttCommon.DisConnectRemoteMqttClient (); } var netStatus = (int)Reachability.InternetConnectionStatus (); //有些系统版本这里启动比视图控制器快 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); if (SmartHome.WiFiSet.refreshView != null) { SmartHome.WiFiSet.refreshView (); } }); }); return; } else { Shared.BusSocket.Start (6000); } if (SmartHome.WiFiSet.refreshView != null) { SmartHome.WiFiSet.refreshView (); } if (netStatus == 0) return; } } } */ using System; using System.Net; using System.Text; using Foundation; using Microsoft.AppCenter; using Microsoft.AppCenter.Analytics; using Microsoft.AppCenter.Crashes; using Newtonsoft.Json.Linq; using Shared; using Shared.SimpleControl; using UIKit; namespace SharedMethod { public static class SharedMethod { public static UIApplication sharedApp; public static PageLayout CurPageLayout = null; public static bool IsBackground; } } namespace ON.Ios { [Register ("AppDelegate")] public class AppDelegate : BaseApplicationDelegate { public override UIWindow Window { get; set; } public override bool FinishedLaunching (UIApplication application, NSDictionary launchOptions) { AppCenter.Start ("b95f7814-49fb-4345-bac5-98e70d098252", typeof (Analytics), typeof (Crashes)); Console.WriteLine ("FinishedLaunching"); base.FinishedLaunching (application, launchOptions); SharedMethod.SharedMethod.sharedApp = application; //NSString* nsCount = [[NSLocale currentLocale] objectForKey: NSLocaleCountryCode]; string nsCount = NSLocale.CurrentLocale.CountryCode; if (nsCount != UserConfig.Instance.CountryCode) { UserConfig.Instance.CountryCode = nsCount; UserConfig.Instance.SaveUserConfig (); } application.IdleTimerDisabled = true; Window = new UIWindow (UIScreen.MainScreen.Bounds); var Root = new UINavigationController (new ViewController ()) { NavigationBarHidden = true }; Window.RootViewController = Root; Window.MakeKeyAndVisible (); return true; } public static void CleanApplicationIconBadgeNumber () { UIApplication.SharedApplication.ApplicationIconBadgeNumber = 0; } DateTime closeTime = DateTime.MinValue; public override void OnResignActivation (UIApplication application) { Console.WriteLine ("OnResignActivation"); Shared.BusSocket.Stop (); closeTime = DateTime.Now; } public override void DidEnterBackground (UIApplication application) { SharedMethod.SharedMethod.IsBackground = true; Console.WriteLine ("DidEnterBackground"); } public override void WillEnterForeground (UIApplication application) { SharedMethod.SharedMethod.IsBackground = false; Console.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. } public override void WillTerminate (UIApplication application) { Console.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"); base.OnActivated (application); if (closeTime == DateTime.MinValue) { closeTime = DateTime.Now; } else if (closeTime.AddMinutes (2) > DateTime.Now) { // MqttCommon.DisConnectRemoteMqttClient (); } var netStatus = (int)Reachability.InternetConnectionStatus (); //有些系统版本这里启动比视图控制器快 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); if (SmartHome.WiFiSet.refreshView != null) { SmartHome.WiFiSet.refreshView (); } }); }); return; } else { Shared.BusSocket.Start (6000); } if (SmartHome.WiFiSet.refreshView != null) { SmartHome.WiFiSet.refreshView (); } if (netStatus == 0) return; } } }