示例#1
0
        /**
         * busca en la tienda la version actual de la aplicacion y
         * la compara con la version actual y retorna un bandera que
         * indica si es necesario actualizar la aplicacion.
         */
        public Task <VersionResult> NeedUpdateApp()
        {
            return(Task.Run(async() =>
            {
                try
                {
                    // si es appCurrentVersion 1, significa que aun no hay version en la tienda.
                    double appCurrentVersion = GetVersion().RemoveAllOcurrenceToDouble(".");
                    //if (appCurrentVersion == 1002)
                    //{
                    //    return VersionResult.Done(false);
                    //}
                    var uri = new Uri(StoreUrl());
                    using (var client = new HttpClient())
                        using (var request = new HttpRequestMessage(HttpMethod.Get, uri))
                        {
                            request.Headers.TryAddWithoutValidation("Accept", "text/html");
                            request.Headers.TryAddWithoutValidation("User-Agent", "Mozilla/5.0 (Windows NT 6.2; WOW64; rv:19.0) Gecko/20100101 Firefox/19.0");
                            request.Headers.TryAddWithoutValidation("Accept-Charset", "ISO-8859-1");
                            using (var response = await client.SendAsync(request).ConfigureAwait(false))
                            {
                                response.EnsureSuccessStatusCode();
                                var responseHTML = await response.Content.ReadAsStringAsync().ConfigureAwait(false);
                                var rx = new Regex(@"(?<=""htlgb"">)(\d{1,3}\.\d{1,3}\.\d{1,3}\.{0,1}\d{0,4})(?=<\/span>)", RegexOptions.Compiled);
                                MatchCollection matches = rx.Matches(responseHTML);

                                string storeVersion = matches.Count > 0 ? matches[0].Value : "Unknown";
                                if (storeVersion == "Unknown")
                                {
                                    return VersionResult.Done(false);
                                }
                                double appStoreVersion = storeVersion.RemoveAllOcurrenceToDouble(".");
                                //double appCurrentVersion = GetVersion().RemoveAllOcurrenceToDouble(".");

                                bool needUpdate = appCurrentVersion < appStoreVersion;

                                return VersionResult.Done(needUpdate);
                            }
                        }
                }
                catch (Exception e)
                {
                    var error = string.IsNullOrEmpty(e.Message) ?
                                "ha ocurrido un error inesperado" :
                                e.Message;
                    Console.WriteLine(error);
                    return VersionResult.Fail(error);
                }
            }));
        }
示例#2
0
        /**
         * busca en la tienda la version actual de la aplicacion y
         * compara con la version actual y retorna si es necesario actualizar
         * la aplicacion.
         */
        public Task <VersionResult> NeedUpdateApp()
        {
            return(Task.Run(() => {
                try
                {
                    // si es appCurrentVersion 1, significa que aun no hay version en la tienda.
                    string version = GetVersion();
                    double appCurrentVersion = version.RemoveAllOcurrenceToDouble(token: ".");
                    //if (appCurrentVersion == 10.4)
                    //{
                    //    return VersionResult.Done(false);
                    //}
                    using (var webClient = new System.Net.WebClient())
                    {
                        string url = StoreUrl();
                        string jsonString = webClient.DownloadString(url);

                        var lookup = JsonConvert
                                     .DeserializeObject <DIC_OBJ>(jsonString);


                        if (lookup != null &&
                            lookup.Count >= 1 &&
                            lookup["resultCount"] != null
                            )
                        {
                            if (Convert.ToInt32(lookup["resultCount"].ToString()) <= 0)
                            {
                                return VersionResult.Done(false);
                            }

                            var results = JsonConvert
                                          .DeserializeObject <LIST_OBJ>(lookup[@"results"]
                                                                        .ToString());


                            if (results != null && results.Count > 0)
                            {
                                var values = JsonConvert
                                             .DeserializeObject <DIC_OBJ>(results[0]
                                                                          .ToString());

                                string storeVersion = values.ContainsKey("version") ?
                                                      values["version"].ToString() :
                                                      string.Empty;

                                double appStoreVersion = storeVersion.RemoveAllOcurrenceToDouble(token: ".");
                                //double appCurrentVersion = GetVersion().RemoveFirstOcurrenceToDouble(token: ".");

                                bool needUpdate = appCurrentVersion < appStoreVersion;
                                return VersionResult.Done(needUpdate);
                            }
                        }
                    }
                    return VersionResult.Fail("No se ha podido procesar la respuesta del servidor.");
                }
                catch (Exception ex)
                {
                    var error = string.IsNullOrEmpty(ex.Message) ?
                                "ha ocurrido un error inesperado":
                                ex.Message;

                    Console.WriteLine(error);
                    return VersionResult.Fail(error);
                }
            }));
        }