I am working on Xamarin.forms Android Project, I am searching away to display a pop up for user:
New Version Available
when user try to open an Application and a new update is available on play-store .
I am working on Xamarin.forms Android Project, I am searching away to display a pop up for user:
New Version Available
when user try to open an Application and a new update is available on play-store .
I think the easiest thing would be to have a web service on your own server that returns the current version number, unfortunately you would need to update this version number any time you update the app in the store.
Create a text file with the latest version number in a GitHub Gist account.
Get the raw URL
string 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;
}
}
which will returns the latest version of your app. and check with the existing app version in activity
var versionName = Application.Context.ApplicationContext.PackageManager.GetPackageInfo(Application.Context.ApplicationContext.PackageName, 0).VersionName;
var currentVer = double.Parse(versionName);
but you have to update this version number any time you update the app in the play store.
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();
}
© 2022 - 2024 — McMap. All rights reserved.