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;
|
using HDL_ON.DAL.Server;
|
|
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. UserInfo.Current.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;
|
|
UserInfo.Current.PushDeviceToken = DeviceToken;
|
UserInfo.Current.PhoneName = userPhoneName;
|
UserInfo.Current.SaveUserInfo();
|
}
|
if (UserInfo.Current.PushDeviceToken != DeviceToken)
|
{
|
string userPhoneName = UIDevice.CurrentDevice.Name;
|
UserInfo.Current.PushDeviceToken = DeviceToken;
|
UserInfo.Current.PhoneName = userPhoneName;
|
UserInfo.Current.SaveUserInfo();
|
}
|
}
|
|
public override void DidReceiveRemoteNotification(UIApplication application, NSDictionary userInfo, Action<UIBackgroundFetchResult> completionHandler)
|
{
|
Console.WriteLine("DidReceiveRemoteNotification:" + application.ApplicationState.ToString());
|
|
//读取推送信息
|
UIApplication.SharedApplication.ApplicationIconBadgeNumber = 0;
|
|
if (userInfo == null)
|
{
|
return;
|
}
|
|
Console.WriteLine(userInfo);
|
|
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)
|
{
|
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");
|
UserInfo.Current.unlockTime = DateTime.Now;
|
HDL_ON.DriverLayer.UdpSocket._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;
|
HDL_ON.DriverLayer.UdpSocket._BusSocket.Start();
|
new AppUnlockPage().LoadPage();
|
Console.WriteLine("WillEnterForeground");
|
UIApplication.SharedApplication.ApplicationIconBadgeNumber = 0;
|
HDL_ON.DriverLayer.Control.Ins.SearchLoaclGateway();
|
}
|
|
public override void WillTerminate(UIApplication application)
|
{
|
Console.WriteLine("WillTerminate");
|
}
|
|
public override void OnActivated(UIApplication application)
|
{
|
Console.WriteLine("OnActivated");
|
base.OnActivated(application);
|
Console.WriteLine("oooo...");
|
//if (haveToSignOut == true)
|
//{
|
////强制下线
|
//UserInfo.Current.LastTime = DateTime.MinValue;
|
//UserInfo.Current.headImagePagePath = "LoginIcon/2.png";//重置用户头像
|
//UserInfo.Current.SaveUserInfo();
|
//HDLCommon.Current.ShowAlert(Language.StringByID(StringId.LoggedOnOtherDevices));
|
//}
|
|
}
|
|
public override bool FinishedLaunching(UIApplication application, NSDictionary launchOptions)
|
{
|
|
//Shared.Application.FontSize = 12;
|
Shared.Application.IsEditTextContentTypePassword = false;
|
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 ( 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.AccessibilityNavigationStyle = UIAccessibilityNavigationStyle.Automatic;
|
// check for a notification
|
DealWithPushMes(launchOptions);
|
|
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;
|
}
|
|
/// <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 = "";
|
if (userInfo.ContainsKey(new NSString("expandData")))
|
{
|
var expandDataNSD = userInfo["expandData"] as NSDictionary;
|
expandData = expandDataNSD["messageType"] as NSString;
|
}
|
var pushMes = new JPushMessageInfo()
|
{
|
Title = title,
|
Content = body,
|
Extras = expandData,
|
};
|
System.Console.WriteLine("PushMes title : " + pushMes.Title);
|
System.Console.WriteLine("PushMes message : " + pushMes.Content);
|
System.Console.WriteLine("PushMes extras : " + pushMes.Extras);
|
|
if (bFinishedLaunching)
|
{
|
if (pushMes.Extras != null && 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);
|
}
|
|
}
|
}
|
catch
|
{
|
|
}
|
}
|
|
///// <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;
|
|
if (userInfo != null)
|
{
|
HandleNotificationMessageUserInfo(userInfo, true);
|
|
}
|
}
|
}
|
}
|
|
|
|
}
|
|
}
|