.NET Maui中如何获取Google Play商店当前Android应用版本
在.NET Maui中获取Google Play应用版本的可行方案
官方可靠方案:使用Google Play Developer API
如果你是目标应用的开发者,这是最稳定的实现方式,需先完成前置准备:
- 在Google Cloud Console创建项目,启用Google Play Developer API
- 生成服务账号密钥(JSON格式),并在Google Play Console中为该账号授予对应应用的访问权限
在.NET Maui项目中安装Google.Apis.AndroidPublisher.v3 NuGet包,通过以下代码获取版本信息:
using Google.Apis.AndroidPublisher.v3; using Google.Apis.Auth.OAuth2; using Google.Apis.Services; // 加载服务账号密钥文件 var credential = GoogleCredential.FromFile("service-account-key.json") .CreateScoped(AndroidPublisherService.Scope.Androidpublisher); // 初始化API服务实例 var publisherService = new AndroidPublisherService(new BaseClientService.Initializer { HttpClientInitializer = credential, ApplicationName = "YourMauiAppName" }); // 创建编辑会话(API要求必须通过编辑会话访问应用详情) var editInsertRequest = publisherService.Edits.Insert(null, "com.your.app.package"); var edit = await editInsertRequest.ExecuteAsync(); // 获取应用详情 var detailsRequest = publisherService.Edits.Details.Get(edit.Id, "com.your.app.package"); var appDetails = await detailsRequest.ExecuteAsync(); // 提取版本号 var currentVersionName = appDetails.VersionName; var currentVersionCode = appDetails.VersionCode; // 提交编辑会话释放资源 await publisherService.Edits.Commit(edit.Id, "com.your.app.package").ExecuteAsync();
非官方方案:HTML页面解析(适用于第三方应用)
如果要获取非自身开发的应用版本,只能通过解析Google Play网页内容实现,但需注意页面结构随时可能变更,且存在反爬拦截机制。
实现步骤:
- 安装
HtmlAgilityPackNuGet包用于HTML解析 - 使用
HttpClient模拟浏览器请求,设置合法请求头避免被识别为爬虫
代码示例:
using HtmlAgilityPack; using System.Net.Http.Headers; var httpClient = new HttpClient(); // 设置模拟浏览器的请求头 httpClient.DefaultRequestHeaders.UserAgent.ParseAdd("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36"); httpClient.DefaultRequestHeaders.Accept.ParseAdd("text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8"); var targetAppUrl = "https://play.google.com/store/apps/details?id=com.target.app.package"; var htmlContent = await httpClient.GetStringAsync(targetAppUrl); var htmlDoc = new HtmlDocument(); htmlDoc.LoadHtml(htmlContent); // 注意:Google Play页面元素类名可能随时更新,需根据实际页面结构调整XPath var versionNode = htmlDoc.DocumentNode.SelectSingleNode("//div[contains(@class, 'hAyfc')]/span[contains(@class, 'htlgb') and preceding-sibling::div[text()='当前版本']]"); if (versionNode != null) { var currentVersion = versionNode.InnerText.Trim(); // 处理获取到的版本号 }
提示:若遇到403错误,可尝试添加Referer请求头或使用代理IP,但该方式维护成本较高,不建议作为核心功能依赖。
内容的提问来源于stack exchange,提问作者Justin Sinnard
相关产品推荐
相关产品推荐

