Paksa pembaruan aplikasi Android saat versi baru tersedia

102

Saya memiliki aplikasi di Google Play Store. Jika versi pembaruan tersedia, versi yang lebih lama akan menjadi tidak dapat digunakan - yaitu, jika pengguna tidak memperbarui aplikasi, mereka tidak masuk ke dalam aplikasi. Bagaimana cara memaksa pengguna untuk memperbarui aplikasi ketika versi baru tersedia?

ashraful
sumber
1
Proyek GitHub open source ini (MAHAndroidUpdater) sepenuhnya menyediakan fungsionalitas ini. Cobalah, Sangat sederhana. github.com/hummatli/MAHAndroidUpdater
Sattar Hummatli

Jawaban:

99

Saya setuju dengan poin Scott Helme dalam jawaban lain di sini. Namun dalam beberapa situasi ekstrim (masalah keamanan, perubahan yang merusak API ...) di mana Anda benar-benar membutuhkan pengguna untuk memperbarui untuk terus menggunakan aplikasi, Anda dapat menyediakan API pembuatan versi sederhana. API akan terlihat seperti ini:

versionCheck API:

Parameter permintaan:

  • int appVersion

Tanggapan

  1. boolean forceUpgrade
  2. boolean recommendUpgrade

Saat aplikasi Anda dimulai, Anda bisa memanggil API ini yang diteruskan dalam versi aplikasi saat ini, dan memeriksa respons dari panggilan API pembuatan versi.

Jika forceUpgradeadalah true, menunjukkan dialog popup dengan pilihan baik membiarkan pengguna keluar dari aplikasi, atau pergi ke Google Play Store untuk meng-upgrade aplikasi.

Lain jika recommendUpgrade tidak true, tampilkan dialog pop-up dengan opsi untuk memperbarui atau terus menggunakan aplikasi.

Bahkan dengan kemampuan peningkatan paksa ini, Anda harus terus mendukung versi yang lebih lama, kecuali benar-benar diperlukan.

Michael
sumber
Apakah Anda akan menampilkan popup setiap kali aplikasi dimulai dan merekomendasikan bahwa Upgrade benar? (dari sudut pandang UX) Atau cukup tampilkan popup sekali dan jangan tampilkan lagi jika pengguna menolak untuk meningkatkan.
Aneesh
8
Untuk peningkatan yang disarankan, menurut saya Anda tidak boleh menampilkan lagi jika pengguna menolak. Anda juga bisa menampilkannya "setiap n kali pengguna membuka aplikasi". Anda dapat memutuskan sendiri nilai n dan menerapkannya.
Michael
3
solusi yang lebih baik imo adalah meneruskan versi aplikasi secara sistematis di header semua panggilan API, dan kemudian meminta API mengembalikan kode status tertentu jika mendeteksi bahwa versi tersebut sudah usang. lalu menanganinya di dalam aplikasi. ini lebih baik daripada harus memanggil API khusus lainnya untuk pemeriksaan ini, dan harus mencari tahu dengan tepat kapan / di mana panggilan API ini harus dilakukan di dalam aplikasi / layanan.
Raphael C
@RaphaelC Ini sangat tergantung pada implementasi sisi server Anda. Juga tidak sempurna untuk menambahkan filter yang memeriksa versi pada semua API dalam beberapa situasi.
Sep GH
4
@SepGH banyak hal telah berubah sejak itu, dan Android sekarang menawarkan API yang dapat Anda gunakan untuk memaksa pengguna meningkatkan dan memblokirnya agar tidak terus menggunakan aplikasi jika dia tidak meningkatkan ke versi minimum: developer.android.com/guide/ app-bundle / in-app-updates
Raphael C
56

coba ini: Pertama, Anda perlu melakukan panggilan permintaan ke tautan playstore, ambil versi saat ini dari sana, lalu bandingkan dengan versi Anda saat ini.

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();
    }
