Pembaruan Fleksibel Aplikasi dalam Aplikasi: Mempercepat Proses Pembaruan Aplikasi di Android



Dengan berbagai alat dan fitur baru yang diumumkan di Android Dev Summit , perhatian khusus harus diberikan pada API Pembaruan Dalam Aplikasi (IAU) yang memungkinkan pengembang untuk meningkatkan kecepatan pengiriman fitur, perbaikan bug, dan peningkatan kinerja kepada pengguna aktif. Karena fitur ini akhirnya dirilis setelah Google I / O 2019, dalam artikel ini saya akan menyelam lebih dalam pada API IAU, menjelaskan secara terperinci aliran pengguna yang disarankan dan memberikan beberapa contoh kode. Selain itu, saya akan berbagi pengalaman tentang integrasi IAU dalam aplikasi Pandao , platform pasar untuk barang-barang Cina.

API baru memungkinkan pengembang untuk memulai aliran permintaan pembaruan dalam aplikasi yang baru untuk mendorong pengguna aktif untuk memperbarui aplikasi. IAU melengkapi mekanisme pembaruan otomatis Google Play yang ada, tetapi, sayangnya, tidak berdampak pada niat beberapa pengguna untuk menonaktifkan segala jenis pembaruan. Permintaan IAU dapat diimplementasikan dalam dua cara, yang memberikan pengalaman pengguna yang sama sekali berbeda.

  1. Alur fleksibel meminta pengguna untuk mengunduh pembaruan di latar belakang dan menginstalnya pada saat yang tepat. Seharusnya digunakan dalam kasus-kasus sementara masih sesuai bagi pengguna untuk menggunakan versi aplikasi yang lebih lama sementara yang baru dirilis.


  2. Aliran langsung mengharuskan pengguna untuk mengunduh dan menginstal pembaruan sebelum melanjutkan menggunakan aplikasi. Seharusnya digunakan dalam kasus sementara sangat penting bagi pengembang untuk mencegah penggunaan aplikasi sebelum pembaruan diterapkan.



Karena use case yang terakhir kurang penting dan sesuai untuk aplikasi Pandao, kami akan membahas secara rinci yang pertama.

Integrasi Aliran Fleksibel IAU


Gunakan kasing


Alur IAU yang fleksibel terdiri dari langkah-langkah berikut.

  1. Aplikasi meminta Google Play untuk memeriksa pembaruan yang tersedia menggunakan Play Core Library.
  2. Jika ada pembaruan yang tersedia, aplikasi meminta Google Play untuk menampilkan dialog IAU. Google Play menunjukkan dialog permintaan pembaruan kepada pengguna.
  3. Jika pengguna menerima permintaan pembaruan, Google Play mengunduh pembaruan di latar belakang, memberikan pengguna pemantauan keadaan yang anggun di bilah status.
  4. Jika proses pengunduhan selesai saat aplikasi berada di latar belakang, Google Play secara otomatis menyelesaikan penginstalan. Untuk kasus ketika unduhan selesai saat aplikasi berada di latar depan, kita harus mendefinisikan logika khusus untuk penyelesaian pembaruan. Pertimbangkan beberapa praktik terbaik untuk implementasi.

    1. Aplikasi meluncurkan proses instalasi sambil menampilkan layar Google Play dengan kemajuan instalasi kepada pengguna. Setelah instalasi selesai, aplikasi restart dan versi yang diperbarui terbuka. Dalam hal ini, disarankan untuk menampilkan dialog tambahan untuk memungkinkan pengguna untuk mengkonfirmasi secara eksplisit bahwa ia siap untuk meluncurkan kembali aplikasi sekarang. Ini adalah aliran yang sangat direkomendasikan .
    2. Aplikasi menunggu hingga masuk ke latar belakang dan kemudian menyelesaikan pembaruan secara diam-diam. Di satu sisi, opsi ini kurang invasif dalam hal pengalaman pengguna. Tetapi di sisi lain, itu mengharuskan pengembang untuk menerapkan fitur rumit untuk mendeteksi setiap kali aplikasi pergi ke latar belakang.

