Yeni bir sürüm mevcut olduğunda bir Android uygulamasını güncellemeye zorla


104

Google Play Store'da bir uygulamam var. Bir güncelleme sürümü mevcut olduğunda, eski sürüm kullanılamaz hale gelir - yani kullanıcılar uygulamayı güncellemezse, uygulamaya girmezler. Kullanıcıları yeni bir sürüm çıktığında uygulamayı güncellemeye nasıl zorlayabilirim?


1
Bu açık kaynaklı GitHub projesi (MAHAndroidUpdater) tamamen bu işlevselliği sağlıyor. Deneyin, Çok basit. github.com/hummatli/MAHAndroidUpdater
Sattar Hummatli

Yanıtlar:


103

Scott Helme'nin buradaki başka bir cevaba katılıyorum. Ancak, kullanıcıların uygulamayı kullanmaya devam etmek için güncelleme yapmasına kesinlikle ihtiyaç duyduğunuz bazı aşırı durumlarda (güvenlik sorunları, API bozma değişiklikleri ...), basit bir sürüm oluşturma API'si sağlayabilirsiniz. API şöyle görünecektir:

versionCheck API:

İstek parametreleri:

  • int appVersion

Tepki

  1. boolean forceUpgrade
  2. boolean recommendUpgrade

Uygulamanız başladığında, mevcut uygulama sürümünde geçen bu API'yi çağırabilir ve sürüm oluşturma API çağrısının yanıtını kontrol edebilirsiniz.

Öyleyse forceUpgrade, truekullanıcının uygulamadan çıkmasına izin verme veya uygulamayı yükseltmek için Google Play Store'a gitme seçeneklerini içeren bir açılır pencere iletişim kutusu gösterin.

Aksi takdirde recommendUpgrade, trueuygulamayı kullanmaya devam etme veya güncelleme seçeneklerinin bulunduğu açılır iletişim kutusunu gösterin.

Bu zorunlu yükseltme yeteneği mevcut olsa bile, kesinlikle gerekmedikçe eski sürümleri desteklemeye devam etmelisiniz.


Uygulama her başladığında pop-up'ı gösterir ve Yükseltmenin doğru olduğunu önerir misiniz? (UX açısından) Veya açılır pencereyi bir kez gösterin ve kullanıcı yükseltmeyi reddederse bir daha göstermeyin.
Aneesh

8
Önerilen yükseltme için, kullanıcı reddederse bir daha göstermemeniz gerektiğini düşünüyorum. Ayrıca, "kullanıcının uygulamayı her n defa açtığını" da gösterebilirsiniz. N değerine kendiniz karar verebilir ve bunu uygulayabilirsiniz.
Michael

4
daha iyi bir çözüm imo, uygulamanın sürümünü sistematik olarak tüm API çağrılarının başlığında geçirmek ve ardından API'nin, sürümün eski olduğunu algılarsa belirli bir durum kodu döndürmesini sağlamaktır. ve sonra bunu uygulamanın içinde halledin. bu, bu kontrol için başka bir özel API çağırmak zorunda kalmaktan ve bu API çağrısının uygulama / hizmet içinde tam olarak ne zaman / nerede yapılması gerektiğini bulmaktan daha iyidir.
Raphael C

@RaphaelC Bu gerçekten sunucu tarafı uygulamanıza bağlıdır. Bazı durumlarda tüm API'lerdeki sürümü kontrol eden bir filtre eklemek de mükemmel değildir.
Eyl GH

5
@SepGH o zamandan beri değişti ve Android artık kullanıcıyı yükseltmeye zorlamak ve minimum sürüme yükseltme yapmazsa uygulamayı kullanmaya devam etmesini engellemek için kullanabileceğiniz bir API sunuyor: developer.android.com/guide/ uygulama paketi / uygulama içi güncellemeler
Raphael C

56

şunu deneyin: Önce, Play Store bağlantısına bir istek çağrısı yapmanız, oradan geçerli sürümü almanız ve ardından bunu mevcut sürümünüzle karşılaştırmanız gerekir.

String currentVersion, latestVersion;
Dialog dialog;
private void getCurrentVersion(){
 PackageManager pm = this.getPackageManager();
        PackageInfo pInfo = null;

        try {
            pInfo =  pm.getPackageInfo(this.getPackageName(),0);

        } catch (PackageManager.NameNotFoundException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }
        currentVersion = pInfo.versionName;

   new GetLatestVersion().execute();

}

