using System; using Foundation; using HDL_ON; using Shared; using UIKit; using UserNotifications; using Microsoft.AppCenter; using Microsoft.AppCenter.Analytics; using Microsoft.AppCenter.Crashes; using HDL_ON.UI; 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 : BaseApplicationDelegateForHdlOn// 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; //} internal 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)) { //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; OnAppConfig.Instance.PushDeviceToken = DeviceToken; //UserConfig.Instance.phoneName = userPhoneName; //UserConfig.Instance.SaveUserConfig(); } if (OnAppConfig.Instance.PushDeviceToken != DeviceToken) { string userPhoneName = UIDevice.CurrentDevice.Name; OnAppConfig.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()); //读取推送信息 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"); OnAppConfig.Instance.unlockTime = DateTime.Now; //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(); new AppUnlockPage().LoadPage(); 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) { //Shared.Application.FontSize = 12; //Shared.Application.IsUsePingFang = true; Window = new UIWindow(UIScreen.MainScreen.Bounds); rootViewController = new UINavigationController(new ViewController()) { NavigationBarHidden = true }; Window.RootViewController = rootViewController; Window.MakeKeyAndVisible(); AppCenter.Start("e1add75a-82c6-4a5c-a902-4705b195748e",typeof(Analytics), typeof(Crashes)); base.FinishedLaunching(application, launchOptions); SharedMethod.SharedMethod.sharedApp = application; //NSString* nsCount = [[NSLocale currentLocale] objectForKey: NSLocaleCountryCode]; application.StatusBarStyle = UIStatusBarStyle.DarkContent; string nsCount = NSLocale.CurrentLocale.CountryCode; if (MainPage.LoginUser != null && nsCount != MainPage.LoginUser.areaCode.ToString()) { int.TryParse(nsCount,out MainPage.LoginUser.areaCode); OnAppConfig.Instance.SaveUserConfig(); } application.IdleTimerDisabled = true; application.RegisterForRemoteNotificationTypes(UIRemoteNotificationType.Alert | UIRemoteNotificationType.Badge | UIRemoteNotificationType.Sound); //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; } } }