Xamarin.Forms弹出“新版本可用”
我认为最简单的事情将有自己的服务器上的Web服务,它返回当前的版本号,不幸的是你需要更新此版本号的任何时间更新在商店的应用程序。
THX,把我宁愿找动态解决方案, –
private class GetVersionCode extends AsyncTask<Void, String, String> {
@Override
protected String doInBackground(Void... voids) {
String newVersion = null;
try {
newVersion = Jsoup.connect("https://play.google.com/store/apps/details?id=" + SplashActivity.this.getPackageName() + "&hl=it")
.timeout(30000)
.userAgent("Mozilla/5.0 (Windows; U; WindowsNT 5.1; en-US; rv1.8.1.6) Gecko/20070725 Firefox/2.0.0.6")
.referrer("http://www.google.com")
.get()
.select("div[itemprop=softwareVersion]")
.first()
.ownText();
return newVersion;
} catch (Exception e) {
return newVersion;
}
}
@Override
protected void onPostExecute(String onlineVersion) {
super.onPostExecute(onlineVersion);
String currentVersion = null;
try {
currentVersion = getPackageManager().getPackageInfo(getPackageName(), 0).versionName;
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
if (onlineVersion != null && !onlineVersion.isEmpty()) {
if (Float.valueOf(currentVersion) < Float.valueOf(onlineVersion)) {
final AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(SplashActivity.this);
alertDialogBuilder.setTitle("Product Update");
alertDialogBuilder.setMessage("A new version is available. Would you like to Upgrade now? (Current: "+currentVersion+" Latest: "+onlineVersion+")");
alertDialogBuilder.setPositiveButton("ok",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface arg0, int arg1) {
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id="+SplashActivity.this.getPackageName())));
}
});
alertDialogBuilder.setNegativeButton("Cancel",new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
alertDialogBuilder.setCancelable(true);
finish();
loginUserCheck();
}
});
AlertDialog alertDialog = alertDialogBuilder.create();
alertDialog.show();
}
你可以请添加更多的描述 –
你只要把你的应用程序的新版本从Play商店中,并检查它现在的版本大于应用程序版本,如果它更大,只显示弹出 –
在GitHub Gist帐户中创建一个包含最新版本号的文本文件。
获取的原始URL
字符串URL = “https://gist.githubusercontent.com/YOUR_ACCOUNT_NAME/0df1fa45aa11753de0a85893448b22de/raw/UpdateInfo.txt”;
private static async Task<string> GetLatestVersion(string URL)
{
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(new Uri(URL));
request.ContentType = "application/json"; //i am using a json file
request.Method = "GET";
request.Timeout = 20000;
// Send the request to the server and wait for the response:
try
{
using (WebResponse response = await request.GetResponseAsync())
{
// Get a stream representation of the HTTP web response:
using (Stream stream = response.GetResponseStream())
{
StreamReader reader = new StreamReader(stream);
return reader.ReadToEnd();
}
}
}
catch (Exception ex)
{
return string.Empty;
}
}
这将返回您的应用程序的最新版本。并与现有的应用程序版本检查活动
var versionName = Application.Context.ApplicationContext.PackageManager.GetPackageInfo(Application.Context.ApplicationContext.PackageName, 0).VersionName;
var currentVer = double.Parse(versionName);
,但你必须更新此版本号的任何时间更新在Play商店的应用程序。
好的解决方案。但我仍然喜欢动态解决方案 –
你检查曲棍球应用程序? –
我读到它..也许我会用它 –
你为什么想做这个摆在首位?如果您发布应用程序,商店是否会自动更新为新版本? – SilentStorm