private class GetLatestVersion extends AsyncTask<String, String, JSONObject> {

        private ProgressDialog progressDialog;

        @Override
        protected void onPreExecute() {
            super.onPreExecute();
        }

        @Override
        protected JSONObject doInBackground(String... params) {
            try {
//It retrieves the latest version by scraping the content of current version from play store at runtime
                Document doc = Jsoup.connect(urlOfAppFromPlayStore).get();
                latestVersion = doc.getElementsByClass("htlgb").get(6).text();

            }catch (Exception e){
                e.printStackTrace();

            }

            return new JSONObject();
        }

        @Override
        protected void onPostExecute(JSONObject jsonObject) {
            if(latestVersion!=null) {
                if (!currentVersion.equalsIgnoreCase(latestVersion)){
                   if(!isFinishing()){ //This would help to prevent Error : BinderProxy@45d459c0 is not valid; is your activity running? error
                    showUpdateDialog();
                    }
                }
            }
            else
                background.start();
            super.onPostExecute(jsonObject);
        }
    }

private void showUpdateDialog(){
        final AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setTitle("A New Update is Available");
        builder.setPositiveButton("Update", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse
                        ("market://details?id=yourAppPackageName")));
                dialog.dismiss();
            }
        });

        builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                background.start();
            }
        });

        builder.setCancelable(false);
        dialog = builder.show();
    }

1
Sanırım bu, harici kütüphane JSoup'u eklemek için kullanım gerektirecek mi?
Abraham Philip

1
Evet, ancak bu html div sayfasını almak içindir. Bu işlevselliği elde etmek için herhangi bir üçüncü taraf kitaplığı kullanmanız gerekmeyebileceğini söylemek istedim, eğer bu html öğesini JSoup olmadan kazıyabilirseniz, yine de işe yarayacaktır
AshuKingSharma

1
ya itemprop değerini değiştirirlerse ??
asok Buzz

1
Onlar itemprop değerini değiştirirseniz, o zaman, ben hemen o desteklemek için benim cevap düzenlemek istiyorum, benim de uygulamalar etkileyecek :) o zamana kadar hiçbir endişe böylece ediyorum
AshuKingSharma

Nice setCancelable (false)
Kai Wang

48

Yeni bir sürüm çıkar çıkmaz eski bir sürümü desteklemeyi bırakmamalısınız. Bu, korkunç bir kullanıcı deneyimiyle sonuçlanacaktır. İyi bir nedenden ötürü bunu yapan herhangi bir yazılım satıcısı bilmiyorum.

Kullanıcı o anda güncelleme yapamazsa veya istemezse ne olur? Onlar sadece uygulamanızı kullanamazlar ki bu kötüdür.

Google böyle bir sürüm izleme seçeneği sunmaz, bu nedenle kendinizinkini atmanız gerekir. Uygulamanızın kontrol edebileceği mevcut canlı sürümü döndürmek için basit bir web hizmeti yeterli olacaktır. Daha sonra sürümü güncelleyebilirsiniz ve uygulama eski olduğunu bilecektir. Bunu yalnızca, kullanıcılarınıza bir güncelleme olduğunu Google Play'e bağlı olmaktan daha hızlı bildirmek için kullanmanızı öneririm. Uygulamanın çalışmasını engellemek için gerçekten kullanılmamalı, yalnızca kullanıcıdan güncelleme yapmasını istemek için kullanılmalıdır.


2
@ashraful, bu veya herhangi bir yanıt sorunuzu çözdüyse, lütfen onay işaretine tıklayarak kabul etmeyi düşünün . Bu, daha geniş bir topluluğa bir çözüm bulduğunuzu gösterir ve hem cevaplayana hem de kendinize itibar kazandırır. Bunu yapma zorunluluğu yok.
Süfyan

Cevap, tanıdığınız kaç yazılım satıcısının var olduğuna bağlıdır. Bunu ölçebilir misin?
Lou Morda

1
Güncel uygulama sürümünü uygulama mağazasından veya oyun mağazasından almak mümkün mü? veya sunucumda en son uygulama sürümünü tutmam gerekip gerekmediğini? Çünkü şu anda sunucumda en son uygulama sürümünü döndürmek için servis çağrısı var, ancak zorluk her seferinde uygulamayı yayınlarken sunucuyu güncellemem gerekiyor. Dolayısıyla, ilgili mağazalardan güncel sürüm numarasını almak mümkün mü?
subha