AshuKingSharma
sumber
1
Saya kira ini akan membutuhkan penggunaan JSoup untuk menambahkan perpustakaan eksternal?
Abraham Philip
1
Ya, tapi itu untuk mendapatkan halaman div html. Maksud saya, Anda mungkin tidak perlu menggunakan pustaka pihak ketiga untuk mencapai fungsi ini, jika Anda dapat mengikis elemen html itu tanpa JSoup, tetap saja itu akan berhasil
AshuKingSharma
1
bagaimana jika mereka mengubah nilai itemprop ??
asok Buzz
1
Jika mereka mengubah nilai itemprop, maka itu akan mempengaruhi aplikasi saya juga, saya akan mengedit jawaban saya untuk mendukungnya segera, jadi jangan khawatir sampai saat itu :)
AshuKingSharma
Set yang bagus Dapat dibatalkan (salah)
Kai Wang
48

Anda tidak boleh berhenti mendukung versi lama segera setelah versi baru keluar. Ini akan menghasilkan pengalaman pengguna yang buruk. Saya tidak tahu ada vendor perangkat lunak yang melakukan ini, untuk alasan yang bagus.

Apa yang terjadi jika pengguna tidak dapat memperbarui atau tidak menginginkannya pada saat itu? Mereka tidak bisa menggunakan aplikasi Anda, itu buruk.

Google tidak memberikan opsi apa pun untuk pelacakan versi seperti itu sehingga Anda harus menggulungnya sendiri. Layanan web sederhana untuk mengembalikan versi langsung saat ini yang dapat diperiksa oleh aplikasi Anda sudah cukup. Anda kemudian dapat memperbarui versi dan aplikasi akan tahu bahwa itu sudah usang. Saya hanya akan merekomendasikan penggunaan ini untuk memberi tahu pengguna Anda bahwa ada pembaruan lebih cepat daripada bergantung pada Google Play. Ini seharusnya tidak benar-benar digunakan untuk mencegah aplikasi bekerja, hanya untuk meminta pengguna memperbarui.

Scott Helme
sumber
2
@ashraful jika ini atau jawaban apa pun telah menjawab pertanyaan Anda, harap pertimbangkan untuk menerimanya dengan mengklik tanda centang. Hal ini menunjukkan kepada komunitas yang lebih luas bahwa Anda telah menemukan solusi dan memberikan reputasi kepada penjawab dan diri Anda sendiri. Tidak ada kewajiban untuk melakukan ini.
Sufian
Jawabannya subjektif terhadap berapa banyak vendor perangkat lunak yang ANDA KETAHUI keberadaannya. Bisakah Anda mengukurnya?
Lou Morda
1
Apakah mungkin untuk mendapatkan versi aplikasi saat ini dari App Store atau Play Store? atau apakah saya perlu menyimpan versi aplikasi terbaru di server saya? Karena saat ini saya memiliki panggilan layanan di server saya untuk mengembalikan versi aplikasi terbaru, tetapi kesulitan adalah setiap kali perlu memperbarui server saat menerbitkan aplikasi. Jadi apakah mungkin untuk mendapatkan nomor versi saat ini dari toko masing-masing?
subha
2
Supercell hanya mendukung versi terbaru dari game mereka. Setelah mereka mendorong versi baru ke Google Play, klien lama mana pun yang mencoba menyambungkan akan mendapatkan respons "perlu memperbarui" dari server dan melihat sambungan ditutup. Mereka melakukan ini beberapa kali setiap tahun. Jadi, kecuali jika Anda tidak ingin menghitung "perusahaan game" sebagai "vendor perangkat lunak", sekarang Anda mengetahuinya :) Mengingat mereka masih menghasilkan beberapa juta dolar setiap hari, tampaknya pengalaman pengguna yang mengerikan ini bukanlah penghenti acara .
Arjan
@Subha Ya, itu mungkin. Tetapi tidak ada API resmi untuk itu, jadi Anda harus mengikis halaman web. Yang juga berarti dapat rusak jika halaman web berubah. Saya melakukannya di aplikasi pihak ketiga yang saya tulis dan memposting kode yang agak sederhana sebagai jawaban di sini . Saat ini, kode tersebut akan berfungsi untuk halaman Play dan iTunes. Namun dalam lingkungan produksi, mungkin lebih baik mencari solusi yang secara otomatis memperbarui versi aplikasi terbaru di server, daripada harus bergantung pada format halaman di Google atau Apple?
Arjan
27

Solusi dari tim Google

