Xamarin.Forms 弹出 "New Version Available"
Xamarin.Forms popup "New Version Available"
我正在研究 Xamarin.forms Android 项目,我正在搜索以显示用户的弹出窗口:
New Version Available
当用户尝试打开应用程序并且 play-store 上有可用的新更新时。
我认为最简单的方法是在您自己的服务器上拥有一个 returns 当前版本号的网络服务,不幸的是,您每次在商店中更新应用程序时都需要更新此版本号.
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();
}
在 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;
}
}
这将 returns 您应用的最新版本。并检查 activity
中的现有应用程序版本
var versionName = Application.Context.ApplicationContext.PackageManager.GetPackageInfo(Application.Context.ApplicationContext.PackageName, 0).VersionName;
var currentVer = double.Parse(versionName);
但是每次在 Play 商店中更新应用程序时都必须更新此版本号。
我正在研究 Xamarin.forms Android 项目,我正在搜索以显示用户的弹出窗口:
New Version Available
当用户尝试打开应用程序并且 play-store 上有可用的新更新时。
我认为最简单的方法是在您自己的服务器上拥有一个 returns 当前版本号的网络服务,不幸的是,您每次在商店中更新应用程序时都需要更新此版本号.
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();
}
在 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;
}
}
这将 returns 您应用的最新版本。并检查 activity
中的现有应用程序版本var versionName = Application.Context.ApplicationContext.PackageManager.GetPackageInfo(Application.Context.ApplicationContext.PackageName, 0).VersionName;
var currentVer = double.Parse(versionName);
但是每次在 Play 商店中更新应用程序时都必须更新此版本号。