Fondé en 2007, JioSaavn est un service de streaming audio de premier plan pour la musique et les podcasts. Elle compte plus de 900 partenariats avec des maisons de disques et diffuse plus de 80 millions de titres dans 16 langues. L'application JioSaavn est également disponible dans six langues régionales indiennes.
Avec une pile technologique qui prend en charge plus de 100 millions d'utilisateurs actifs par mois, JioSaavn fonctionne à grande échelle et rapidement. Cette audience utilise généralement des téléphones Android aux ressources limitées. L'expérience utilisateur est donc d'une importance capitale pour l'équipe JioSaavn.
Le défi
D'un point de vue technique, l'optimisation dans un environnement de contraintes, comme celui des appareils mobiles de milieu et d'entrée de gamme, peut être à la fois difficile et passionnante. Le défi que JioSaavn devait relever consistait à optimiser l'expérience utilisateur pour son principal public cible, qui utilise des appareils mobiles de milieu et d'entrée de gamme, et qui se trouve principalement dans les villes indiennes de niveau 2 et 3.
En analysant l'entonnoir, il est apparu clairement qu'une partie considérable des utilisateurs lançaient l'application, mais n'écoutaient pas de musique. L'équipe a déterminé que le temps de démarrage de l'application était à l'origine de ce problème. Ainsi, l'amélioration du temps de démarrage de l'application était associée à une augmentation du nombre d'auditeurs sur l'application.
Mode opératoire
JioSaavn s'est appuyé sur une analyse complète et un ensemble d'outils robustes tels que Perfetto, dumpsys, etc. pour analyser ce problème et trouver une solution durable. L'équipe a abordé ce défi en utilisant deux principes : paralléliser le travail et être paresseux.
Grâce à l'analyse de Google, l'équipe a pu hiérarchiser les tâches :
- Utilisé systrace et perfetto pour étudier le flux de l'application, analyser les points faibles et valider les améliorations du temps de démarrage de l'application.
- Initialisation différée : identifie l'initialisation des fragments/instances/classes qui peut être différée jusqu'à ce que la page d'accueil s'affiche.
- Annonces
- Service musical (service de premier plan) et ressources du lecteur (par exemple, ExoPlayer, file d'attente du lecteur en cache, etc.)
- Fragment du lecteur réduit au moment du lancement.
- Initialisation à la demande : de diverses bibliothèques au moment où elles sont requises (par exemple, la bibliothèque Facebook).
- viewStubs : l'inflation de la vue et le chargement des ressources étaient importants. L'équipe a aplati ses mises en page à l'aide de viewStubs et converti les images au format WebP.
- Thread de worker : certaines tâches qui ne nécessitaient pas de thread UI ont été déplacées vers des threads d'arrière-plan pour libérer le thread UI.
- Données de cache fractionnées : la lecture et l'analyse d'énormes données mises en cache à partir d'un fichier prennent beaucoup de temps. L'équipe l'a divisé en données critiques (nécessaires pour afficher la page d'accueil) et non critiques.
- Async LayoutInflater : certaines des vues requises pour le recyclerview de la page d'accueil ont été pré-gonflées à l'aide d'Async LayoutInflater.
Outils utilisés : Perfetto, Systrace, Google Play Vitals, profileurs Android Studio, SDK Firebase Performance
Résultats
L'équipe JioSaavn a déployé ces modifications sur plusieurs versions de l'application afin de maintenir sa stabilité. Voici les résultats obtenus :
- Amélioration de 30 % du temps de démarrage de l'application sur tous les appareils et de 35 à 40 % sur les appareils bas et milieu de gamme.
- Amélioration de 5 % du nombre de spectateurs de l'écran d'accueil/ du nombre d'utilisateurs actifs quotidiens, ce qui réduit le taux de rebond.
Cet exercice d'optimisation a rassemblé toute l'équipe. Des procédures détaillées ont été effectuées pour que l'équipe se familiarise avec les modifications et adopte une approche axée sur les performances de l'application.
"JioSaavn vise à améliorer l'expérience d'écoute de nos utilisateurs qui viennent de différentes régions
et villes d'Inde, et qui couvrent tout le spectre en termes de budget. Dépasser l'infrastructure de connectivité mobile de leur région et optimiser l'expérience utilisateur en fonction des capacités de l'appareil des utilisateurs est un défi constant que nous nous efforçons de relever. Grâce aux conseils de Google sur les relations avec les développeurs, nous avons pu faire un pas décisif dans cette direction."– L'équipe produit JioSaavn