using System; using Foundation; using HDL_ON; using Shared; using UIKit; using UserNotifications; namespace SharedMethod { public static class SharedMethod { public static UIApplication sharedApp; public static PageLayout CurPageLayout = null; public static bool IsBackground; //public static string CheckVersion() //{ // Harpy.Harpy.SharedInstance.CheckVersion(); // UserConfig.Instance.IsAppStoreVersionNewer = Harpy.Harpy.SharedInstance.TestIsAppStoreVersionNewer; // UserConfig.Instance.StoreVersion = Harpy.Harpy.SharedInstance.CurrentAppStoreVersion; // UserConfig.Instance.SaveUserConfig(); // if (Shared.SimpleControl.MainPage.LoginUser.AccountString == @"464027401@qq.com") // { // return $"TestIsAppStoreVersionNewer : {UserConfig.Instance.IsAppStoreVersionNewer};; CurrentAppStoreVersion : {UserConfig.Instance.StoreVersion}"; // } // else // { // return ""; // } //} } } namespace HDL_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. [Register("AppDelegate")] public class AppDelegate : BaseApplicationDelegate { // class-level declarations public override UIWindow Window { get; set; } //public override bool FinishedLaunching(UIApplication application, NSDictionary launchOptions) //{ // // Override point for customization after application launch. // // If not required for your application you can safely delete this method // 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.PushDeviceToken = DeviceToken; //UserConfig.Instance.phoneName = userPhoneName; //UserConfig.Instance.SaveUserConfig(); } if (UserConfig.Instance.PushDeviceToken != DeviceToken) { string userPhoneName = UIDevice.CurrentDevice.Name; UserConfig.Instance.PushDeviceToken = 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"); } //string extKey1 = "PushResType"; //NSString extValue1 = userInfo.ValueForKey ((NSString)extKey1); } public override void OnResignActivation(UIApplication application) { Console.WriteLine("OnResignActivation"); 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; BusSocket.Start(6000); Console.WriteLine("WillEnterForeground"); UIApplication.SharedApplication.ApplicationIconBadgeNumber = 0; } public override void WillTerminate(UIApplication application) { Console.WriteLine("WillTerminate"); } public override void OnActivated(UIApplication application) { Console.WriteLine("OnActivated"); base.OnActivated(application); } public override bool FinishedLaunching(UIApplication application, NSDictionary launchOptions) { //AppCenter.Start("b95f7814-49fb-4345-bac5-98e70d098252", typeof(Analytics), typeof(Crashes)); base.FinishedLaunching(application, launchOptions); SharedMethod.SharedMethod.sharedApp = application; Shared.Application.IsGpsEnable = false; //NSString* nsCount = [[NSLocale currentLocale] objectForKey: NSLocaleCountryCode]; application.StatusBarStyle = UIStatusBarStyle.DarkContent; 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(); //window.AccessibilityNavigationStyle = UIAccessibilityNavigationStyle.Automatic; // check for a notification 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(true); } //Harpy.Harpy.SharedInstance.PresentingViewController = this.Window.RootViewController; //Harpy.Harpy.SharedInstance.WeakDelegate = this; //Harpy.Harpy.SharedInstance.AlertType = Harpy.HarpyAlertType.Skip; //Harpy.Harpy.SharedInstance.DebugEnabled = false; //Harpy.Harpy.SharedInstance.ForceLanguageLocalization = Harpy.Constants.HarpyLanguageChineseSimplified; Console.WriteLine("FinishedLaunching"); return true; } } }