using System; using AdSupport; using com.hdl.on; using Foundation; using Microsoft.AppCenter; using Microsoft.AppCenter.Analytics; using Microsoft.AppCenter.Crashes; using Shared; using UIKit; using UserNotifications; namespace SharedMethod { public static class SharedMethod { public static UIApplication sharedApp; public static void ChangeSkin () { if (UserConfig.Instance.SkinCode == 0) { sharedApp.StatusBarStyle = UIStatusBarStyle.LightContent; } else if (UserConfig.Instance.SkinCode == 1) { sharedApp.StatusBarStyle = UIStatusBarStyle.Default; } } 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 : BaseApplicationDelegateForHdlOn { 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 ("44cbdfbf-d33e-4e92-a795-1c4452e54d3e", typeof (Analytics), typeof (Crashes)); Console.WriteLine ("FinishedLaunching"); base.FinishedLaunching (application, launchOptions); SharedMethod.SharedMethod.sharedApp = application; 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) { // check for a remote notification if (launchOptions.ContainsKey (UIApplication.LaunchOptionsRemoteNotificationKey)) { NSDictionary remoteNotification = launchOptions [UIApplication.LaunchOptionsRemoteNotificationKey] as NSDictionary; if (remoteNotification != null) { //UIApplication.SharedApplication.ApplicationIconBadgeNumber = 0; } } } 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 (NSUserDefaults.StandardUserDefaults.StringForKey ("PushDeviceToken"), true); } //if (UserConfig.Instance.SkinCode == 0) { application.StatusBarStyle = UIStatusBarStyle.DarkContent; Shared.Application.Skin = "Phone2"; //} else if (UserConfig.Instance.SkinCode == 1) { // application.StatusBarStyle = UIStatusBarStyle.Default; // Shared.Application.Skin = UserConfig.Instance.CurrentSkinName; //} SkinStyle.Current.ChangeColor (); return true; } public static void CleanApplicationIconBadgeNumber () { UIApplication.SharedApplication.ApplicationIconBadgeNumber = 0; } public override void RegisteredForRemoteNotifications (UIApplication application, NSData deviceToken) { /// Get current device token var DeviceToken = deviceToken.Description; 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 (); 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"); } else if (application.ApplicationState == UIApplicationState.Background) { Console.WriteLine ("ReceivedRemoteNotification2"); } else if (application.ApplicationState == UIApplicationState.Inactive) { Console.WriteLine ("ReceivedRemoteNotification3"); } //string extKey1 = "PushResType"; //NSString extValue1 = userInfo.ValueForKey ((NSString)extKey1); } public override void OnResignActivation (UIApplication application) { Console.WriteLine ("OnResignActivation"); Shared.BusSocket.Stop (); } 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 (!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 ()); 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 ()); if (SmartHome.WiFiSet.refreshView != null) { SmartHome.WiFiSet.refreshView (); } //com.freeview.global.Video.FVapplicationDidBecomeActive (application); } } }