Xamarin.Forms "New Version Available" popup

I am working on an Xamarin.forms Android project, I am looking to display a popup for the user:

New Version Available

when the user tries to open the application, and a new update is available in the play store.

+5
source share
3 answers

I think that the easiest way is to have a web service on its own server that returns the current version number, unfortunately, you will need to update this version number every time you update the application in the store.

+7
source

Create a text file with the latest version number in your GitHub Gist account.

Get Source 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 return the latest version of your application. and check with the existing version of the application in action

 var versionName = Application.Context.ApplicationContext.PackageManager.GetPackageInfo(Application.Context.ApplicationContext.PackageName, 0).VersionName; var currentVer = double.Parse(versionName); 

but you must update this version number every time you update the application in the play store.

+2
source
 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(); } 
+1
source

Source: https://habr.com/ru/post/1264386/


All Articles