Mulai dari Android 5.0 yang mudah dicapai melalui mekanisme pembaruan Google Play In App yang baru. Persyaratannya adalah memiliki pustaka Play Core versi 1.5.0+ dan menggunakan idstribution App Bundle, bukan apks.

Pustaka memberi Anda 2 cara berbeda untuk memberi tahu pengguna tentang pembaruan:

  1. Fleksibel, ketika pengguna dapat terus menggunakan aplikasi saat sedang diperbarui di latar belakang.

  2. Segera - layar pemblokiran yang tidak mengizinkan pengguna untuk masuk ke aplikasi sampai mereka memperbaruinya.

Ada langkah selanjutnya untuk menerapkannya:

  1. Periksa ketersediaan pembaruan
  2. Mulai perbarui
  3. Dapatkan panggilan balik untuk status pembaruan
  4. Tangani pembaruan

Semua implementasi langkah ini dijelaskan secara detail di situs resmi: https://developer.android.com/guide/app-bundle/in-app-updates

Gaket
sumber
16

Jawaban Scott dan Michael benar. Host layanan yang memberikan nomor versi min yang Anda dukung dan bandingkan dengan versi yang diinstal. Anda semestinya tidak perlu menggunakan ini, tetapi ini adalah penyelamat jika beberapa versi di luar sana Anda benar-benar harus membunuh karena beberapa cacat serius.

Saya hanya ingin menambahkan kode untuk apa yang harus dilakukan selanjutnya. Inilah cara Anda kemudian meluncurkan Google Play Intent dan membawanya ke versi baru Anda di toko setelah meminta pengguna bahwa mereka harus meningkatkan.

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)));

            }
        });
    }
}

Anda harus mempertimbangkan kembali desain Anda jika Anda harus memaksakan peningkatan pada setiap rilis.

bsautner
sumber
11

Google memperkenalkan lib pembaruan dalam aplikasi, ( https://developer.android.com/guide/app-bundle/in-app-updates ) itu bekerja di Lollipop + dan memberi Anda kemampuan untuk meminta pengguna untuk pembaruan dengan baik dialog (FLEKSIBEL) atau dengan pesan layar penuh wajib (SEGERA).

Anda perlu menerapkan yang terakhir. Berikut tampilannya: masukkan deskripsi gambar di sini

Saya membahas semua kode dalam jawaban ini: https://stackoverflow.com/a/56808529/5502121

Kirill Karmazin
sumber
1
Inilah jawaban terbaik!
fvaldivia
Fitur ini sebenarnya bergantung pada pembaruan cache Play saat pengguna meluncurkan aplikasi Anda, yaitu Jika nomor versi untuk aplikasi Anda di cache tidak sama dengan nomor versi penerapan terbaru Anda di Playstore, maka itu tidak akan meminta pengguna ..
kiran01bm
7

Secara resmi google menyediakan API Android untuk ini.

API saat ini sedang diuji dengan beberapa mitra, dan akan segera tersedia untuk semua pengembang.

API Pembaruan tersedia sekarang - https://developer.android.com/guide/app-bundle/in-app-updates

Chulo
sumber
2
Juga lihat: android-developers.googleblog.com/2018/11/…
albert c braun
1
Apakah api ini sekarang tersedia?
Yayayaya
Saya mencarinya di Google dan menemukan pengembang
ini.android.com/guide/app-bundle/in-app-updates
Fitur ini sebenarnya bergantung pada pembaruan cache Play saat pengguna meluncurkan aplikasi Anda, yaitu Jika nomor versi untuk aplikasi Anda di cache tidak sama dengan nomor versi penerapan terbaru Anda di Playstore, maka itu tidak akan meminta pengguna ..
kiran01bm
6

Saya sangat merekomendasikan untuk memeriksa fungsi Remote Config Firebase untuk ini.

Saya menerapkannya menggunakan parameter - app_version_enabled - dengan kondisi "Versi Android Nonaktif" yang terlihat seperti ini:

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

Default untuk parameternya adalah "true", tetapi Versi Android yang Dinonaktifkan memiliki nilai false. Di regex saya untuk Versi Android yang Dinonaktifkan, Anda dapat menambahkan lebih banyak versi yang dinonaktifkan hanya dengan yang lain |{version name}di dalam tanda kurung tersebut.

Kemudian saya hanya memeriksa apakah konfigurasi mengatakan versi diaktifkan atau tidak - Saya memiliki aktivitas yang saya luncurkan yang memaksa pengguna untuk meningkatkan. Saya memeriksa di hanya dua tempat aplikasi dapat diluncurkan dari eksternal (aktivitas peluncur default saya dan aktivitas penanganan maksud). Karena Remote Config bekerja pada basis cache, Remote Config tidak akan langsung menangkap versi aplikasi yang "dinonaktifkan" jika waktu yang diperlukan belum berlalu untuk cache menjadi tidak valid, tetapi itu paling lama 12 jam jika Anda melewatinya nilai kedaluwarsa cache yang direkomendasikan.

Chantell Osejo
sumber
Ini adalah pilihan yang sangat bagus. Dengan menentukan subset dari versi yang "dinonaktifkan", Anda dapat dengan cepat melindungi diri Anda sendiri, jika aplikasi memiliki masalah keamanan atau masalah kinerja utama. Ini memungkinkan Anda untuk terus mendukung setiap versi tetapi melarang versi tertentu ketika diperlukan.
Terry
3

periksa kode versi apk lokal dan play store

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

menerapkan kelas untuk pemeriksaan versi

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;
}
}

