Pembaruan Dalam Aplikasi: Mempercepat Pembaruan Aplikasi Android



Di antara beragam alat yang diumumkan di Android Dev Summit , saya ingin memberi perhatian khusus pada mekanisme pembaruan aplikasi In-App Updates (IAUs), yang membantu pengembang mempercepat penambahan fitur baru, perbaikan bug, dan peningkatan kinerja. Karena fungsi ini diterbitkan setelah Google I / O 2019, dalam artikel ini saya akan berbicara secara rinci tentang IAU, menjelaskan skema implementasi yang direkomendasikan dan memberikan beberapa contoh kode. Saya juga akan berbicara tentang pengalaman kami mengintegrasikan IAU ke Pandao , aplikasi untuk memesan barang dari China.

API baru memungkinkan pengembang untuk memulai pembaruan aplikasi ke versi terbaru yang tersedia di Google Play. Dengan cara ini, IAU melengkapi mekanisme pembaruan otomatis Google Play yang ada. IAU mengandung beberapa skema implementasi yang secara fundamental berbeda dalam hal interaksi pengguna.

  1. Flexible Flow menawarkan pengguna untuk mengunduh pembaruan di latar belakang dan menginstalnya pada waktu yang nyaman bagi pengguna. Ini dimaksudkan untuk kasus-kasus ketika pengguna masih dapat menggunakan versi lama, tetapi yang baru sudah tersedia.


  2. Aliran Langsung mengharuskan pengguna untuk mengunduh dan menginstal pembaruan sebelum melanjutkan menggunakan aplikasi. Ini dimaksudkan untuk kasus di mana sangat penting bagi pengembang untuk memperbarui aplikasi.



Karena opsi kedua tidak begitu penting dan kurang cocok untuk aplikasi Pandao, kami akan menganalisis skenario Aliran Fleksibel lebih terinci.

Integrasi Aliran Fleksibel IAU


Gunakan kasing


Proses peningkatan menggunakan IAU terdiri dari beberapa langkah.

  1. Aplikasi menggunakan perpustakaan Play Core, yang memeriksa di Google Play apakah ada pembaruan yang tersedia.
  2. Jika ya, maka aplikasi meminta Google Play untuk menampilkan dialog IAU. Google Play menunjukkan kepada pengguna dialog dengan proposal untuk memperbarui.
  3. Jika pengguna setuju, Google Play di latar belakang mengunduh pembaruan, menunjukkan kepada pengguna di bilah status kemajuan unduhan.
  4. Jika unduhan selesai ketika aplikasi berjalan di latar belakang, Google Play akan secara otomatis menyelesaikan instalasi. Jika aplikasi aktif saat ini, maka untuk kasus seperti itu perlu untuk menentukan logika penyelesaian instalasi Anda sendiri. Pertimbangkan skenario berikut ini.
    1. Aplikasi memulai proses instalasi dengan menunjukkan kepada pengguna dialog Google Play dengan indikator kemajuan. Setelah instalasi selesai, versi aplikasi yang diperbarui diluncurkan. Dalam hal ini, disarankan untuk menampilkan dialog tambahan yang memungkinkan pengguna untuk mengkonfirmasi bahwa ia siap untuk memulai kembali aplikasi sekarang. Ini adalah skema implementasi yang direkomendasikan .
    2. Aplikasi menunggu hingga di latar belakang, dan kemudian menyelesaikan pembaruan. Di satu sisi, ini adalah perilaku yang kurang intrusif dari sudut pandang UX, karena interaksi pengguna dengan aplikasi tidak terganggu. Tetapi di sisi lain, itu mengharuskan pengembang untuk mengimplementasikan logika untuk menentukan apakah aplikasi tersebut di latar belakang.

Jika pemasangan pembaruan yang diunduh tidak selesai, maka Google Play dapat menyelesaikan instalasi di latar belakang. Opsi ini lebih baik tidak digunakan secara eksplisit, karena tidak menjamin instalasi pembaruan.

Persyaratan Pengujian Dasar


