| | |
| | | using Shared; |
| | | using UIKit; |
| | | using UserNotifications; |
| | | using Microsoft.AppCenter; |
| | | using Microsoft.AppCenter.Analytics; |
| | | using Microsoft.AppCenter.Crashes; |
| | | using HDL_ON.UI; |
| | | using HDL_ON.DAL.Server; |
| | | |
| | | namespace SharedMethod |
| | | { |
| | |
| | | { |
| | | public static UIApplication sharedApp; |
| | | public static PageLayout CurPageLayout = null; |
| | | public static bool IsBackground; |
| | | //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") |
| | | // if (Shared.SimpleControl. UserInfo.Current.AccountString == @"464027401@qq.com") |
| | | // { |
| | | // return $"TestIsAppStoreVersionNewer : {UserConfig.Instance.IsAppStoreVersionNewer};; CurrentAppStoreVersion : {UserConfig.Instance.StoreVersion}"; |
| | | // } |
| | |
| | | //} |
| | | } |
| | | |
| | | |
| | | } |
| | | |
| | | 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 |
| | | public class AppDelegate : BaseApplicationDelegateForHdlOn// BaseApplicationDelegate |
| | | { |
| | | // class-level declarations |
| | | |
| | |
| | | // // If not required for your application you can safely delete this method |
| | | // return true; |
| | | //} |
| | | internal static UINavigationController rootViewController; |
| | | |
| | | public static void CleanApplicationIconBadgeNumber() |
| | | { |
| | |
| | | |
| | | // 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(); |
| | | //UserInfo.Current.PushDeviceToken = DeviceToken; |
| | | //UserInfo.Current.PhoneName = userPhoneName; |
| | | //UserInfo.Current.SaveUserInfo(); |
| | | OnAppConfig.Instance.PushDeviceToken = DeviceToken; |
| | | OnAppConfig.Instance.PhoneName = UIDevice.CurrentDevice.Name; |
| | | OnAppConfig.Instance.SaveConfig(); |
| | | } |
| | | if (UserConfig.Instance.PushDeviceToken != DeviceToken) |
| | | if (OnAppConfig.Instance.PushDeviceToken != DeviceToken) |
| | | { |
| | | string userPhoneName = UIDevice.CurrentDevice.Name; |
| | | UserConfig.Instance.PushDeviceToken = DeviceToken; |
| | | //UserConfig.Instance.phoneName = userPhoneName; |
| | | //UserConfig.Instance.SaveUserConfig(); |
| | | //string userPhoneName = UIDevice.CurrentDevice.Name; |
| | | //UserInfo.Current.PushDeviceToken = DeviceToken; |
| | | //UserInfo.Current.PhoneName = userPhoneName; |
| | | //UserInfo.Current.SaveUserInfo(); |
| | | OnAppConfig.Instance.PushDeviceToken = DeviceToken; |
| | | OnAppConfig.Instance.PhoneName = UIDevice.CurrentDevice.Name; |
| | | OnAppConfig.Instance.SaveConfig(); |
| | | } |
| | | } |
| | | |
| | |
| | | { |
| | | Console.WriteLine("DidReceiveRemoteNotification:" + application.ApplicationState.ToString()); |
| | | |
| | | UserConfig.Instance.SaveUserConfig(); |
| | | |
| | | //读取推送信息 |
| | | UIApplication.SharedApplication.ApplicationIconBadgeNumber = 0; |
| | | |
| | | if (userInfo == null) |
| | | { |
| | | return; |
| | | } |
| | | |
| | | Console.WriteLine(userInfo); |
| | | //HDLCommon.Current.ShowAlert("DidReceiveRemoteNotification:" + userInfo.ToString()); |
| | | |
| | | |
| | | if (application.ApplicationState == UIApplicationState.Active || application.ApplicationState == UIApplicationState.Background) |
| | | { |
| | | |
| | | HandleNotificationMessageUserInfo(userInfo, false); |
| | | } |
| | | else |
| | | { |
| | | //Inactive |
| | | HandleNotificationMessageUserInfo(userInfo, false); |
| | | |
| | | } |
| | | completionHandler(UIBackgroundFetchResult.NewData); |
| | | } |
| | | |
| | | public override void ReceivedRemoteNotification(UIApplication application, NSDictionary userInfo) |
| | |
| | | public override void OnResignActivation(UIApplication application) |
| | | { |
| | | Console.WriteLine("OnResignActivation"); |
| | | BusSocket.Stop(); |
| | | UserInfo.Current.unlockTime = DateTime.Now; |
| | | } |
| | | |
| | | public override void DidEnterBackground(UIApplication application) |
| | | { |
| | | SharedMethod.SharedMethod.IsBackground = true; |
| | | //SharedMethod.SharedMethod.IsBackground = true; |
| | | //MainPage.IsEnterBackground = true; |
| | | ////进入后台mqtt正在连接重置状态 |
| | | //HDL_ON.DAL.Mqtt.MqttClient.RemoteMqttIsConnecting = false; |
| | | //HDL_ON.DriverLayer.UdpSocket._BusSocket.Stop(); |
| | | //进入后台 |
| | | BusSocketStop(); |
| | | Console.WriteLine("DidEnterBackground"); |
| | | } |
| | | |
| | | |
| | | public override void WillEnterForeground(UIApplication application) |
| | | { |
| | | SharedMethod.SharedMethod.IsBackground = false; |
| | | BusSocket.Start(6000); |
| | | //回到前台,处理事件 |
| | | BusSocketStart(); |
| | | Console.WriteLine("WillEnterForeground"); |
| | | UIApplication.SharedApplication.ApplicationIconBadgeNumber = 0; |
| | | } |
| | | |
| | | public override void WillTerminate(UIApplication application) |
| | |
| | | { |
| | | Console.WriteLine("OnActivated"); |
| | | base.OnActivated(application); |
| | | //HDL_ON.DriverLayer.Control.Ins.SearchLoaclGateway(); |
| | | |
| | | //if (haveToSignOut == true) |
| | | //{ |
| | | ////强制下线 |
| | | //UserInfo.Current.LastTime = DateTime.MinValue; |
| | | //UserInfo.Current.headImagePagePath = "LoginIcon/2.png";//重置用户头像 |
| | | //UserInfo.Current.SaveUserInfo(); |
| | | //HDLCommon.Current.ShowAlert(Language.StringByID(StringId.LoggedOnOtherDevices)); |
| | | //} |
| | | |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 设置当前使用语言 |
| | | /// </summary> |
| | | void SetCurrentLanguage() |
| | | { |
| | | if (string.IsNullOrEmpty(OnAppConfig.Instance.SetLanguage)) |
| | | { |
| | | if (NSLocale.PreferredLanguages[0].Contains("zh-")) |
| | | { |
| | | Language.CurrentLanguage = "Chinese"; |
| | | } |
| | | else if (NSLocale.PreferredLanguages[0].Contains("cs-")) |
| | | { |
| | | Language.CurrentLanguage = "Czech"; |
| | | } |
| | | else |
| | | { |
| | | Language.CurrentLanguage = "English"; |
| | | } |
| | | } |
| | | else |
| | | { |
| | | Language.CurrentLanguage = OnAppConfig.Instance.SetLanguage; |
| | | } |
| | | } |
| | | |
| | | public override bool FinishedLaunching(UIApplication application, NSDictionary launchOptions) |
| | | { |
| | | //AppCenter.Start("b95f7814-49fb-4345-bac5-98e70d098252", typeof(Analytics), typeof(Crashes)); |
| | | SetCurrentLanguage(); |
| | | //Shared.Application.FontSize = 12; |
| | | //Bugly.Bugly.StartWithAppId("b58fb35436"); |
| | | //取消EditText默认密码输入方式 |
| | | //Shared.Application.IsEditTextContentTypePassword = false; |
| | | //默认使用苹方字体 |
| | | Shared.Application.IsUsePingFang = true; |
| | | //保持屏幕常亮或者自动锁屏 |
| | | application.IdleTimerDisabled = false; |
| | | base.FinishedLaunching(application, launchOptions); |
| | | |
| | | SharedMethod.SharedMethod.sharedApp = application; |
| | | Shared.Application.IsGpsEnable = false; |
| | | //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; |
| | | rootViewController = new UINavigationController(new ViewController()) { NavigationBarHidden = true }; |
| | | Window.RootViewController = rootViewController; |
| | | Window.MakeKeyAndVisible(); |
| | | |
| | | AppCenter.Start("e1add75a-82c6-4a5c-a902-4705b195748e", typeof(Analytics), typeof(Crashes)); |
| | | |
| | | SharedMethod.SharedMethod.sharedApp = application; |
| | | //NSString* nsCount = [[NSLocale currentLocale] objectForKey: NSLocaleCountryCode]; |
| | | application.StatusBarStyle = UIStatusBarStyle.DarkContent; |
| | | //window.AccessibilityNavigationStyle = UIAccessibilityNavigationStyle.Automatic; |
| | | // check for a notification |
| | | DealWithPushMes(launchOptions); |
| | | |
| | | //if (UIApplication.SharedApplication.ApplicationIconBadgeNumber > 0) |
| | | //{ |
| | | // //RemoteInfo.Current.ReadMsgList(true); |
| | | //} |
| | | |
| | | Console.WriteLine("FinishedLaunching"); |
| | | return true; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 处理通知消息 |
| | | /// </summary> |
| | | void HandleNotificationMessageUserInfo(NSDictionary userInfo, bool bFinishedLaunching) |
| | | { |
| | | try |
| | | { |
| | | if (userInfo.ContainsKey(new NSString("aps"))) |
| | | { |
| | | var aps = userInfo["aps"] as NSDictionary; |
| | | var alert = aps["alert"] as NSDictionary; |
| | | var body = alert["body"] as NSString; |
| | | var title = alert["title"] as NSString; |
| | | var expandData = ""; |
| | | var messageType = ""; |
| | | var expantContent = ""; |
| | | var homeId = ""; |
| | | if (userInfo.ContainsKey(new NSString("expandData"))) |
| | | { |
| | | var expandDataStr = userInfo["expandData"] as NSString; |
| | | if(expandDataStr == null) |
| | | { |
| | | var expandDataNSD = userInfo["expandData"] as NSDictionary; |
| | | if (expandDataNSD != null) |
| | | { |
| | | expandData = expandDataNSD.ToString(); |
| | | if(expandDataNSD.ContainsKey(new NSString("messageType"))){ |
| | | messageType = expandDataNSD["messageType"] as NSString; |
| | | Utlis.WriteLine("messageType: " + messageType); |
| | | } |
| | | |
| | | if (expandDataNSD.ContainsKey(new NSString("expantContent"))) |
| | | { |
| | | expantContent = expandDataNSD["expantContent"] as NSString; |
| | | Utlis.WriteLine("expantContent: " + expantContent); |
| | | } |
| | | |
| | | if (expandDataNSD.ContainsKey(new NSString("homeId"))) |
| | | { |
| | | homeId = expandDataNSD["homeId"].ToString(); |
| | | Utlis.WriteLine("homeId: " + homeId); |
| | | } |
| | | |
| | | } |
| | | } |
| | | else |
| | | { |
| | | expandData = expandDataStr; |
| | | } |
| | | |
| | | } |
| | | var pushMes = new JPushMessageInfo() |
| | | { |
| | | HomeId = homeId, |
| | | Title = title, |
| | | Content = body, |
| | | Extras = expandData, |
| | | messageType = messageType, |
| | | expantContent = expantContent |
| | | }; |
| | | Utlis.WriteLine("PushMes title : " + pushMes.Title); |
| | | Utlis.WriteLine("PushMes message : " + pushMes.Content); |
| | | Utlis.WriteLine("PushMes extras : " + pushMes.Extras); |
| | | |
| | | if (bFinishedLaunching) |
| | | { |
| | | if (pushMes.Extras != null) |
| | | { |
| | | if (pushMes.Extras.Contains("OffLine")) |
| | | { |
| | | //haveToSignOut = true; |
| | | //强制下线 |
| | | UserInfo.Current.LastTime = DateTime.MinValue; |
| | | UserInfo.Current.headImagePagePath = "LoginIcon/2.png";//重置用户头像 |
| | | UserInfo.Current.SaveUserInfo(); |
| | | HDLCommon.Current.ShowAlert(Language.StringByID(StringId.LoggedOnOtherDevices)); |
| | | } |
| | | else |
| | | { |
| | | HDLCommon.Current.AdjustPushMessage(pushMes); |
| | | } |
| | | } |
| | | } |
| | | else |
| | | { |
| | | HDLCommon.Current.AdjustPushMessage(pushMes); |
| | | } |
| | | |
| | | } |
| | | } |
| | | catch |
| | | { |
| | | //HDLCommon.Current.ShowAlert("catch2222"); |
| | | } |
| | | } |
| | | |
| | | ///// <summary> |
| | | ///// 退出登录标记 |
| | | ///// </summary> |
| | | //bool haveToSignOut; |
| | | /// <summary> |
| | | /// 启动APP 处理通知 |
| | | /// </summary> |
| | | /// <param name="launchOptions"></param> |
| | | void DealWithPushMes(NSDictionary launchOptions) |
| | | { |
| | | //haveToSignOut = false; |
| | | if (launchOptions != null) |
| | | { |
| | | // check for a remote notification |
| | | if (launchOptions.ContainsKey(UIApplication.LaunchOptionsRemoteNotificationKey)) |
| | | { |
| | | NSDictionary userInfo = launchOptions[UIApplication.LaunchOptionsRemoteNotificationKey] as NSDictionary; |
| | | |
| | | NSDictionary remoteNotification = launchOptions[UIApplication.LaunchOptionsRemoteNotificationKey] as NSDictionary; |
| | | if (remoteNotification != null) |
| | | if (userInfo != null) |
| | | { |
| | | //UIApplication.SharedApplication.ApplicationIconBadgeNumber = 0; |
| | | //HandleNotificationMessageUserInfo(userInfo, true); |
| | | |
| | | } |
| | | } |
| | | } |
| | | 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); |
| | | } |
| | | application.StatusBarStyle = UIStatusBarStyle.Default; |
| | | |
| | | //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; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 进入后台的时间 |
| | | /// </summary> |
| | | DateTime CloseTime = DateTime.Now; |
| | | |
| | | /// <summary> |
| | | /// 进入后台处理时间 |
| | | /// BusSocketStop |
| | | /// </summary> |
| | | void BusSocketStop() |
| | | { |
| | | //SharedMethod.SharedMethod.IsBackground = true; |
| | | CloseTime = DateTime.Now; |
| | | MainPage.IsEnterBackground = true; |
| | | //进入后台mqtt正在连接重置状态 |
| | | HDL_ON.DAL.Mqtt.MqttClient.RemoteMqttIsConnecting = false; |
| | | HDL_ON.DriverLayer.UdpSocket._BusSocket.Stop(); |
| | | |
| | | } |
| | | |
| | | |
| | | /// <summary> |
| | | /// 回到前台,处理事件 |
| | | /// </summary> |
| | | void BusSocketStart() |
| | | { |
| | | if (CloseTime.AddSeconds(10) < DateTime.Now) |
| | | { |
| | | //后台超过10s就断开MQTT重连 |
| | | //if (HDL_ON.DriverLayer.Control.Ins.IsRemote) |
| | | { |
| | | HDL_ON.DAL.Mqtt.MqttClient.DisConnectRemote("closeTime", false); |
| | | } |
| | | } |
| | | |
| | | MainPage.IsEnterBackground = false; |
| | | HDL_ON.DriverLayer.UdpSocket._BusSocket.Start(); |
| | | new AppUnlockPage().LoadPage(); |
| | | UIApplication.SharedApplication.ApplicationIconBadgeNumber = 0; |
| | | HDL_ON.DriverLayer.Control.Ins.SearchLoaclGateway(); |
| | | } |
| | | |
| | | } |
| | | |
| | | } |
| | | |