Android In App Update

Untuk memperbarui aplikasi sejatinya ponsel Android sudah diberikan fitur yang dinamakan Automatically Update melalui Google Play Store hanya saja seringkali terdapat satu atau lain hal dimana diperlukan adanya update manually dari penggunanya, misalnya saja apabila pengguna tidak sengaja me-nonaktifkan fitur Automatically Updates, ponsel sedang berada pada mode metered connection atau tidak tersambung ke jaringan Wi-Fi yang akan menyebabkan update tidak dapat berjalan secara otomatis, serta masih banyak faktor lainya.

Lalu sebagai developer, tentu saja kedepan kita akan menghadapi kondisi dimana pengguna aplikasi diharuskan memperbarui aplikasinya untuk dapat memaksimalkan fitur dari aplikasi tersebut atau sekedar untuk memperbaiki beberapa bugs. Maka dari itu kita dapat memanfaatkan salah satu fitur dari Google yang disebut dengan In App Update dimana ini merupakan salah satu bagian dari Play Core Library.

Intro


Gambaran singkat dari fitur ini adalah pengguna tidak perlu membuka Google Play Store apabila ingin memperbarui aplikasi, cukup membuka aplikasinya saja dan pada saat pertama kali di buka aplikasi akan mengecek ke Google Play Service apakah tersedia update terbaru untuk aplikasi tersebut yang sudah tersedia di Google Pllay Store, dan pengguna dapat melakukan update secara langsung didalam aplikasi.

Terdapat 2 tipe atau mode pembaruan yaitu :

  1. Flexible Updates

Disini dialog pembaruan akan muncul, dan terdapat 2 tombol yaitu untuk menunda ataupun langsung memperbarui aplikasi. Pengguna dapat melakukan pembaruan kapanpun mereka mau, dan selama pengguna belum memperbarui aplikasi tetap dapapt digunakan sebagai mana mestinya.
Mode ini disarankan untuk digunakan apabila tidak terdapat perubahan major pada aplikasi kita khususnya yang akan mempengaruhi fungsi inti dari aplikasi.

2. Immediate Updates

Mode ini mungkin lebih familiar disebut dengan Force Update karena akan memaksa pengguna untuk memperbarui aplikasinya apabila ingin terus dapat menggunakanya.
Pada mode ini bukan hanya dialog kecil saja yang akan ditampilkan namun seukuran satu layar penuh dengan tombol close di ujung atas dan kemudian ada tombol Update untuk memperbarui aplikasi, dimana apabila handphone sedang tidak tersambung Wi-Fi maka akan ada 2 radio button untuk opsi apakah akan memperbarui melalui jaringan apapun termasuk seluler atau akan menunggu tersambung ke jaringan Wi-Fi (ini akan melakukan pembaruan pada background apabila pengguna menutup aplikasi).

Implementation

  1. Tambahkan dependensi

Untuk versi terbaru pada saat saya menulis ini adalah di versi 1.10.0

2. Tambahkan fungsi dibawah pada AppModule.kt (Depenndency Injection) :

Selebihnya tinggal implementasi pada Halaman Utama aplikasi saja umumnya pada MainActivity.

3. Inject dan tambahkan variable :

4. Lakukan pengecekan update pada onCreate() :

5. Tambahkan constant :

Pada UPDATE_TYPE inilah kita tentukan type/mode pembaruan apa yang akan dilakukan apakah Immediate atau Flexible.

6. Method checkForUpdate() :

Inisialisasi listener untuk updater

Disini terdapat beberapa kondisi dari state updater nya saat instalasi yang dapat dibaca lebih lengkap disini. Namun saya rasa yang akan saya gunakan hanya 3 saja dan yang lainya saya masukkan ke else branch saja.
Semua sudah sesuai dengan namanya, yaitu :

  • Downloaded ini adalah state dimana aplikasi telah selesai diunduh namun belum di install dan pada beberapa kasus instalasi tidak berjalan secara otomatis maka nanti akan dibuat satu SnackBar yang akan menampilkan unduhan telah selesai dan terdapat tombol untuk memulai ulang aplikasi.
  • Installed ini merupakan state dimana aplikasi telah berhasil diunduh dan diinstall pembaruan-nya, namun nanti akan kita buat fungsi untuk memulai ulang aplikasinya karena yang saya alami sebbelumnya ketika sudah selesai aplikasi menutup dengan sendirinya.
  • Canceled adalah state ketika pengguna membatalkan proses pembaruan, entah ketika sedang mengunduh, menginstall atau di tengah proses lainya. Disini cukup tambahkan kondisi saja apabila UpdateType merupakan Immediate maka akan memanggil method checkForUpdate() yang akan kembali menampilkan dialog satu layar penuh terkait permintaan pembaruan aplikasi.

7. Register Installation Listener :

8. Ambil informasi ketersediaan pembaruan dari Google Play :

Ini merupakan baris fungsi utama yang akan menampilkan dialog pembaruan apabila tersedia versi yang lebih baru.

9. Method onDownloadCompleted() :

Nanti kurang lebih akan seperti ini output-nya :

10. Method restartApp() :

Karena semua process yang sukses nanti akan saya arahkan kesini maka saya unnregisterListener nya disini saja.

Handling untuk pengguna yang membatalkan proses pembaruan aplikasi.

  1. Pada onActivityResult() :

Disini apabila terjadi kegagalan pada saat melakukan pembaruan atau pengguna membatalkan pembaruan (dengan catatan UpdateType nya Immediate) maka pengguna akan ditampilkan kembali dialog untuk memperbarui aplikasinya kembali.

2. Pada onResume() :

Kurang lebih sama juga untuk handling disini hanya saja event ini dibutuhkan karena tidak semua pengguna sabar menunggu proses update yang terkadang tidak sebentar dan memutuskan untuk menaruh aplikasi di background, sehingga ketika aplikasi dibuka dan kembali ke foreground kita masih dapat men-track status dari pembaruan aplikasi itu sendiri.

Testing

Sebelum melakukan testing kita perlu mengaktifkan Developer Mode pada Play Store di Android dan mengaktifkan opsi Internal App Sharing pada Play Store di handphone, caranya sebagai berikut :

  1. Klik avatar profil anda untuk menampilkan opsi Menu lalu pilih Settings

2. Expand pada opsi About dan klik beberapa kali pada Play Store version untuk mengaktifkan Developer Mode

3. Expand opsi General dan aktifkan Internal App Sharing, jika muncul dialog konfirmasi bisa pilih Yes/Turn On

Kemudian untuk testing dapat memanfaatkan fitur Internal App Sharing pada Google Play Console.

Versi awal.
  1. Sign dan Build APK / AAB versi release (misal versi 1.3.5)
  2. Unggah ke halaman Internal App Sharing
  3. Copy link dan buka via handphone lalu Install
Versi update / pembaruann.
  1. Sign dan Build APK / AAB versi release dengan versionCode & versionName yang lebih tinggi (misal versi 1.3.6)
  2. Unggah ke halaman Internal App Sharing
  3. Copy link dan buka via handphone tapi JANGAN tekan tombol Update disini
  4. Buka aplikasi, niscaya dialog permintaan update akan muncul

Akhir kata, CMIIW.

Rizky Agung Ramadhan has written 10 articles

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>