2
Supercell, oyunlarının yalnızca en son sürümünü destekler. Google Play'e yeni bir sürüm gönderdikten sonra, bağlanmaya çalışan eski istemciler sunucudan bir "güncelleme ihtiyacı" yanıtı alır ve bağlantının kapandığını görür. Bunu her yıl birkaç kez yapıyorlar. Dolayısıyla, bir "oyun şirketini" "yazılım satıcısı" olarak saymak istemiyorsanız, artık bir tane biliyorsunuz :) Hâlâ her gün birkaç milyon dolar kazandıklarını düşünürsek, görünüşe göre bu korkunç kullanıcı deneyimi bir şov durdurucu değil .
Arjan

@Subha Evet, bu mümkün. Ancak bunun için resmi bir API yok, bu yüzden web sayfalarını kazımanız gerekiyor. Bu ayrıca web sayfası değişirse kırılabileceği anlamına gelir. Burada cevap olarak oldukça basit bir kod yazdığım ve yayınladığım bir üçüncü taraf uygulamasında yaptım . Şu anda kod hem Play hem de iTunes sayfalarında çalışacaktır. Yine de bir üretim ortamında, Google veya Apple'daki sayfaların biçimine güvenmek yerine, sunucudaki en son uygulama sürümünü otomatik olarak güncelleyecek bir çözüm aramak daha iyi olabilir mi?
Arjan

28

Google ekibinden çözüm

Android 5.0'dan başlayarak, yeni Google Play Uygulama İçi güncelleme mekanizmasıyla kolayca ulaşılabilir. Gereksinimler, 1.5.0+ sürümünün Play Core kitaplığına sahip olmak ve apks yerine App Bundles idstribution'ı kullanmaktır.

Kütüphane, kullanıcıları güncelleme hakkında bilgilendirmek için size 2 farklı yol sunar:

  1. Esnek, kullanıcılar uygulamayı arka planda güncellenirken kullanmaya devam edebilir.

  2. Anında - kullanıcının güncelleyene kadar uygulamaya girmesine izin vermeyen engelleme ekranı.

Bunu uygulamak için sonraki adımlar var:

  1. Güncelleme olup olmadığını kontrol edin
  2. Bir güncelleme başlatın
  3. Güncelleme durumu için geri arama alın
  4. Güncellemeyi yönetin

Tüm bu adım uygulamaları resmi sitede ayrıntılı olarak açıklanmıştır: https://developer.android.com/guide/app-bundle/in-app-updates


16

Scott ve Michael'ın cevapları doğru. Desteklediğiniz minimum sürüm numarasını sağlayan bir hizmet barındırın ve bunu yüklü sürümle karşılaştırın. Umarım bunu asla kullanmanıza gerek kalmaz, ancak bu bir hayat kurtarıcıdır, eğer orada bir sürüm varsa, ciddi bir kusur nedeniyle kesinlikle öldürmeniz gerekir.

Bundan sonra ne yapacağıma ilişkin kodu eklemek istedim. Daha sonra, Google Play Amacını şu şekilde başlatırsınız ve kullanıcıya yükseltme yapması gerektiğini bildirdikten sonra bunları mağazadaki yeni sürümünüze alırsınız.

public class UpgradeActivity extends Activity {
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_upgrade);
        final String appName = "com.appname";
        Button button = (Button) findViewById(R.id.button);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                    startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id="+appName)));

            }
        });
    }
}

Her sürümde yükseltmeleri zorunlu kılmak zorunda kalırsanız tasarımınızı yeniden gözden geçirmelisiniz.


15

Google , Lollipop + üzerinde çalışan Uygulama İçi güncellemeler lib'yi ( https://developer.android.com/guide/app-bundle/in-app-updates ) sundu ve size kullanıcıdan güzel bir güncelleme isteme olanağı verir. iletişim kutusu (ESNEK) veya zorunlu tam ekran mesajı (HEMEN).

İkincisini uygulamanız gerekir. İşte nasıl görüneceği: görüntü açıklamasını buraya girin

Bu cevaptaki tüm kodu ele aldım: https://stackoverflow.com/a/56808529/5502121


1
Bu en iyi cevap!
fvaldivia

