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");
|
|
//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 (OnAppConfig.Instance.PushDeviceToken != DeviceToken)
|
{
|
//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();
|
}
|
}
|
|
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);
|
//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)
|
{
|
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;
|
}
|
|
public override void DidEnterBackground(UIApplication application)
|
{
|
//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)
|
{
|
//回到前台,处理事件
|
BusSocketStart();
|
Console.WriteLine("WillEnterForeground");
|
}
|
|
public override void WillTerminate(UIApplication application)
|
{
|
Console.WriteLine("WillTerminate");
|
}
|
|
public override void OnActivated(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)
|
{
|
Console.WriteLine("111111111111");
|
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);
|
|
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));
|
|
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;
|
|
if (userInfo != null)
|
{
|
//HandleNotificationMessageUserInfo(userInfo, 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();
|
}
|
|
}
|
|
}
|