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;
|
using Harpy;
|
using SmartHome;
|
using Shared.SimpleControl;
|
|
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;
|
|
public static string CheckVersion ()
|
{
|
Console.WriteLine ("检查更新!!!!!!!!!!!!!");
|
//return "";
|
//var mainBundle = new NSBundle ();
|
//NSDictionary infoDictionary = mainBundle.InfoDictionary;CFBundleShortVersionString
|
//NSString appCurVersionNum = infoDictionary.ObjectForKey (@"CFBundleVersion");
|
|
string curVersion = NSBundle.MainBundle.InfoDictionary ["CFBundleShortVersionString"].ToString ();
|
|
Harpy.Harpy.SharedInstance.CheckVersion ();
|
//string url = "http://intercom.hdlcontrol.com/AppDownload/apk/hdlon.json";//获取下载文件的路径
|
//try {
|
// var result = new System.Net.WebClient { }.DownloadData (url);
|
// if (result != null) {
|
// var sss = Newtonsoft.Json.JsonConvert.DeserializeObject<Shared.SimpleControl.Phone.UpdateAppInfo> (System.Text.Encoding.UTF8.GetString (result));
|
// curVersion = sss.CodeIDString;
|
// switch (sss.UpdateVersionType_IOS) {
|
// case Shared.SimpleControl.Phone.UpdateVersionType.None:
|
// curVersion = "999999";
|
// break;
|
// case Shared.SimpleControl.Phone.UpdateVersionType.Option:
|
// Harpy.Harpy.SharedInstance.AlertType = HarpyAlertType.Option;
|
// break;
|
// case Shared.SimpleControl.Phone.UpdateVersionType.Force:
|
// Harpy.Harpy.SharedInstance.AlertType = HarpyAlertType.Force;
|
// break;
|
// }
|
// }
|
//} catch (Exception ex) {
|
// Console.WriteLine ("System.Net.WebClient { }.DownloadData (url) : " + ex.Message);
|
//}
|
|
//if (!string.IsNullOrEmpty (Harpy.Harpy.SharedInstance.CurrentAppStoreVersion)) {
|
// try {
|
// MainPage.IsAppStoreVersionNewer = Convert.ToDouble (curVersion) > Convert.ToDouble (Harpy.Harpy.SharedInstance.CurrentAppStoreVersion);
|
// } catch {
|
// MainPage.IsAppStoreVersionNewer = true;
|
// }
|
//} else {
|
// new System.Threading.Thread (() => {
|
// System.Threading.Thread.Sleep (2000);
|
// CheckVersion ();
|
// }) { IsBackground = true }.Start ();
|
//}
|
//try {
|
// if (MainPage.LoginUser != null) {
|
// if (Shared.SimpleControl.MainPage.LoginUser.AccountString == @"464027401@qq.com") {
|
// return $"TestIsAppStoreVersionNewer : {MainPage.IsAppStoreVersionNewer};; CurrentAppStoreVersion : {Harpy.Harpy.SharedInstance.CurrentAppStoreVersion}";
|
// } else {
|
// return "";
|
// }
|
// }
|
//} catch {
|
//}
|
return "";
|
}
|
}
|
|
}
|
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 : BaseApplicationDelegate
|
{
|
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 ("b95f7814-49fb-4345-bac5-98e70d098252", typeof (Analytics), typeof (Crashes));
|
Console.WriteLine ("FinishedLaunching");
|
base.FinishedLaunching (application, launchOptions);
|
|
SharedMethod.SharedMethod.sharedApp = application;
|
|
//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;
|
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);
|
}
|
if (UserConfig.Instance.SkinCode == 0) {
|
application.StatusBarStyle = UIStatusBarStyle.LightContent;
|
Shared.Application.Skin = UserConfig.Instance.CurrentSkinName;
|
} else if (UserConfig.Instance.SkinCode == 1) {
|
application.StatusBarStyle = UIStatusBarStyle.Default;
|
Shared.Application.Skin = UserConfig.Instance.CurrentSkinName;
|
}
|
SkinStyle.Current.ChangeColor ();
|
|
|
Harpy.Harpy.SharedInstance.PresentingViewController = this.Window.RootViewController;
|
Harpy.Harpy.SharedInstance.WeakDelegate = this;
|
Harpy.Harpy.SharedInstance.AlertType = Harpy.HarpyAlertType.Option;
|
Harpy.Harpy.SharedInstance.DebugEnabled = false;
|
//Harpy.Harpy.SharedInstance.ForceLanguageLocalization = Harpy.Constants.HarpyLanguageChineseSimplified;
|
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.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<UIBackgroundFetchResult> completionHandler)
|
{
|
Console.WriteLine ("DidReceiveRemoteNotification:" + application.ApplicationState.ToString ());
|
|
UserConfig.Instance.SaveUserConfig ();
|
|
RemoteInfo.Current.ReadMsgList (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);
|
|
}
|
DateTime closeTime = DateTime.MinValue;
|
public override void OnResignActivation (UIApplication application)
|
{
|
Console.WriteLine ("OnResignActivation");
|
Shared.BusSocket.Stop ();
|
closeTime = DateTime.Now;
|
}
|
|
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 (closeTime == DateTime.MinValue) {
|
closeTime = DateTime.Now;
|
}else if (closeTime.AddMinutes (2) > DateTime.Now) {
|
// MqttCommon.DisConnectRemoteMqttClient ();
|
}
|
|
var netStatus = (int)Reachability.InternetConnectionStatus ();
|
//有些系统版本这里启动比视图控制器快
|
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 (netStatus);
|
RemoteInfo.Current.ReadMsgList (true);
|
if (SmartHome.WiFiSet.refreshView != null) {
|
SmartHome.WiFiSet.refreshView ();
|
}
|
});
|
});
|
return;
|
} else {
|
Shared.BusSocket.Start (6000);
|
Shared.SimpleControl.EquipmentPublicClass.CheckLinkRemote (netStatus);
|
RemoteInfo.Current.ReadMsgList (true);
|
}
|
if (SmartHome.WiFiSet.refreshView != null) {
|
SmartHome.WiFiSet.refreshView ();
|
}
|
if (netStatus == 0)
|
return;
|
|
//System.Threading.Tasks.Task.Run (() => {
|
// SharedMethod.SharedMethod.CheckVersion ();
|
//});
|
}
|
}
|
}
|