Bu özellik aslında Play önbelleğinin, kullanıcı uygulamanızı başlattığında güncel olmasına dayanır. Örneğin, uygulamanızın önbellekteki sürüm numarası Playstore'daki en son dağıtımınızın sürüm numarasıyla aynı değilse, kullanıcıya sorulmaz ..
kiran01bm

7

Resmi olarak google bunun için bir Android API sağlar.

API şu anda birkaç iş ortağıyla test ediliyor ve yakında tüm geliştiricilerin kullanımına sunulacak.

Güncelleme API'si şu anda kullanılabilir - https://developer.android.com/guide/app-bundle/in-app-updates



1
Bu API artık mevcut mu?
Yayayaya


Bu özellik aslında Play önbelleğinin, kullanıcı uygulamanızı başlattığında güncel olmasına dayanır. Örneğin, uygulamanızın önbellekteki sürüm numarası Playstore'daki en son dağıtımınızın sürüm numarasıyla aynı değilse, kullanıcıya sorulmaz ..
kiran01bm

6

Bunun için Firebase'in Remote Config işlevine göz atmanızı şiddetle tavsiye ederim .

Bunu, aşağıdaki gibi görünen "Devre Dışı Android Sürümleri" koşuluyla - app_version_enabled - parametresini kullanarak uyguladım:

applies if App ID == com.example.myapp and App version regular expression ^(5.6.1|5.4.2) 

Parametre için varsayılan değer "true" dur, ancak Devre Dışı Bırakılan Android Sürümleri yanlış değerine sahiptir. Devre Dışı Bırakılmış Android Sürümleri için normal ifademde, |{version name}bu parantezlerin içine başka bir tane kullanarak daha fazla devre dışı bırakılmış sürüm ekleyebilirsiniz .

Ardından, yapılandırmanın sürümün etkin olup olmadığını kontrol edip etmediğini kontrol ediyorum - başlattığım, kullanıcıyı yükseltmeye zorlayan bir etkinliğim var. Uygulamanın harici olarak başlatılabileceği yalnızca iki yeri kontrol ediyorum (varsayılan başlatıcı etkinliğim ve bir amaç işleme etkinliği). Remote Config önbellek temelinde çalıştığından, önbelleğin geçersiz kılınması için gerekli süre geçmediyse uygulamanın "devre dışı bırakılmış" sürümlerini hemen yakalamaz, ancak bu süre, devam ediyorsanız en fazla 12 saattir. önerilen önbellek süre sonu değeri.


Bu çok iyi bir seçenektir. "Devre dışı" sürümlerin bir alt kümesini belirterek, bir uygulamanın güvenlik sorunları veya önemli performans sorunları olması durumunda kendinizi hızlı bir şekilde koruyabilirsiniz. Her sürümü desteklemeye devam etmenize izin verir, ancak ihtiyaç duyulduğunda belirli bir sürümü yasaklar.
Terry

3

yerel ve oyun mağazası apk'sinin sürüm kodunu kontrol edin

try {
        versionChecker VersionChecker = new versionChecker();
        String versionUpdated = VersionChecker.execute().get().toString();
        Log.i("version code is", versionUpdated);


        PackageInfo packageInfo = null;
        try {
            packageInfo = getPackageManager().getPackageInfo(getPackageName(), 0);
        } catch (PackageManager.NameNotFoundException e) {
            e.printStackTrace();
        }
        int version_code = packageInfo.versionCode;
        String version_name = packageInfo.versionName;
        Log.i("updated version code", String.valueOf(version_code) + "  " + version_name);
        if (version_name != versionUpdated) {
            String packageName = getApplicationContext().getPackageName();//
            UpdateMeeDialog updateMeeDialog = new UpdateMeeDialog();
            updateMeeDialog.showDialogAddRoute(MainActivity.this, packageName);
            Toast.makeText(getApplicationContext(), "please updated", Toast.LENGTH_LONG).show();
        }
    } catch (Exception e) {
        e.getStackTrace();
    }

sürüm kontrolü için uygulama sınıfı

class versionChecker extends AsyncTask<String, String, String> {
String newVersion;

@Override
protected String doInBackground(String... params) {

    try {
        newVersion = Jsoup.connect("https://play.google.com/store/apps/details?id=+YOR_PACKAGE_NAME+&hl=en")
                .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();
    } catch (IOException e) {
        e.printStackTrace();
    }

    return newVersion;
}
}

güncelleme için dialob kutusu