Dalam situasi luar biasa, penyelesaian pembaruan akan ditangguhkan secara otomatis ke tugas latar belakang Google Play. Opsi ini tidak disarankan untuk penggunaan eksplisit karena tidak memberikan jaminan apa pun tentang pemasangan pembaruan.

Persyaratan Dasar untuk Pengujian Manual


Untuk melakukan aliran pembaruan penuh secara manual pada perangkat uji, Anda harus memiliki setidaknya dua versi aplikasi dengan nomor versi yang berbeda: versi sumber dan versi target.

  • Versi sumber dengan nomor versi yang lebih tinggi harus dipublikasikan di Google Play, ini adalah versi yang akan diidentifikasi oleh Google Play sebagai pembaruan yang tersedia. Versi target dengan nomor versi yang lebih rendah dan fitur IAU terintegrasi harus diinstal pada perangkat Anda, ini adalah versi yang akan diperbarui. Masalahnya adalah, ketika aplikasi meminta Google Play untuk memeriksa pembaruan yang tersedia, itu membandingkan nomor versi aplikasi yang diinstal dengan nomor versi build terakhir yang tersedia di Google Play. Jadi fitur IAU akan dipicu hanya jika nomor versi di Google Play lebih tinggi dari versi aplikasi yang sebenarnya di perangkat.
  • Sumber dan versi 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.

Kode contoh


Bagian ini berisi beberapa kode sampel untuk penggunaan IAU, yang juga dapat ditemukan di dokumentasi resmi . Untuk memulainya, perlu menambahkan Play Core library ke file gradle tingkat modul.

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

Selanjutnya, mari kita membuat instance dari manajer IAU dan menambahkan callback ke tugas AppUpdateInfo . Hasil dari tugas ini berisi informasi tentang ketersediaan pembaruan, niat untuk memulai pembaruan jika tersedia, dan perkembangan terkini dari unduhan pembaruan 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. } 

Dalam hal bagaimana memicu dialog permintaan pembaruan dari kode Google Play in, Anda menerima PendingIntent di objek AppUpdateInfo , yang bisa Anda mulai dengan startIntentSenderForResult . Dialog ini meminta pengguna untuk memulai pembaruan.

  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 keadaan pembaruan, Anda dapat menambahkan InstallStateUpdatedListener ke manajer IAUs. Pastikan InstallStateUpdatedListener Anda sadar akan siklus hidup.

 // 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 ), aplikasi harus dimulai ulang untuk menyelesaikan pembaruan. Itu dapat dengan mudah dimulai dengan memanggil appUpdateManager.completeUpdate() , tetapi disarankan untuk menampilkan snackbar untuk memungkinkan pengguna untuk mengonfirmasi secara eksplisit bahwa ia siap untuk meluncurkan kembali aplikasi sekarang.

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

Galat "Pembaruan Tidak Tersedia"


Pertama-tama, harap periksa kembali persyaratan yang disebutkan di bagian "Persyaratan Implementasi Dasar". Jika Anda berhasil menyelesaikan langkah-langkah di atas sesuai dengan semua persyaratan, meskipun pembaruan, sesuai dengan panggilan balik onSuccess , masih tidak tersedia, harap perhatikan trik berikut. Alasan yang paling mungkin adalah bahwa aplikasi Google Play belum tahu tentang pembaruan karena mekanisme caching internal. Untuk memastikan Anda memiliki cache yang segar saat pengujian secara manual, Anda dapat menyegarkan versi yang di-cache dengan membuka layar "Aplikasi & Game Saya" di aplikasi Google Play. Sebagai alternatif, Anda cukup menghapus cache aplikasi Google Play di pengaturan. Perhatikan bahwa ini hanya masalah pengujian dan tidak memengaruhi pengguna akhir karena cache diperbarui setiap hari.

Alur Fleksibel IAU di Pandao