kotak dialob untuk pembaruan

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

tata letak dialog

<?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>

Mahesh Pandit
sumber
2

Lebih baik menentukan proses kita sendiri untuk peningkatan.

  1. Buat layanan web yang memberikan versi terbaru untuk aplikasi (ios, android) dari server kami.
  2. Atau Layanan web apa pun yang Anda gunakan dalam aplikasi (mis. Login) akan mengembalikan versi aplikasi terbaru dari server.
  3. Setelah aplikasi mendapatkan versi dari # 1 atau 2. Aplikasi akan memeriksa silang dengan aplikasi lokal / saat ini. Jika ada perbedaan maka kita bisa menampilkan alert sebagai berikut,

Android & iOS: Jika versi aplikasi terbaru tersedia maka itu akan menampilkan peringatan sebagai "Versi terbaru tersedia dengan lebih banyak fitur, Untuk meningkatkan klik tombol upgrade" (Peringatan dengan tombol "Upgarde" dan "Tidak. Terima kasih".) Kemudian aplikasi akan dialihkan ke playstore / Appstore dan itu akan membuka versi terbaru.

 --- we can do upgrade compulsory or optionally.

Sebelum proses Upgrade pastikan Anda menangani proses migrasi db dengan benar jika ada perubahan skema db.

Sandeep
sumber
1

Untuk memaksa pengguna aplikasi memperbarui jika pembaruan tersedia di pasar, Anda harus terlebih dahulu memeriksa versi aplikasi di pasar dan membandingkannya dengan versi aplikasi di perangkat. Jika berbeda, mungkin ada pembaruan yang tersedia. Dalam posting ini saya menuliskan kode untuk mendapatkan versi pasar saat ini dan versi saat ini di perangkat dan membandingkannya bersama. Saya juga menunjukkan cara menampilkan dialog pembaruan dan mengarahkan pengguna ke halaman pembaruan. Silakan kunjungi tautan ini: https://stackoverflow.com/a/33925032/5475941 Pastikan bahwa dalam dialog Anda hanya menampilkan tombol pembaruan pengguna dan jangan tampilkan tombol batal kepadanya. Dalam hal ini, dia akan dipaksa untuk memperbarui, sebelum dia dapat menggunakan aplikasi tersebut.

Mohammad
sumber
1

Apa yang pasti harus disebutkan di sini adalah API Pembaruan Dalam Aplikasi yang akan segera dirilis .

Anda akan memiliki dua opsi dengan API ini; yang pertama adalah pengalaman layar penuh untuk pembaruan penting saat Anda mengharapkan pengguna menunggu pembaruan diterapkan segera. Opsi kedua adalah pembaruan fleksibel, yang berarti pengguna dapat tetap menggunakan aplikasi saat pembaruan diunduh. Anda dapat sepenuhnya menyesuaikan aliran pembaruan sehingga terasa seperti bagian dari aplikasi Anda.

Marko Gajić
sumber
1