Untuk menyelesaikan secara manual seluruh proses pembaruan pada perangkat uji, Anda harus memiliki setidaknya dua versi aplikasi dengan nomor rakitan berbeda: sumber dan target .

  • Versi asli dengan angka yang lebih tinggi harus dipublikasikan di Google Play, itu akan diidentifikasi oleh Google Play sebagai pembaruan yang tersedia. Versi target dengan nomor build lebih rendah dan IAU terintegrasi harus diinstal pada perangkat, kami akan memperbaruinya. Intinya adalah bahwa ketika aplikasi meminta Google Play untuk memeriksa pembaruan, itu akan membandingkan nomor perakitan dari versi yang diinstal dan tersedia. Jadi IAU hanya akan diluncurkan jika nomor build di Google Play lebih tinggi dari versi saat ini di perangkat.
  • Versi sumber dan target harus memiliki nama paket yang sama dan harus ditandatangani dengan sertifikat rilis yang sama .
  • Android 5.0 (API level 21) atau lebih tinggi.
  • Mainkan Core library 1.5.0 atau lebih tinggi.

Contoh kode


Di sini kita melihat kode contoh untuk menggunakan IAUs Flexible Flow, yang juga dapat ditemukan di dokumentasi resmi . Pertama, Anda perlu menambahkan perpustakaan Play Core ke file build.gradle di tingkat modul.

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

Kemudian buat instance AppUpdateManager dan tambahkan fungsi callback ke AppUpdateInfo , yang akan mengembalikan informasi tentang ketersediaan pembaruan, objek untuk memulai pembaruan (jika tersedia) dan kemajuan unduhan saat ini, jika sudah dimulai.

 // Create instance of the IAUs manager. val appUpdateManager = AppUpdateManagerFactory.create(context) // Add state listener to app update info task. appUpdateManager.appUpdateInfo.addOnSuccessListener { appUpdateInfo -> // If there is an update available, prepare to promote it. if (appUpdateInfo.updateAvailability() == UpdateAvailability.UPDATE_AVAILABLE) { // ... } // If the process of downloading is finished, start the completion flow. if (appUpdateInfo.installStatus() == InstallStatus.DOWNLOADED) { // ... } } .addOnFailureListener { e -> // Handle the error. } 

