Flux flexible des mises à jour intégrées: accélérez le processus de mise à jour des applications sur Android



Avec une variété de nouveaux outils et fonctionnalités annoncés lors du sommet des développeurs Android , une attention particulière devrait être accordée à l'API des mises à jour intégrées (IAU) permettant aux développeurs d'augmenter la vitesse de livraison des fonctionnalités, des corrections de bugs et des améliorations de performances aux utilisateurs actifs. Étant donné que cette fonctionnalité a finalement été publiée après Google I / O 2019, dans cet article, je vais approfondir l'API IAU, décrire en détail les flux d'utilisateurs recommandés et fournir des exemples de code. De plus, je partagerai une certaine expérience de l'intégration des UAI dans l'application Pandao , une plateforme de marché pour les produits chinois.

La nouvelle API permet aux développeurs de lancer un nouveau flux de demande de mise à jour dans l'application afin de pousser les utilisateurs actifs à mettre à jour l'application. Les IAU complètent le mécanisme de mise à jour automatique de Google Play, mais n'ont malheureusement aucun impact sur l'intention de certains utilisateurs de désactiver tout type de mise à jour. La demande d'IAU peut être mise en œuvre de deux manières, ce qui offre une expérience utilisateur complètement différente.

  1. Le flux flexible invite les utilisateurs à télécharger une mise à jour en arrière-plan et à l'installer au moment opportun. Il est censé être utilisé dans les cas alors qu'il est toujours approprié pour un utilisateur d'utiliser l'ancienne version de l'application pendant la sortie de la nouvelle.


  2. Le flux immédiat nécessite que les utilisateurs téléchargent et installent une mise à jour avant de continuer à utiliser l'application. Il est censé être utilisé dans certains cas, alors qu'il est crucial pour les développeurs d'empêcher l'utilisation de l'application avant l'application de la mise à jour.



Étant donné que ce dernier cas d'utilisation est moins important et approprié pour l'application Pandao, nous discuterons en détail du premier.

Intégration flexible des flux de l'AIU


Cas d'utilisation


Le flux flexible d'IAU comprend les étapes suivantes.

  1. L'application demande à Google Play de vérifier les mises à jour disponibles à l'aide de Play Core Library.
  2. Si une mise à jour est disponible, l'application demande à Google Play d'afficher la boîte de dialogue IAU. Google Play affiche la boîte de dialogue de demande de mise à jour à l'utilisateur.
  3. Si l'utilisateur accepte la demande de mise à jour, Google Play télécharge une mise à jour en arrière-plan, fournissant à l'utilisateur une surveillance gracieuse de l'état dans la barre d'état.
  4. Si le processus de téléchargement se termine alors que l'application est en arrière-plan, Google Play termine automatiquement l'installation. Pour les cas où le téléchargement se termine alors que l'application est au premier plan, nous devons définir une logique personnalisée pour la fin de la mise à jour. Considérez plusieurs meilleures pratiques pour la mise en œuvre.

    1. L'application lance le processus d'installation tout en affichant un écran Google Play avec la progression de l'installation à l'utilisateur. Une fois l'installation terminée, l'application redémarre et une version mise à jour s'ouvre. Dans ce cas, il est recommandé d'afficher une boîte de dialogue supplémentaire pour permettre à l'utilisateur de confirmer explicitement qu'il est prêt à relancer l'application dès maintenant. Il s'agit d'un flux hautement recommandé .
    2. L'application attend jusqu'à ce qu'elle passe en arrière-plan, puis termine la mise à jour en silence. D'une part, cette option est moins invasive en termes d'expérience utilisateur. Mais d'un autre côté, cela nécessite que le développeur implémente une fonctionnalité délicate pour détecter chaque fois que l'application passe en arrière-plan.

Dans des situations exceptionnelles, la fin de la mise à jour sera automatiquement reportée à la tâche d'arrière-plan Google Play. Cette option n'est pas recommandée pour une utilisation explicite car elle ne fournit aucune garantie sur l'installation d'une mise à jour.