public class UpdateMeeDialog {

ActivityManager am;
TextView rootName;
Context context;
Dialog dialog;
String key1,schoolId;
public void showDialogAddRoute(Activity activity, final String packageName){
    context=activity;
    dialog = new Dialog(context);

    dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
    dialog.setCancelable(false);
    dialog.setContentView(R.layout.dialog_update);
    am = (ActivityManager)activity.getSystemService(Context.ACTIVITY_SERVICE);

    Button cancelDialogue=(Button)dialog.findViewById(R.id.buttonUpdate);
    Log.i("package name",packageName);
    cancelDialogue.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent=new Intent(Intent.ACTION_VIEW);                
    intent.setData(Uri.parse("https://play.google.com/store/apps/details?
    id="+packageName+"&hl=en"));
            context.startActivity(intent);
        }
    });
    dialog.show();
}
}

iletişim düzeni

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#d4e9f2">


<TextView
    android:layout_width="match_parent"
    android:layout_height="40dp"

    android:text="Please Update First..!!"
    android:textSize="20dp"
    android:textColor="#46a5df"
    android:textAlignment="center"
    android:layout_marginTop="50dp"
    android:id="@+id/textMessage"
    />
<LinearLayout
    android:layout_width="match_parent"
    android:orientation="horizontal"
    android:weightSum="1"
    android:layout_marginTop="50dp"
    android:layout_below="@+id/textMessage"
    android:layout_height="50dp">

    <Button
        android:id="@+id/buttonUpdate"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="Update"
        android:background="#67C6F1"
        android:textAlignment="center" />
</LinearLayout>


2

Yükseltme için kendi sürecimizi tanımlamak daha iyidir.

  1. Sunucumuzdan uygulama için en son sürümü (ios, android) veren bir web hizmeti oluşturun.
  2. Veya uygulamada kullandığınız herhangi bir web hizmeti (örn. Giriş), sunucudan en son uygulama sürümünü döndürür.
  3. Uygulama bir kez 1 veya 2 numaralı sürümden sürüm alacak. Uygulama, onu yerel / güncel uygulama ile çapraz kontrol edecektir. fark varsa aşağıdaki gibi uyarı gösterebiliriz,

Android ve iOS: En son uygulama sürümü mevcutsa, "Daha fazla özellik içeren en son sürüm mevcut, Yükseltmek için Yükseltme düğmesine tıklayın" ("Güncelle" ve "Hayır, Teşekkürler" düğmesi ile uyarı) şeklinde bir uyarı gösterecektir. Daha sonra uygulama, playstore / Appstore ve en son sürümü açacaktır.

 --- we can do upgrade compulsory or optionally.

Yükseltme işleminden önce, herhangi bir db şeması değişikliği varsa, lütfen uygun db geçiş sürecini gerçekleştirdiğinizden emin olun.


1

Piyasada bir güncelleme mevcutsa, uygulama kullanıcısını güncelleme yapmaya zorlamak için, önce piyasadaki uygulama sürümünü kontrol etmeli ve cihazdaki uygulamanın sürümüyle karşılaştırmalısınız. Farklılarsa, mevcut bir güncelleme olabilir. Bu yazıda, piyasanın güncel sürümünü ve güncel sürümü cihaza almak için kodu yazdım ve bunları birlikte karşılaştırdım. Ayrıca güncelleme iletişim kutusunu nasıl göstereceğimi ve kullanıcıyı güncelleme sayfasına nasıl yönlendireceğimi de gösterdim. Lütfen şu bağlantıyı ziyaret edin: https://stackoverflow.com/a/33925032/5475941 Sadece iletişim kutusunda yalnızca kullanıcı güncelleme düğmesini gösterdiğinizden ve ona iptal düğmesini göstermediğinizden emin olun. Bu durumda, uygulamayı kullanmadan önce güncelleme yapmaya zorlanacaktır.


1

Burada kesinlikle belirtilmesi gereken, yakında piyasaya sürülecek Uygulama İçi Güncellemeler API'sidir .

Bu API ile iki seçeneğiniz olacak; ilki, kullanıcının güncellemenin hemen uygulanmasını beklemesini beklediğinizde kritik güncellemeler için tam ekran deneyimdir. İkinci seçenek esnek bir güncellemedir; bu, kullanıcının güncelleme indirilirken uygulamayı kullanmaya devam edebileceği anlamına gelir. Güncelleme akışını, uygulamanızın bir parçası gibi hissettirecek şekilde tamamen özelleştirebilirsiniz.


