HDL-ON_iOS/AppDelegate.cs
@@ -4,6 +4,10 @@
using Shared;
using UIKit;
using UserNotifications;
using Microsoft.AppCenter;
using Microsoft.AppCenter.Analytics;
using Microsoft.AppCenter.Crashes;
using HDL_ON.UI;
namespace SharedMethod
{
@@ -15,14 +19,11 @@
        //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}";
        //    }
@@ -40,7 +41,7 @@
    // 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
@@ -56,6 +57,7 @@
        //    // If not required for your application you can safely delete this method
        //    return true;
        //}
        internal static UINavigationController rootViewController;
        public static void CleanApplicationIconBadgeNumber()
        {
@@ -97,16 +99,16 @@
                NSUserDefaults.StandardUserDefaults.SetString(DeviceToken, "PushDeviceToken");
                string userPhoneName = UIDevice.CurrentDevice.Name;
                UserConfig.Instance.PushDeviceToken = DeviceToken;
                //UserConfig.Instance.phoneName = userPhoneName;
                //UserConfig.Instance.SaveUserConfig();
                OnAppConfig.Instance.PushDeviceToken = DeviceToken;
                OnAppConfig.Instance.PhoneName = userPhoneName;
                OnAppConfig.Instance.SaveUserConfig();
            }
            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();
                OnAppConfig.Instance.PushDeviceToken = DeviceToken;
                OnAppConfig.Instance.PhoneName = userPhoneName;
                OnAppConfig.Instance.SaveUserConfig();
            }
        }
@@ -114,10 +116,104 @@
        {
            Console.WriteLine("DidReceiveRemoteNotification:" + application.ApplicationState.ToString());
            UserConfig.Instance.SaveUserConfig();
            //读取推送信息
            UIApplication.SharedApplication.ApplicationIconBadgeNumber = 0;
            if (userInfo == null)
            {
                return;
            }
            Console.WriteLine(userInfo);
            if (application.ApplicationState == UIApplicationState.Active || application.ApplicationState == UIApplicationState.Background)
            {
                NSString key_hiddenJson = new NSString("HiddenJson");
                if (userInfo.ContainsKey(key_hiddenJson))
                {
                    var hiddenJson = userInfo["HiddenJson"].ToString();
                    if (string.IsNullOrEmpty(hiddenJson))
                    {
                        return;
                    }
                    if (hiddenJson.Contains("cmtID"))
                    {
                        /////目前根据这个判断是否是可视对讲数据
                        //VideoMethod(hiddenJson);
                    }
                    else
                    {
                        NSDictionary hiddenJsonDic = userInfo["HiddenJson"] as NSDictionary;
                        if (hiddenJsonDic == null)
                        {
                            return;
                        }
                        NSString key_Offline = new NSString("Offline");
                        if (hiddenJsonDic.ContainsKey(key_Offline))
                        {
                            string signOut = hiddenJsonDic["Offline"].ToString();
                            if (signOut == "0")
                            {
                                //不下线
                            }
                            else
                            {
                                //强制下线
                                //CommonPage.Instance.SingOut();
                                HDLCommon.Current.ShowAlert(Language.StringByID(StringId.LoggedOnOtherDevices));
                            }
                        }
                    }
                }
            }
            else
            {
                NSString key_hiddenJson = new NSString("HiddenJson");
                if (userInfo.ContainsKey(key_hiddenJson))
                {
                    var hiddenJson = userInfo["HiddenJson"].ToString();
                    if (string.IsNullOrEmpty(hiddenJson))
                    {
                        return;
                    }
                    if (hiddenJson.Contains("cmtID"))
                    {
                        /////目前根据这个判断是否是可视对讲数据
                        //VideoMethod(hiddenJson);
                    }
                    else
                    {
                        NSDictionary hiddenJsonDic = userInfo["HiddenJson"] as NSDictionary;
                        if (hiddenJsonDic == null)
                        {
                            return;
                        }
                        NSString key_Offline = new NSString("Offline");
                        if (hiddenJsonDic.ContainsKey(key_Offline))
                        {
                            string signOut = hiddenJsonDic["Offline"].ToString();
                            if (signOut == "0")
                            {
                                //不下线
                            }
                            else
                            {
                                //标记下线
                                haveToSignOut = true;
                            }
                        }
                    }
                }
            }
            completionHandler(UIBackgroundFetchResult.NewData);
        }
        public override void ReceivedRemoteNotification(UIApplication application, NSDictionary userInfo)
