From df30e8562e49b45e7a9a3497d368cebd6085be87 Mon Sep 17 00:00:00 2001
From: WJC <wjc@hdlchina.com.cn>
Date: 星期一, 30 十二月 2019 17:33:33 +0800
Subject: [PATCH] 2019-12-30-2
---
ZigbeeApp/GateWay.Ios/AppDelegate.cs | 263 ++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 263 insertions(+), 0 deletions(-)
diff --git a/ZigbeeApp/GateWay.Ios/AppDelegate.cs b/ZigbeeApp/GateWay.Ios/AppDelegate.cs
new file mode 100644
index 0000000..566871a
--- /dev/null
+++ b/ZigbeeApp/GateWay.Ios/AppDelegate.cs
@@ -0,0 +1,263 @@
+using Foundation;
+using UIKit;
+using Shared;
+using System;
+using ObjCRuntime;
+using UserNotifications;
+//using Shared.Common;
+using Microsoft.AppCenter;
+using Microsoft.AppCenter.Analytics;
+using Microsoft.AppCenter.Crashes;
+namespace GateWay.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 : BaseApplicationDelegate
+ {
+ public static bool haveToSignOut = false;
+ // class-level declarations
+ public override UIWindow Window
+ {
+ get;
+ set;
+ }
+
+ internal static UINavigationController rootViewController;
+
+ public override bool FinishedLaunching(UIApplication application, NSDictionary launchOptions)
+ {
+ //base.FinishedLaunching(application, launchOptions);
+ Shared.Application.FontSize = 12;
+ Window = new UIWindow(UIScreen.MainScreen.Bounds);
+ rootViewController = new UINavigationController(new MainViewController()) { NavigationBarHidden = true };
+ Window.RootViewController = rootViewController;
+ Window.MakeKeyAndVisible();
+
+ DeviceTokenAction += (deviceToken) =>
+ {
+
+ Shared.Common.Config.Instance.RegistrationID = deviceToken;
+ };
+ 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))
+ {
+ 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;
+ }
+ }
+
+ }
+ }
+
+ }
+ }
+ }
+ AppCenter.Start("0ca801a2-742b-42fb-ba10-7ba4391371aa", typeof(Analytics), typeof(Crashes));
+ GDMapKit.setGDApiKey("866fae25f336bc8d9a79b1d19267fffb");//楂樺痉鍦板浘key
+ return true;
+ }
+
+ public override void ReceivedLocalNotification(UIApplication application, UILocalNotification notification)
+ {
+
+ }
+ public override void DidReceiveRemoteNotification(UIApplication application, NSDictionary userInfo, Action<UIBackgroundFetchResult> completionHandler)
+ {
+ 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))
+ {
+ 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();
+ CommonPage.Instance.ShowErrorInfoAlert(Shared.R.MyInternationalizationString.YouHaveBeenSignOut);
+ }
+ }
+ }
+ }
+ else
+ {
+ NSString key_hiddenJson = new NSString("HiddenJson");
+ if (userInfo.ContainsKey(key_hiddenJson))
+ {
+ 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)
+ {
+ Console.WriteLine(userInfo);
+ if (application.ApplicationState == UIApplicationState.Active) {
+ System.Console.WriteLine ("ReceivedRemoteNotification1");
+ } else if (application.ApplicationState == UIApplicationState.Background) {
+ System.Console.WriteLine ("ReceivedRemoteNotification2");
+ } else if (application.ApplicationState == UIApplicationState.Inactive) {
+ System.Console.WriteLine ("ReceivedRemoteNotification3");
+ }
+ }
+
+ public override void OnResignActivation(UIApplication application)
+ {
+ // Invoked when the application is about to move from active to inactive state.
+ // This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message)
+ // or when the user quits the application and it begins the transition to the background state.
+ // Games should use this method to pause the game.
+ base.OnResignActivation(application);
+ }
+
+ public override void DidEnterBackground(UIApplication application)
+ {
+ // Use this method to release shared resources, save user data, invalidate timers and store the application state.
+ // If your application supports background exection this method is called instead of WillTerminate when the user quits.
+ //Shared.BusSocket.Stop ();On鍦ㄨ繖閲屽仠姝usSocket
+ ZigBee.Common.Application.FindGateWaySocket.Stop();
+ base.DidEnterBackground(application);
+ }
+
+ public override void WillEnterForeground(UIApplication application)
+ {
+ // Called as part of the transiton from background to active state.
+ // Here you can undo many of the changes made on entering the background.
+ System.Console.WriteLine ("WillEnterForeground");
+ UIApplication.SharedApplication.ApplicationIconBadgeNumber = 0;
+ base.WillEnterForeground(application);
+ }
+
+ public override void OnActivated(UIApplication application)
+ {
+ // Restart any tasks that were paused (or not yet started) while the application was inactive.
+ // If the application was previously in the background, optionally refresh the user interface.
+ base.OnActivated(application);
+
+ if(haveToSignOut==true)
+ {
+ //寮哄埗涓嬬嚎
+ CommonPage.Instance.SingOut();
+ CommonPage.Instance.ShowErrorInfoAlert(Shared.R.MyInternationalizationString.YouHaveBeenSignOut);
+ }
+ //妫�鏌ヨ繛鎺ヨ繙绋�
+ //浠g爜
+ }
+
+ public override void WillTerminate(UIApplication application)
+ {
+ // Called when the application is about to terminate. Save data, if needed. See also DidEnterBackground.
+ base.WillTerminate(application);
+ }
+ }
+}
+
+namespace Shared
+{
+ public static class QRCode
+ {
+ static ZXing.Mobile.MobileBarcodeScanner scanner;
+ public static async System.Threading.Tasks.Task ScanQRcode(Action<string> action, string topText = "", string bottomText = "", string cancel = "Cancel")
+ {
+ if (scanner == null)
+ {
+ scanner = new ZXing.Mobile.MobileBarcodeScanner(GateWay.Ios.AppDelegate.rootViewController) { FlashButtonText = "", TopText = topText, BottomText = bottomText, CancelButtonText = cancel };
+ }
+
+ var result = await scanner.Scan();
+
+ if (result != null)
+ action?.Invoke(result.Text);
+ else
+ action?.Invoke(null);
+ }
+
+ public static byte[] BytesFromText(string text, int width = 300, int height = 300)
+ {
+ var barcodeWriter = new ZXing.Mobile.BarcodeWriter
+ {
+ Format = ZXing.BarcodeFormat.QR_CODE,
+ Options = new ZXing.Common.EncodingOptions
+ {
+ Width = width,
+ Height = height,
+ Margin = 10
+ }
+ };
+
+ barcodeWriter.Renderer = new ZXing.Mobile.BitmapRenderer();
+ var uiImage = barcodeWriter.Write(text);
+ var data = uiImage.AsJPEG();
+
+ var resultBytes = new byte[data.Length];
+ System.Runtime.InteropServices.Marshal.Copy(data.Bytes, resultBytes, 0, resultBytes.Length);
+
+ return resultBytes;
+ }
+ }
+}
+
+
--
Gitblit v1.8.0