Sebagai bagian dari program akses awal, kami mengintegrasikan aliran fleksibel IAU (penerapan yang disarankan) di aplikasi Pandao, yaitu aplikasi pasar yang menawarkan produk dari produsen dan vendor Cina. Dialog IAU ditampilkan di layar utama, sehingga jumlah maksimum pengguna dapat berinteraksi dengannya. Awalnya, kami memutuskan untuk menunjukkan dialog IAU tidak lebih dari sekali sehari untuk menghindari pengguna risiko terganggu.

Karena pengujian A / B adalah langkah penting dalam setiap siklus fitur baru, kami memutuskan untuk mengevaluasi efek IAU pada aplikasi Pandao. Kami secara acak membagi pengguna kami menjadi dua kelompok yang tidak tumpang tindih. Yang pertama adalah kelompok kontrol tanpa fungsional IAU mewakili garis dasar 'tidak ada perubahan', dan yang kedua adalah kelompok uji dengan dialog IAU.


Fig. 1. Pengujian A / B untuk IAU (aliran fleksibel) di Pandao App.

Selama beberapa rilis terakhir, kami mengukur persentase pengguna aktif untuk setiap versi aplikasi. Ditemukan bahwa di antara pengguna aktif dengan yang terakhir tersedia pada versi waktu bagian utama adalah dari grup B, yaitu pengguna dengan fitur IAUS. Seperti yang dapat Anda lihat dari garis ungu di ara. 1, pada hari-hari pertama setelah publikasi versi aplikasi 1.29.1, jumlah pengguna aktif dengan fitur IAU melebihi jumlah pengguna tanpa fitur ini. Situasi yang berlawanan dapat diamati untuk versi aplikasi sebelumnya, lihat garis biru dan merah setelah publikasi versi aplikasi 1.29.1. Oleh karena itu, dapat dinyatakan bahwa pengguna dengan IAU cenderung memperbarui versi aplikasi lebih cepat.


Fig. 2. Tingkat konfirmasi pada dialog IAU (aliran fleksibel) di Pandao App .

Menurut data analisis Pandao (lihat gambar 2), konversi untuk mengklik tombol konfirmasi pada dialog IAU mencapai nilai puncak pada hari-hari pertama rilis dan kemudian terus menurun hingga pembaruan aplikasi berikutnya. Pola yang sama dapat diamati dalam konversi dengan mengeklik tombol instal di snackbar, yang memulai pemasangan pembaruan yang diunduh. Akibatnya, sepertinya tingkat konversi rata-rata dalam kedua kasus berbanding lurus dengan frekuensi rilis. Di Pandao, rata-rata tingkat konversi yang diukur selama satu bulan melebihi 35% untuk klik pada tombol konfirmasi dan 7% untuk klik pada tombol instal.

Kami menyarankan bahwa pengurangan tingkat konfirmasi dari waktu ke waktu hanyalah masalah pengalaman pengguna, karena orang-orang yang tertarik dengan versi aplikasi baru akan memperbarui dengan cepat, dan mereka yang tidak tertarik untuk memperbarui akan terus tidak tertarik. Berdasarkan informasi ini, kami memutuskan mundur beberapa pengguna jika mereka tidak tertarik memperbarui, daripada meminta mereka setiap hari. Tampaknya menjadi praktik yang baik untuk mencoba logika permintaan yang berbeda berdasarkan 'staleness', yaitu, berapa usia versi mereka, berapa kali pengguna telah meminta mereka untuk pembaruan dan sebagainya, alih-alih pengguna risiko terganggu.

Hasilnya, IAU menunjukkan hasil yang berharga selama pengujian A / B, jadi kami meluncurkan fitur ini untuk semua pengguna.

Segmen yang diakui


Saya ingin berterima kasih kepada berbagai kolega atas kontribusi mereka pada artikel ini. Terima kasih kepada Maryna Pliashkova Maryna_Pliashkova , Alexander Chernyy alexchernyy , Ilia Nazarov RolaRko , Gleb Bodyachevskiy, Daniil Polozov jokerdab , Anastasia Kulik, Vladislav Breus, dan Vladislav Goldin Vladiskus .

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


All Articles