@@ -143,7 +239,8 @@
        public override void OnResignActivation(UIApplication application)
        {
            Console.WriteLine("OnResignActivation");
            BusSocket.Stop();
            OnAppConfig.Instance.unlockTime = DateTime.Now;
            //BusSocket.Stop();
        }
        public override void DidEnterBackground(UIApplication application)
@@ -152,10 +249,12 @@
            Console.WriteLine("DidEnterBackground");
        }
        public override void WillEnterForeground(UIApplication application)
        {
            SharedMethod.SharedMethod.IsBackground = false;
            BusSocket.Start(6000);
            //BusSocket.Start();
            new AppUnlockPage().LoadPage();
            Console.WriteLine("WillEnterForeground");
            UIApplication.SharedApplication.ApplicationIconBadgeNumber = 0;
        }
@@ -169,45 +268,50 @@
        {
            Console.WriteLine("OnActivated");
            base.OnActivated(application);
            if (haveToSignOut == true)
            {
                //强制下线
                //CommonPage.Instance.SingOut();
                HDLCommon.Current.ShowAlert(Language.StringByID(StringId.LoggedOnOtherDevices));
            }
        }
        public override bool FinishedLaunching(UIApplication application, NSDictionary launchOptions)
        {
            //AppCenter.Start("b95f7814-49fb-4345-bac5-98e70d098252", typeof(Analytics), typeof(Crashes));
            //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;
            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();
            }
            //string nsCount = NSLocale.CurrentLocale.CountryCode;
            //if ( UserInfo.Current != null && nsCount !=  UserInfo.Current.areaCode.ToString())
            //{
            //    //int.TryParse(nsCount,out  UserInfo.Current.areaCode);
            //    //2020-11-18
            //     UserInfo.Current.areaCode = nsCount;
            //    OnAppConfig.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;
                    }
                }
            }
            DealWithPushMes(launchOptions);
            if (UIDevice.CurrentDevice.CheckSystemVersion(8, 0))
            {
                var notificationSettings = UIUserNotificationSettings.GetSettingsForTypes(UIUserNotificationType.Alert | UIUserNotificationType.Badge | UIUserNotificationType.Sound, null);
@@ -227,7 +331,6 @@
            {
                //RemoteInfo.Current.ReadMsgList(true);
            }
            application.StatusBarStyle = UIStatusBarStyle.Default;
            //Harpy.Harpy.SharedInstance.PresentingViewController = this.Window.RootViewController;
            //Harpy.Harpy.SharedInstance.WeakDelegate = this;
@@ -237,6 +340,74 @@
            Console.WriteLine("FinishedLaunching");
            return true;
        }
        /// <summary>
        /// 退出登录标记
        /// </summary>
        bool haveToSignOut;
        /// <summary>
        /// 处理通知
        /// </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;
                    if (userInfo != null)
                    {
                        NSString key_hiddenJson = new NSString("HiddenJson");
                        if (userInfo.ContainsKey(key_hiddenJson))
                        {
                            var hiddenJson = userInfo["HiddenJson"].ToString();
                            if (!string.IsNullOrEmpty(hiddenJson))
                            {
                                if (hiddenJson.Contains("cmtID"))
                                {
                                    ///目前根据这个判断是否是可视对讲数据
                                    // VideoMethod(hiddenJson);
                                }
                                else
                                {
                                    NSDictionary hiddenJsonDic = userInfo["HiddenJson"] as NSDictionary;
                                    if (hiddenJsonDic != null)
                                    {
                                        NSString key_Offline = new NSString("Offline");
                                        if (hiddenJsonDic.ContainsKey(key_Offline))
                                        {
                                            string signOut = hiddenJsonDic["Offline"].ToString();
                                            if (signOut == "0")
                                            {
                                                //不下线
                                            }
                                            else
                                            {
                                                //标记下线
                                                haveToSignOut = true;
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}