Sebaiknya gunakan konfigurasi jarak jauh untuk versi aplikasi dan selalu periksa aktivitas peluncuran apakah versi aplikasi saat ini sama dengan versi jarak jauh atau tidak jika tidak memaksa pembaruan dari toko aplikasi ..

Logika sederhana selamat coding ..

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

Neeraj Singh
sumber
1

Anda dapat menggunakan pembaruan dalam aplikasi Play Core Library untuk mengatasi ini. Anda dapat memeriksa ketersediaan pembaruan dan menginstalnya jika tersedia dengan mulus.

Pembaruan dalam aplikasi tidak kompatibel dengan aplikasi yang menggunakan file perluasan APK (file .obb). Anda dapat memilih unduhan yang fleksibel atau pembaruan langsung yang akan ditangani oleh Google Play untuk mengunduh dan menginstal pembaruan untuk Anda.

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

Lihat jawaban ini https://stackoverflow.com/a/58212818/7579041

Amin Pinjari
sumber
0

Anda dapat melakukan ini dengan melakukan pencocokan antara nomor versi yang disimpan pada aplikasi dalam variabel dan demikian pula versi aplikasi saat ini disimpan di sisi server dan setiap kali pengguna membuka aplikasi, permintaan pertama harus dikirim untuk memeriksa apakah itu ditemukan pencocokan tidak melakukan apa pun, cukup biarkan pengguna menggunakan aplikasi Anda, jika tidak, jalankan maksud ke google playstore atau buka jendela tampilan web ke aplikasi Anda (window.open (" https://play.google.com/store/apps/details?id= package_name ", '_system', 'location = yes');) dan di sana mereka akan secara otomatis memiliki tombol yang meminta pembaruan, itulah yang dilakukan google playstore untuk Anda jika Anda tidak mengaktifkan pembaruan otomatis.

shiva2492
sumber
0

Anda dapat memberi tahu pengguna Anda bahwa ada versi baru dari aplikasi saat ini yang tersedia untuk diperbarui. Selain itu, jika kondisi ini benar, Anda dapat memblokir login di aplikasi.

Silakan lihat apakah ini memberi Anda solusi.

Vansuita Jr.
sumber
0

Nah, mungkin ada banyak solusi untuk masalah ini seperti menyalin kode versi dari Halaman Aplikasi (halaman Aplikasi Google Play), dll.

Tetapi saya akan menunjukkan kepada Anda solusi pamungkas yang tidak memerlukan biaya sepeser pun dan akan bekerja seperti sulap.

  1. Cukup simpan kode Versi terbaru aplikasi Anda di Firebase Remote
    panel Config
  2. Ambil nilai kode versi itu setiap kali aplikasi dibuka
  3. Bandingkan dengan kode versi aplikasi saat ini, yang bisa Anda dapatkan dengan kode berikut

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

    }

Jika kode versi yang diambil lebih besar dari versi saat ini, tampilkan AlertDialog yang meminta untuk memperbarui aplikasi. Jika tidak, aplikasi sudah diperbarui.

Jadi, setiap kali Anda meluncurkan versi baru, Anda harus meletakkan kode versi baru itu di panel konfigurasi Firebase Remote

Anda dapat membaca seluruh tutorial tentang cara memaksa pengguna untuk mengupdate aplikasi menggunakan Firebase Remote Config

Waqas Younis
sumber
0

Google merilis Pembaruan Dalam Aplikasi untuk perpustakaan Play Core.

Saya mengimplementasikan perpustakaan ringan untuk dengan mudah mengimplementasikan pembaruan dalam aplikasi. Anda dapat menemukan tautan berikut ini contoh tentang cara memaksa pengguna untuk melakukan pembaruan.

https://github.com/dnKaratzas/android-inapp-update#forced-updates

dKaratzas.dll
sumber
0

var activeVersion = "3.9.2";

var currentVersion = "3.9.1";

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

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

if (bandingkanArray) {return false; }

if (! bandingkanArray) {untuk (var i = 0; i <activeVersionArr.length; i ++) {
if (activeVersionArr [i]! == currentVersionArr [i]) {
if (activeVersionArr [i]> currentVersionArr [i]) { kembali benar; } lain {return false; }
}}}

Keshav Gera
sumber