Exigences de base pour les tests manuels


Afin d'effectuer manuellement le flux de mise à jour complet sur l'appareil de test, vous devez avoir au moins deux versions de l'application avec un numéro de version différent: une version source et une version cible.

  • La version source avec le numéro de version supérieur doit être publiée sur Google Play, c'est la version qui sera identifiée par Google Play comme une mise à jour disponible. La version cible avec le numéro de version inférieur et la fonction IAUs intégrée doit être installée sur votre appareil, c'est la version qui sera mise à jour. Le fait est que lorsque l'application demande à Google Play de vérifier les mises à jour disponibles, elle compare le numéro de version de l'application installée avec le numéro de version de la dernière version disponible dans Google Play. Ainsi, la fonctionnalité IAU ne sera déclenchée que si le numéro de version dans Google Play est supérieur à la version réelle de l'application sur l'appareil.
  • Les versions source et cible doivent avoir le même nom de package et doivent être signées avec le même certificat de version .
  • Android 5.0 (API niveau 21) ou supérieur.
  • Jouez à la bibliothèque Core 1.5.0 ou supérieure.

Exemple de code


Cette section contient un exemple de code pour l'utilisation des IAU, qui se trouve également dans la documentation officielle . Pour commencer, il est nécessaire d'ajouter la bibliothèque Play Core au fichier gradle au niveau du module.

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

Ensuite, créons une instance du gestionnaire IAUs et ajoutons des rappels à la tâche AppUpdateInfo . Le résultat de cette tâche contient des informations sur la disponibilité d'une mise à jour, une intention de démarrer une mise à jour si elle est disponible et la progression actuelle du téléchargement de la mise à jour si elle a déjà commencé.

 // 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. } 

En ce qui concerne la façon de déclencher le dialogue de demande de mise à jour de Google Play dans le code, vous recevez un PendingIntent dans l'objet AppUpdateInfo , que vous pouvez commencer par startIntentSenderForResult . Ce dialogue demande à l'utilisateur de démarrer la mise à jour.

  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 ) 

Pour surveiller l'état de mise à jour, vous pouvez ajouter InstallStateUpdatedListener au gestionnaire des IAU. Veuillez vous assurer que votre InstallStateUpdatedListener est compatible avec le cycle de vie.

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

Dès que la mise à jour est téléchargée (état DOWNLOADED ), l'application doit être redémarrée afin de terminer la mise à jour. Il peut être facilement lancé en appelant appUpdateManager.completeUpdate() , mais il est recommandé d'afficher un snack-bar pour permettre à l'utilisateur de confirmer explicitement qu'il est prêt à relancer l'application dès maintenant.

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

Erreur "La mise à jour n'est pas disponible"


Tout d'abord, veuillez vérifier les exigences mentionnées dans la section «Exigences de mise en œuvre de base». Si vous terminez avec succès les étapes ci-dessus conformément à toutes les exigences, bien que la mise à jour, selon le rappel onSuccess , ne soit toujours pas disponible, veuillez faire attention à l'astuce suivante. La raison la plus probable est que l'application Google Play ne connaît pas encore la mise à jour en raison du mécanisme de mise en cache interne. Pour vous assurer que le cache est actualisé lors des tests manuels, vous pouvez actualiser la version mise en cache en accédant à l'écran "Mes applications et jeux" dans l'application Google Play. Comme alternative, vous pouvez simplement vider le cache de l'application Google Play dans les paramètres. Notez que ce n'est qu'un problème de test et n'affecte pas les utilisateurs finaux puisque le cache est mis à jour quotidiennement de toute façon.

Débit flexible de l'AIU à Pandao


