5

pracuję nad Xamarin.forms Android Project, szukam dala, aby wyświetlić pop-up dla użytkownika:Xamarin.Forms popup "nowa wersja"

nowa wersja

, gdy użytkownik próbuje otworzyć aplikację, a nowa aktualizacja jest dostępna w sklepie.

+2

Sprawdziłeś aplikację hokejową? –

+0

Czytałem o tym .. może użyję tego –

+1

Dlaczego chcesz to zrobić w pierwszej kolejności? Czy sklep nie aktualizuje się automatycznie do nowszych wersji, jeśli publikujesz swoją aplikację? – SilentStorm

Odpowiedz

7

Myślę, że najłatwiej byłoby mieć usługę sieciową na własnym serwerze, która zwraca bieżący numer wersji, niestety trzeba zaktualizować ten numer wersji za każdym razem, gdy aktualizujesz aplikację w sklepie.

+0

thx, put wolę znaleźć dynamiczne rozwiązanie –

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

możesz dodać więcej opisu –

+0

Po prostu weź nową wersję aplikacji z playstore i sprawdź Twoja obecna wersja jest większa niż wersja aplikacji, jeśli jest większa, po prostu pop-up –

2

Utwórz plik tekstowy z najnowszą wersją na koncie GitHub Gist.

Get surowego adresu URL

ciąg url = "https://gist.githubusercontent.com/YOUR_ACCOUNT_NAME/0df1fa45aa11753de0a85893448b22de/raw/UpdateInfo.txt";

, która zwróci najnowszą wersję aplikacji. i skontaktować się z istniejącej wersji aplikacji aktywności

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

ale trzeba aktualizować ten numer wersji w dowolnym momencie zaktualizować aplikację w Sklepie Play.

+0

Dobre rozwiązanie. Ale wciąż wolę dynamiczne rozwiązanie –