From 2d414e3b007f750cdad4f9e4a7c04db696bca5e4 Mon Sep 17 00:00:00 2001
From: JLChen <551775569@qq.com>
Date: 星期四, 23 四月 2020 16:13:59 +0800
Subject: [PATCH] 2020-04-23 1.优化远程连接提示,改为Loading方案,防止连接过程用户点击重连图标。 2.点击网络检测图标会判断,是否正在远程连接,如果是,会弹窗提示用户”正在远程连接,是否仍要重新检测“。 3.Help 增加隐藏长按功能,长按后,可以开启远程过程异常弹窗提示。长按后关闭。

---
 Crabtree/SmartHome/UI/SimpleControl/MqttCommon.cs |   87 +++++++++++++++++++++++++++++++++----------
 1 files changed, 67 insertions(+), 20 deletions(-)

diff --git a/Crabtree/SmartHome/UI/SimpleControl/MqttCommon.cs b/Crabtree/SmartHome/UI/SimpleControl/MqttCommon.cs
index 0774a26..a2f8a98 100644
--- a/Crabtree/SmartHome/UI/SimpleControl/MqttCommon.cs
+++ b/Crabtree/SmartHome/UI/SimpleControl/MqttCommon.cs
@@ -17,6 +17,11 @@
 {
     public static class MqttCommon
     {
+        /// <summary>
+        /// 鏄惁鎻愮ず 杩滅▼杩炴帴鐨勯敊璇俊鎭� 
+        /// </summary>
+        public static bool IfDEBUG = false;
+
         static string mqttEncryptKey = "";
         static string checkGatewayTopicBase64 = "";
         static RemoteMACInfo CurRemoteMACInfo = null;
@@ -57,7 +62,7 @@
             new System.Threading.Thread (async () => {
                 while (true) {
                     try {
-                        System.Threading.Thread.Sleep (100);
+                        System.Threading.Thread.Sleep (200);
                         if (!CommonPage.IsRemote) continue;
 
                         await StartCloudMqtt ();
@@ -67,6 +72,15 @@
                 }
             }) { IsBackground = true }.Start ();
         }
+
+        public static void InitState ()
+        {
+            IfNeedReadAllDeviceStatus = true;
+            bNeedStartTip = true;
+            IsGatewayOnline = false;
+
+        }
+
 
         /// <summary>
         /// 鏄惁璁㈤槄鎴愬姛
@@ -135,7 +149,7 @@
                     if (CommonPage.IsRemote) {
                         Utlis.ShowAppLinkStatus (AppLinkStatus.CloudUnlink);
                     }
-                    Utlis.WriteLine ($"============>MqttRemoteDisConnectRemoteMqttClient");
+                    //Utlis.WriteLine ($"============>MqttRemoteDisConnectRemoteMqttClient");
 
                 }
             } catch (Exception e) {
@@ -153,7 +167,7 @@
         /// <summary>
         /// 澶栫綉鐨凪QTT鏄惁姝e湪杩炴帴
         /// </summary>
-        static bool remoteMqttIsConnecting;
+        public static bool remoteMqttIsConnecting;
         static bool remoteIsConnected;
         /// <summary>
         /// 鍚姩杩滅▼Mqtt
@@ -224,7 +238,7 @@
                     }
                     if (RemoteMqttClient.ConnectedHandler == null) {
                         RemoteMqttClient.UseConnectedHandler (async (e) => {
-                            IfNeedReadAllDeviceStatus = true;
+                            //IfNeedReadAllDeviceStatus = true;
                             mCheckGatewayTime = DateTime.Now;
                             CheckGatewayCount = 0;
                             bNeedStartTip = true;
@@ -273,10 +287,19 @@
                     }
 
                 } catch (Exception ex) {
-                    Utlis.WriteLine ($"============>Mqtt 杩滅▼杩炴帴閫氳杩炴帴鍑哄紓甯�:{ex.Message}");
+                    //Utlis.WriteLine ($"============>Mqtt 杩滅▼杩炴帴閫氳杩炴帴鍑哄紓甯�:{ex.Message}");
+
+                    MainPage.LoadingSetText ("Connect error, trying to reconnect.");
+
+                    if (IfDEBUG) {
+                        MainPage.ShowAlertOnMainThread ("error: " + ex.Message);
+                    }
+
                 } finally {
                     //鏈�缁堣閲婃斁杩炴帴鐘舵��
                     remoteMqttIsConnecting = false;
+
+                    MainPage.LoadingHide ();
                 }
             });
         }
@@ -315,16 +338,25 @@
                                 //----绗笁姝� 寮�濮嬭繛鎺�
                                 await MQTTConnectAsync ();
                             } else {
-                                Utlis.WriteLine ("============>Mqtt CurRemoteMACInfo null");
+                                //Utlis.WriteLine ("============>Mqtt CurRemoteMACInfo null");
+
+                                MainPage.LoadingSetText ("Please wait, failed to get gateway parameters.");
                             }
                         }
 
                     } else {
-                        Utlis.WriteLine ("============>Mqtt mqttInfoRequestResult_Obj null");
+                        //Utlis.WriteLine ("============>Mqtt mqttInfoRequestResult_Obj null");
+
+                        MainPage.LoadingSetText ("Please wait, failed to get user parameters.");
+                        //MainPage.LoadingSetText ("Please wait, failed to get parameters.");
                     }
