Xamarin.Android Как узнать номер версии приложения Google Play Store с помощью плагина Dcsoup Nuget? - PullRequest
0 голосов
/ 31 октября 2018

Я пытаюсь получить номер последней версии приложения моего магазина, чтобы уведомлять пользователей об обновлениях, если они используют более старую версию.

Пока это мой код, но он, очевидно, просто извлекает div, содержащий текст "Номер версии". Как получить фактический номер версии (в данном случае 1.1) со ссылкой на прикрепленный скриншот дерева DOM?

public static string GetAndroidStoreAppVersion()
        {
            string androidStoreAppVersion = null;

            try
            {
                using (var client = new HttpClient())
                {
                    var doc = client.GetAsync("https://play.google.com/store/apps/details?id=" + AppInfo.PackageName + "&hl=en_CA").Result.Parse();
                    var versionElement = doc.Select("div:containsOwn(Current Version)");
                    androidStoreAppVersion = versionElement.Text;
                }
            }
            catch (Exception ex)
            {
                // do something
                Console.WriteLine(ex.Message);
            }

            return androidStoreAppVersion;
        }

enter image description here

1 Ответ

0 голосов
/ 01 ноября 2018

В соответствии с документом parser , селектор containsOwm выбирает элементы, которые непосредственно содержат указанный текст. В результате ваш код

var versionElement = doc.Select("div:containsOwn(Current Version)");

обязательно вернет «Текущая версия». Реальный элемент, который вы хотели бы получить, является дочерним элементом дочернего элемента элемента «Текущая версия». Таким образом, вы должны получить этот элемент с помощью селектора. Таким образом, вы можете получить номер версии следующим образом:

            var versionElement = doc.Select("div:containsOwn(Current Version)");
            Element headElement = versionElement[0];
            Elements siblingsOfHead = headElement.SiblingElements;
            Element contentElement = siblingsOfHead.First;
            Elements childrenOfContentElement = contentElement.Children;
            Element childOfContentElement = childrenOfContentElement.First;
            Elements childrenOfChildren = childOfContentElement.Children;
            Element childOfChild = childrenOfChildren.First;
            androidStoreAppVersion = childOfChild.Text;

enter image description here

...