neh*_*eha 1 xamarin.android xamarin xamarin.forms google-play-console
我需要检查已安装应用程序和 Playstore 应用程序版本的当前版本。如果不是同一个应用程序应导航到 Playstore 。我使用 xam.Plugin.LatestVersion(2.1.0) 从播放控制台获取应用程序的最新版本号。不幸的是,没有从 Play 商店获取应用程序的最新版本号。我使用下面的代码。
private async void ChekAppVersion()
{
try
{
latestVersionNumber = await CrossLatestVersion.Current.GetLatestVersionNumber();
installedVersionNumber = CrossLatestVersion.Current.InstalledVersionNumber;
if (installedVersionNumber != latestVersionNumber)
{
await DisplayAlert("New Version", "There is a new version of this app available. Please update now?", "Ok");
await CrossLatestVersion.Current.OpenAppInStore();
ChekAppVersion();
}
else
{
}
}
catch (Exception ex)
{
}
}
Run Code Online (Sandbox Code Playgroud)
我正在获取已安装的版本号,但无法获取最新版本号(Playstore)。请帮忙解决这个问题。
他们已经删除了版本div,现在用js显示,但数据仍然在标签内<script>。我当前的固定代码是:
private bool _lockCheckUpdates;
public async Task<bool> CheckNeedUpdate()
{
if (Connectivity.NetworkAccess != NetworkAccess.Internet || _lockCheckUpdates)
return false;
_lockCheckUpdates = true;
try
{
HttpClient myClient = CreateClient();
if (Device.RuntimePlatform == Device.Android)
{
var bundle = "com.todo.app"; //ANDROID BUNDLE NAME HERE
string url = $"https://play.google.com/store/apps/details?id={bundle}&hl=en";
string raw = await myClient.GetStringAsync(new Uri(url));
var doc = new HtmlDocument();
doc.LoadHtml(raw);
var scripts = doc.DocumentNode.Descendants()
.Where(n => n.Name == "script" && n.InnerText.Contains("AF_initDataCallback({key: 'ds:4'"))
.ToArray();
var script = scripts.First().InnerText;
var engine = new Jurassic.ScriptEngine();
var eval = "(function() { var AF_initDataCallback = function(p) { return p.data[1][2][140][0][0][0]; }; return " + script + " })()";
var result = engine.Evaluate(eval);
//var json = JSONObject.Stringify(engine, result); //for debug, check in browser console with JSON.parse(json)
var remote = $"{result}".ToDouble();
var local = App.Version.ToDouble();
return local < remote;
}
else if (Device.RuntimePlatform == Device.iOS)
{
var bundle = "com.todo.app";//iOS BUNDLE NAME HERE
string url = $"http://itunes.apple.com/lookup?bundleId={bundle}";
string raw = await myClient.GetStringAsync(new Uri(url));
var dto = JsonConvert.DeserializeObject<AppStoreRecord>(raw);
double local = App.Version.ToDouble();
if (dto.ResultCount > 0)
{
double remote = dto.Results[0].Version.ToDouble();
return remote > local;
}
}
}
catch (Exception e)
{
Logger.Error("CheckNeedUpdate", e);
}
finally
{
_lockCheckUpdates = false;
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
使用金块
Jurassic评估页面上的脚本、
解析HtmlAgilityPackhtml、
Xamarin.Essentials检查我们是否在线AppoMobi.Specials等等.ToDouble()
我希望这也有助于修复https://github.com/edsnider/latestversionplugin/issues/43 :)
| 归档时间: |
|
| 查看次数: |
2552 次 |
| 最近记录: |