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;
|
|
|
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;
|
}
|
|
}
|
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 : BaseApplicationDelegateForHdlOn
|
{
|
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 ("44cbdfbf-d33e-4e92-a795-1c4452e54d3e", typeof (Analytics), typeof (Crashes));
|
Console.WriteLine ("FinishedLaunching");
|
base.FinishedLaunching (application, launchOptions);
|
|
|
SharedMethod.SharedMethod.sharedApp = application;
|
|
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 ();
|
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 (NSUserDefaults.StandardUserDefaults.StringForKey ("PushDeviceToken"), true);
|
}
|
//if (UserConfig.Instance.SkinCode == 0) {
|
application.StatusBarStyle = UIStatusBarStyle.DarkContent;
|
Shared.Application.Skin = "Phone2";
|
//} else if (UserConfig.Instance.SkinCode == 1) {
|
// application.StatusBarStyle = UIStatusBarStyle.Default;
|
// Shared.Application.Skin = UserConfig.Instance.CurrentSkinName;
|
//}
|
SkinStyle.Current.ChangeColor ();
|
|
return true;
|
}
|
|
|
public static void CleanApplicationIconBadgeNumber ()
|
{
|
UIApplication.SharedApplication.ApplicationIconBadgeNumber = 0;
|
}
|
|
public override void RegisteredForRemoteNotifications (UIApplication application, NSData deviceToken)
|
{
|
/// Get current device token
|
var DeviceToken = deviceToken.Description;
|
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 (NSUserDefaults.StandardUserDefaults.StringForKey ("PushDeviceToken"),
|
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);
|
|
}
|
|
public override void OnResignActivation (UIApplication application)
|
{
|
Console.WriteLine ("OnResignActivation");
|
Shared.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;
|
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 (!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 ((int)Reachability.InternetConnectionStatus ());
|
RemoteInfo.Current.ReadMsgList (NSUserDefaults.StandardUserDefaults.StringForKey ("PushDeviceToken"), true);
|
if (SmartHome.WiFiSet.refreshView != null) {
|
SmartHome.WiFiSet.refreshView ();
|
}
|
});
|
});
|
return;
|
}
|
Shared.BusSocket.Start (6000);
|
Shared.SimpleControl.EquipmentPublicClass.CheckLinkRemote ((int)Reachability.InternetConnectionStatus ());
|
if (SmartHome.WiFiSet.refreshView != null) {
|
SmartHome.WiFiSet.refreshView ();
|
}
|
|
|
//com.freeview.global.Video.FVapplicationDidBecomeActive (application);
|
}
|
}
|
}
|