1

Uygulama sürümü için uzaktan yapılandırmayı kullanmak ve her zaman başlatma etkinliğini kontrol etmek iyi bir fikirdir ve uygulama mağazasından güncelleme için zorunlu değilse, mevcut uygulama sürümünün uzak sürümle aynı olup olmadığını kontrol edin.

Basit mantık mutlu kodlama ..

https://firebase.google.com/docs/remote-config/android


1

Bununla başa çıkmak için Play Core Library Uygulama içi güncellemelerini kullanabilirsiniz. Güncelleme olup olmadığını kontrol edebilir ve mevcutsa bunları sorunsuz bir şekilde yükleyebilirsiniz.

Uygulama içi güncellemeler, APK genişletme dosyalarını (.obb dosyaları) kullanan uygulamalarla uyumlu değildir. Google Play'in sizin için güncellemeyi indirip yüklemesiyle ilgileneceği esnek indirmeler veya anında güncellemeler için gidebilirsiniz.

dependencies {
    implementation 'com.google.android.play:core:1.5.0'
    ...
}

Bu yanıta bakın https://stackoverflow.com/a/58212818/7579041


0

Bunu, bir değişkendeki uygulamada tutulan bir sürüm numarası ile benzer şekilde sunucu tarafında tutulan bir sürüm numarası arasında bir eşleştirme yaparak yapabilirsiniz ve kullanıcı uygulamayı her açtığında, bulup bulmadığını kontrol etmek için ilk istek gönderilmelidir. eşleştirme hiçbir şey yapmaz, yalnızca kullanıcının uygulamanızı kullanmasına izin verin, aksi takdirde google playstore'a bir niyet atar veya uygulamanız için bir web görünümü penceresi açar (window.open (" https://play.google.com/store/apps/details?id= package_name ", '_system', 'location = yes');) ve orada otomatik güncellemeler yoksa, google playstore'un sizin için yaptığı gibi güncelleme isteyen düğme otomatik olarak olacaktır.


0

Güncellemek için mevcut uygulamanın yeni bir sürümü olduğunu kullanıcılarınıza bildirebilirsiniz. Ayrıca, bu koşul doğruysa, uygulamada oturum açmayı engelleyebilirsiniz.

Lütfen bunun size çözüm sağlayıp sağlamadığına bakın .


0

Bu soruna, sürüm kodunu Uygulama Sayfasından (Google Play Uygulama sayfası) çıkarmak gibi birçok çözüm olabilir.

Ama size bir kuruşa mal olmayacak ve sihir gibi çalışacak nihai çözümü göstereceğim.

  1. Uygulamanızın en son Sürüm kodunu Firebase Remote
    Config paneline kaydetmeniz yeterlidir
  2. Uygulama her açıldığında bu sürüm kodu değerini getir
  3. Aşağıdaki kodla alabileceğiniz uygulamanın mevcut sürüm koduyla karşılaştırın

    private int getCurrentVersionCode() {
    try {
        return getPackageManager().getPackageInfo(getPackageName(), 0).versionCode;
    } catch (NameNotFoundException e) {
        e.printStackTrace();
    }
    return -1;
    

    }

Alınan sürüm kodu mevcut sürümden büyükse, uygulamayı güncellemenizi isteyen bir AlertDialog gösterin. Aksi takdirde, uygulama zaten güncellenmiştir.

Bu nedenle, yeni sürümü her kullanıma sunduğunuzda, bu yeni sürüm kodunu Firebase Remote yapılandırma paneline koymanız gerekir.

Firebase Remote Config kullanarak kullanıcıları uygulamayı güncellemeye nasıl zorlayacağınızla ilgili eğiticinin tamamını okuyabilirsiniz.



0

var activeVersion = "3.9.2";

var currentVersion = "3.9.1";

var activeVersionArr = activeVersion.split ("."); var currentVersionArr = currentVersion.split (".");

var CompareArray = JSON.stringify (activeVersionArr) == JSON.stringify (currentVersionArr);

eğer (CompareArray) {false döndür; }

if (! CompareArray) {for (var i = 0; i <activeVersionArr.length; i ++) {
if (activeVersionArr [i]! == currentVersionArr [i]) {
if (activeVersionArr [i]> currentVersionArr [i]) { doğruya dön; } else {yanlış dönüş; }
}}}

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.