Untuk menampilkan dialog untuk meminta pembaruan dari Google Play, Anda harus melewati objek AppUpdateInfo diterima ke metode AppUpdateInfo .

  appUpdateManager.startUpdateFlowForResult( // Pass the intent that is returned by 'getAppUpdateInfo()'. appUpdateInfo, // Or 'AppUpdateType.IMMEDIATE for immediate updates. AppUpdateType.FLEXIBLE, // The current activity. activity, REQUEST_CODE ) 

Untuk memantau status pembaruan, Anda dapat menambahkan pendengar acara InstallStateUpdatedListener ke manajer IAU.

 // Create a listener to track downloading state updates. val listener = InstallStateUpdatedListener { state -> // Update progress indicator, request user to approve app reload, etc. } // At some point before starting an update, register a listener for updates. appUpdateManager.registerListener(listener) // ... // At some point when status updates are no longer needed, unregister the listener. appUpdateManager.unregisterListener(listener) 

Segera setelah pembaruan diunduh (status DOWNLOADED ), Anda harus memulai ulang aplikasi untuk menyelesaikan pembaruan. Restart dapat dimulai dengan memanggil appUpdateManager.completeUpdate() , tetapi sebelum itu disarankan untuk menampilkan kotak dialog sehingga pengguna secara eksplisit mengkonfirmasi kesiapannya untuk memulai kembali aplikasi.

 Snackbar.make( rootView, "An update has just been downloaded from Google Play", Snackbar.LENGTH_INDEFINITE ).apply { setAction("RELOAD") { appUpdateManager.completeUpdate() } show() } 

Kesalahan "Pembaruan Tidak Tersedia"


Pertama, periksa kembali kepatuhan dengan persyaratan yang tercantum di bagian Persyaratan Implementasi Dasar. Jika Anda telah melakukan segalanya, tetapi memperbarui sesuai dengan panggilan onSuccess masih belum tersedia, maka masalahnya mungkin dalam caching. Kemungkinan aplikasi Google Play tidak mengetahui pembaruan yang tersedia karena mekanisme caching internal. Untuk menghindari hal ini selama pengujian manual, Anda dapat memaksa reset cache dengan membuka halaman "Aplikasi dan game saya" di Google Play. Atau Anda bisa menghapus cache di pengaturan aplikasi Google Play. Harap perhatikan bahwa masalah ini hanya terjadi selama pengujian, seharusnya tidak memengaruhi pengguna akhir, karena cache mereka masih diperbarui setiap hari.

Aliran Fleksibel IAU di aplikasi Pandao


Kami berpartisipasi dalam program akses awal dan mengintegrasikan IAUs Flexible Flow (rekomendasi implementasi) ke dalam aplikasi Pandao, sebuah platform di mana produsen dan vendor dapat memperdagangkan barang-barang Tiongkok. Dialog IAU ditampilkan di layar utama sehingga jumlah maksimum pengguna dapat berinteraksi dengannya. Awalnya, kami ingin menunjukkan dialog tidak lebih dari sekali sehari, agar tidak mengalihkan orang dari berinteraksi dengan aplikasi.

Karena pengujian A / B memainkan peran penting dalam siklus hidup setiap fitur baru, kami memutuskan untuk mengevaluasi efek IAU dalam aplikasi kami. Kami secara acak membagi pengguna menjadi dua kelompok terpisah. Yang pertama adalah kontrol, tanpa menggunakan IAU, dan kelompok kedua adalah uji, kami menunjukkan dialog IAU kepada pengguna ini.


Tes A / B Arus Fleksibel IAU dalam aplikasi Pandao.

Selama beberapa rilis terakhir, kami telah mengukur persentase pengguna aktif dari setiap versi aplikasi. Ternyata di antara pengguna aktif dengan versi terbaru yang tersedia pada waktu itu, bagian utama terdiri dari peserta dari kelompok B, yaitu, dengan fungsi IAU. Garis ungu pada grafik menunjukkan bahwa pada hari-hari pertama setelah penerbitan versi 1.29.1, jumlah pengguna aktif dengan IAU melebihi jumlah pengguna tanpa fungsi ini. Oleh karena itu, dapat dikatakan bahwa pengguna dengan IAU memperbarui aplikasi lebih cepat.


Dialog Alur Fleksibel IAU di aplikasi Pandao.

Menurut data kami (lihat grafik di atas), pengguna paling sering mengklik tombol konfirmasi dalam dialog IAU di hari-hari pertama setelah rilis, dan kemudian konversi terus dikurangi hingga publikasi versi aplikasi berikutnya. Hal yang sama diamati dengan tombol install di kotak dialog, yang memulai instalasi pembaruan yang diunduh. Oleh karena itu, kita dapat mengatakan bahwa nilai konversi rata-rata dalam kedua kasus berbanding lurus dengan frekuensi rilis. Di Pandao, konversi rata-rata dalam satu bulan mencapai 35% untuk klik pada tombol konfirmasi dan 7% untuk klik pada tombol instal.

Kami berasumsi bahwa penurunan persentase konfirmasi dari waktu ke waktu hanyalah masalah pengalaman pengguna, karena orang yang tertarik dengan versi baru akan memperbarui dengan cukup cepat, dan mereka yang tidak tertarik untuk memperbarui tidak akan tertarik. Berdasarkan asumsi ini, kami memutuskan untuk tidak mengganggu mereka yang tidak tertarik untuk memperbarui, dan tidak meminta mereka setiap hari. Merupakan praktik yang baik untuk menggunakan logika kueri yang berbeda, yang didasarkan pada "keusangan," yaitu, agar tidak mengganggu pengguna, kami mengevaluasi seberapa lama versi yang mereka miliki dan seberapa sering kami telah menyarankan agar mereka memperbarui.

Secara umum, IAU menunjukkan hasil yang baik selama pengujian A / B, jadi kami meluncurkan IAU untuk semua pengguna.

Ucapan Terima Kasih


Terima kasih atas bantuan Anda dalam menulis artikel ini Marina Pleshkova Maryna_Pliashkova , Alexander Cherny alexchernyy , Ilya Nazarov RolaRko , Gleb Bodyachevsky, Daniil Polozov jokerdab , Anastasia Kulik, Vladislav Breus dan Vladislav Goldin Vladiskus .

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


All Articles