From 05ce435c3b58e53eeab04c672affdeeab75f3036 Mon Sep 17 00:00:00 2001 From: gxc <guoxuecheng@guoxuechengdeMacBook-Pro.local> Date: 星期五, 15 十一月 2019 14:41:39 +0800 Subject: [PATCH] 2019.11.15-1 --- ZigbeeApp/GateWay.Ios/AppDelegate.cs | 107 +++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 103 insertions(+), 4 deletions(-) diff --git a/ZigbeeApp/GateWay.Ios/AppDelegate.cs b/ZigbeeApp/GateWay.Ios/AppDelegate.cs old mode 100755 new mode 100644 index 71e2a0f..604e0e3 --- a/ZigbeeApp/GateWay.Ios/AppDelegate.cs +++ b/ZigbeeApp/GateWay.Ios/AppDelegate.cs @@ -8,6 +8,8 @@ using Microsoft.AppCenter; using Microsoft.AppCenter.Analytics; using Microsoft.AppCenter.Crashes; +using Shared.IOS.TBL; + namespace GateWay.Ios { // The UIApplicationDelegate for the application. This class is responsible for launching the @@ -23,14 +25,18 @@ set; } + internal static UINavigationController rootViewController; + public override bool FinishedLaunching(UIApplication application, NSDictionary launchOptions) { - base.FinishedLaunching(application, launchOptions); + //base.FinishedLaunching(application, launchOptions); Shared.Application.FontSize = 12; Window = new UIWindow(UIScreen.MainScreen.Bounds); - var root = new UINavigationController(new MainViewController()) { NavigationBarHidden = true }; - Window.RootViewController = root; + rootViewController = new UINavigationController(new MainViewController()) { NavigationBarHidden = true }; + Window.RootViewController = rootViewController; Window.MakeKeyAndVisible(); + + Shared.IOS.TBL.WXApi.RegisterApp("wx2ec8f53f6fa36e82", "https://hdlcontrol.com/ZigbeeApp/"); DeviceTokenAction += (deviceToken) => { @@ -208,7 +214,100 @@ // 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 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