Dans le cadre d'un programme d'accès anticipé, nous avons intégré le flux flexible de l'IAU (implémentation recommandée) dans l'application Pandao, c'est-à-dire une application de marché proposant des produits de fabricants et de fournisseurs chinois. La boîte de dialogue IAUs a été affichée sur l'écran principal, de sorte que le nombre maximum d'utilisateurs a pu interagir avec elle. Dans un premier temps, nous avons décidé de montrer le dialogue des AIU pas plus d'une fois par jour afin d'éviter que les utilisateurs à risque ne soient ennuyés.

Étant donné que les tests A / B sont une étape cruciale dans chaque nouveau cycle de vie des fonctionnalités, nous avons décidé d'évaluer l'effet des IAU sur l'application Pandao. Nous avons divisé nos utilisateurs au hasard en deux groupes qui ne se chevauchent pas. Le premier est un groupe témoin sans IAUs fonctionnel représentant la ligne de base «sans changement», et le second est un groupe de test avec dialogue IAUs.


Fig. 1. Tests A / B pour les IAU (flux flexible) dans Pandao App.

Au cours des dernières versions, nous avons mesuré le pourcentage d'utilisateurs actifs pour chaque version d'application. Il a été constaté que parmi les utilisateurs actifs avec la dernière version disponible à un moment, la majeure partie provenait du groupe B, c'est-à-dire les utilisateurs dotés de la fonction IAUS. Comme vous pouvez le voir sur les lignes violettes de la fig. 1, dans les premiers jours après la publication de la version de l'application 1.29.1, le nombre d'utilisateurs actifs dotés de la fonction IAU dépassait le nombre d'utilisateurs sans cette fonctionnalité. La situation inverse peut être observée pour les versions précédentes de l'application, voir les lignes bleues et rouges après la publication de la version 1.29.1 de l'application. Par conséquent, on peut dire que les utilisateurs avec des IAU ont tendance à mettre à jour la version de l'application plus rapidement.


Fig. 2. Taux de confirmation au dialogue de l'AIU (flux flexible) dans Pandao App .

Selon les données analytiques de Pandao (voir fig.2), la conversion pour cliquer sur le bouton de confirmation dans la boîte de dialogue de l'AIU atteint des valeurs maximales les premiers jours de la publication, puis diminue constamment jusqu'à la prochaine mise à jour de l'application. Le même schéma peut être observé lors de la conversion en cliquant sur le bouton d'installation dans un snack-bar, qui lance l'installation de la mise à jour téléchargée. Par conséquent, il semble que le taux de conversion moyen dans les deux cas soit directement proportionnel à la fréquence des rejets. A Pandao, le taux de conversion moyen mesuré pendant un mois dépasse 35% pour le clic sur le bouton de confirmation et 7% pour le clic sur le bouton d'installation.

Nous avons suggéré que la réduction du taux de confirmation au fil du temps n'est qu'un problème d'expérience utilisateur, car les personnes intéressées par la nouvelle version de l'application vont se mettre à jour assez rapidement, et celles qui ne sont pas intéressées par la mise à jour continueront de ne pas être intéressées. Sur la base de ces informations, nous avons décidé de retirer certains utilisateurs s'ils n'étaient pas intéressés par la mise à jour, plutôt que de leur demander chaque jour. Il semble que ce soit une bonne pratique d'essayer différentes logiques de demande en fonction de la `` caducité '', c'est-à-dire de l'âge de la version sur laquelle elles se trouvent, du nombre de fois qu'un utilisateur leur a déjà demandé une mise à jour, etc., plutôt que de risquer que les utilisateurs soient ennuyés.

En conséquence, les UAI ont démontré des résultats précieux lors du test A / B, nous avons donc déployé cette fonctionnalité pour tous les utilisateurs.

Segments reconnus


Je tiens à remercier divers collègues pour leur contribution à cet article. Merci à Maryna Pliashkova Maryna_Pliashkova , Alexander Chernyy alexchernyy , Ilia Nazarov RolaRko , Gleb Bodyachevskiy, Daniil Polozov jokerdab , Anastasia Kulik, Vladislav Breus et Vladislav Goldin Vladiskus .

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


All Articles