From dfd3bdc07c49fab66b38382e0bbe7c91bdf4f15b Mon Sep 17 00:00:00 2001
From: xm <1271024303@qq.com>
Date: 星期二, 28 四月 2020 15:03:43 +0800
Subject: [PATCH] 合并新代码,提供逻辑需要的门锁接口
---
ZigbeeApp/Home.Ios/AppDelegate.cs | 331 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 331 insertions(+), 0 deletions(-)
diff --git a/ZigbeeApp/Home.Ios/AppDelegate.cs b/ZigbeeApp/Home.Ios/AppDelegate.cs
new file mode 100644
index 0000000..fc43236
--- /dev/null
+++ b/ZigbeeApp/Home.Ios/AppDelegate.cs
@@ -0,0 +1,331 @@
+锘縰sing System;
+using Foundation;
+using Microsoft.AppCenter;
+using Microsoft.AppCenter.Analytics;
+using Microsoft.AppCenter.Crashes;
+using Shared;
+using Shared.Common;
+using Shared.IOS.TBL;
+using UIKit;
+
+namespace Home.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;
+ Shared.Application.IsUsePingFang = true;
+ Window = new UIWindow(UIScreen.MainScreen.Bounds);
+ rootViewController = new UINavigationController(new GateWay.Ios.MainViewController()) { NavigationBarHidden = true };
+ Window.RootViewController = rootViewController;
+ Window.MakeKeyAndVisible();
+
+ Shared.IOS.TBL.WXApi.RegisterApp("wx2ec8f53f6fa36e82", "https://hdlcontrol.com/ZigbeeApp/");
+
+ 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);
+ }
+
+ public static Action<string> RespAction;
+ public static void WXLogin()
+ {
+
+
+ var req = new SendAuthReq { Scope = "snsapi_userinfo", State = "ZigbeeApp", OpenID = "0c806938e2413ce73eef92cc3" };
+ WXApi.SendAuthReq(req, rootViewController, null, null);
+
+ }
+
+ MyWXApiDelegate myWXApiDelegate = new MyWXApiDelegate { };
+
+ class MyWXApiDelegate : WXApiDelegate
+ {
+ public override void OnReq(BaseReq req)
+ {
+
+ }
+ public override void OnResp(BaseResp resp)
+ {
+ if (resp is SendAuthResp)
+ {
+ var sendAuthResp = resp as SendAuthResp;
+ switch (sendAuthResp.ErrCode)
+ {
+ case 0:
+ try
+ {
+ var result = new System.Net.WebClient { }.DownloadString($"https://api.weixin.qq.com/sns/oauth2/access_token?appid=wx2ec8f53f6fa36e82&secret=a08585cd6ff2ce64570b9e7e6525dd8e&code={((SendAuthResp)resp).Code}&grant_type=authorization_code");
+ RespAction?.Invoke(result);
+ }
+ catch
+ {
+ RespAction?.Invoke(null);
+ }
+ break;
+ default:
+ RespAction?.Invoke(null);
+ break;
+ }
+
+ }
+ }
+ }
+ public override bool ContinueUserActivity(UIApplication application, NSUserActivity userActivity, UIApplicationRestorationHandler completionHandler)
+ {
+ return WXApi.HandleOpenUniversalLink(userActivity, myWXApiDelegate);
+ }
+ }
+}
+
+namespace Shared
+{
+ public static class QRCode
+ {
+ static ZXing.Mobile.MobileBarcodeScanner scanner;
+ public static async System.Threading.Tasks.Task ScanQRcode(Action<string> action, string cancel = "鍙栨秷", string flashText = "闂厜鐏�", string titleText = "浜岀淮鐮佹壂鎻�")
+ {
+ if (scanner == null)
+ {
+ var mZXingOverlayView = new Home.IOS.ZXingOverlayView(cancel, flashText, titleText);
+ scanner = new ZXing.Mobile.MobileBarcodeScanner(Home.IOS.AppDelegate.rootViewController) { FlashButtonText = flashText, TopText = titleText, BottomText = "", CancelButtonText = cancel };
+ scanner.UseCustomOverlay = true;
+
+ scanner.CustomOverlay = mZXingOverlayView;
+ var bOn = false;
+ mZXingOverlayView.OnCancel += () => {
+
+ scanner?.Cancel();
+ };
+
+ mZXingOverlayView.OnTorch += () =>
+ {
+ bOn = !bOn;
+ scanner?.Torch(bOn);
+ };
+
+ }
+
+ 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 = 0
+ }
+ };
+
+ 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;
+ }
+ }
+}
\ No newline at end of file
--
Gitblit v1.8.0