-                } catch { }
+                } catch {
+
+                }
             } else {
-                Utlis.WriteLine ("============>Mqtt GetInfo 澶辫触");
+                //Utlis.WriteLine ("============>Mqtt GetInfo 澶辫触");
+                MainPage.AddTip ("Please wait, failed to get parameters.");
+                //MainPage.LoadingSetText ("Please wait, failed to get parameters.");
             }
 
         }
@@ -350,6 +382,8 @@
                     mMqttInfo = mqttInfoRequestResult_info;
                     //--绗簩姝ワ細鑾峰彇褰撳墠浣忓垎浜畢缃戝叧淇℃伅骞惰繛鎺QTT
                     await GetSingleHomeGatewayPaggerAndMQTTConnectAsync ();
+                } else {
+                    MainPage.LoadingSetText ("Please wait, failed to get user parameters.");
                 }
             }
         }
@@ -363,7 +397,10 @@
 
              
                 //鑾峰彇鍙傛暟鎴愬姛锛屽紑濮嬭繛鎺�...
-                MainPage.AddTip ("Successfully obtained parameters, starting to connect...");
+                //MainPage.AddTip ("Successfully obtained parameters, starting to connect...");
+
+                MainPage.LoadingStart ("Please wait, connecting remotely...");
+
                 //try {
                 //    var url = mMqttInfo.connEmqDomainPort;
                 //    var clientId = mMqttInfo.connEmqClientId;
@@ -389,7 +426,7 @@
                 //    Console.WriteLine ("Connect error: " + ex.Message);
                 //}
 
-                string mes = "";
+                //string mes = "";
                 try {
 
                     var url = mMqttInfo.connEmqDomainPort;
@@ -397,7 +434,7 @@
                     var username = mMqttInfo.connEmqUserName;
                     var passwordRemote = mMqttInfo.connEmqPwd;
 
-                    mes = "step1.Set Data";
+                    //mes = "step1.Set Data";
                     CurRemoteMACInfo.LoginAccessToken = MainPage.LoginUser.LoginTokenString;
                     mqttEncryptKey = CurRemoteMACInfo.aesKey;
                     var options1 = new MQTTnet.Client.Options.MqttClientOptionsBuilder ()
@@ -408,14 +445,16 @@
                                         // .WithCommunicationTimeout (new TimeSpan (0, 0, 20))
                                         .Build ();
 
-                    mes = "step2.DisConnect";
+                    //mes = "step2.DisConnect";
                     await DisConnectRemoteMqttClient ("StartRemoteMqtt");
                     //MainPage.AddTip ("Start to connect...");
-                    mes = "step3.Start to connect";
+                    //mes = "step3.Start to connect";
                     await RemoteMqttClient.ConnectAsync (options1);
-                    mes = "step4.Connected Success";
+                    //mes = "step4.Connected Success";
                     remoteIsConnected = true;
                     IsDisConnectingWithSendCatch = false;
+
+                    MainPage.LoadingSetText ("Remote connection succeeded.");
 
                     //MainPage.AddTip ("Connection succeeded!");
                     //await MqttRemoteSend (new byte [] { 0 }, 1);
@@ -423,12 +462,17 @@
                     //await MqttRemoteSend (new byte [] { 0 }, 4);
 
                 } catch (Exception ex) {
-                    mes = ex.Message;
+                    //mes = ex.Message;
                     //options1 寮傚父鎻愮ず
-                    //Console.WriteLine("Connect error: " + ex.Message);
-                    //MainPage.ShowAlertOnMainThread ("Connect error: " + ex.Message);
+                    //Console.WriteLine ("Connect error: " + ex.Message);
+
+                    MainPage.LoadingSetText ("Connect error.");
+
+                    if (IfDEBUG) {
+                        MainPage.ShowAlertOnMainThread ("Connect error: " + ex.Message);
+                    }
                 } finally {
-                    MainPage.ShowAlertOnMainThread ("finally: " + mes);
+                    //MainPage.ShowAlertOnMainThread ("finally: " + mes);
                     //MainPage.AddTip ("finally: " + mes);
                 }
 
@@ -447,7 +491,8 @@
             if (bNeedStartTip) {
                 bNeedStartTip = false;
                 if (CommonPage.IsRemote) {
-                    MainPage.AddTip ("Getting remote connection parameters...");
+                    //MainPage.AddTip ("Getting remote connection parameters...");
+                    MainPage.LoadingStart ("Please wait, getting connection parameters...");
                 }
             }
         }
@@ -545,6 +590,8 @@
                     if (mGatewayRes != null) {
                         CurRemoteMACInfo.aesKey = mGatewayRes.AesKey;
                         mqttEncryptKey = CurRemoteMACInfo.aesKey;
+                    } else {
+                        MainPage.LoadingSetText ("Please wait, failed to get gateway parameters.");
                     }
 
                 }

--
Gitblit v1.8.0