Fundado em 2007, o JioSaavn é um serviço líder de streaming de áudio para música e podcasts. Ela tem mais de 900 parcerias com gravadoras e ouve mais de 80 milhões de faixas em 16 idiomas. O app JioSaavn também está disponível em seis idiomas indianos regionais.
Com um conjunto de tecnologias que atende a mais de 100 milhões de usuários ativos por mês (MAUs), a JioSaavn opera em grande escala e velocidade. Esse público-alvo geralmente tem smartphones Android com recursos limitados, o que torna a experiência do usuário muito importante para a equipe da JioSaavn.
O desafio
A otimização em um ambiente de restrições, como as encontradas em dispositivos móveis de baixa capacidade, pode ser desafiadora e empolgante do ponto de vista da engenharia. O desafio que JioSaavn enfrentou era otimizar a experiência do usuário para seu principal público-alvo usando dispositivos móveis de baixa média e encontrado principalmente nas cidades de nível 2 e 3 da Índia.
Ao analisar o funil, ficou evidente que havia uma seção considerável de usuários que iniciariam o aplicativo, mas não ouviriam uma música. A equipe determinou que o tempo de inicialização do app seria a causa desse problema. Assim, a melhoria do tempo de inicialização do app foi associada a um aumento no número de listeners.
Como foi o processo
A empresa contou com análises abrangentes e um conjunto robusto de ferramentas, como Perfetto, dumpsys etc. para analisar o problema e chegar a uma solução sustentável. A equipe abordou esse desafio usando dois princípios: carregar o trabalho em paralelo e ser lento.
Com a ajuda da análise do Google, a equipe priorizou tarefas,
- Usou o Systrace e o perfetto para estudar o fluxo do app, analisar pontos problemáticos e validar melhorias no tempo de inicialização do app.
- Inicialização atrasada: a inicialização de fragmentos/instâncias/classes foi identificada e pode ser atrasada até que a página inicial seja exibida.
- Anúncios
- Serviço de música (serviço em primeiro plano) e recursos do player (por exemplo, Exoplayer, fila de jogadores em cache etc.)
- Fragmento do jogador que é minimizado no momento da inicialização.
- Inicialização sob demanda: de várias bibliotecas como e quando a biblioteca é necessária (por exemplo, Facebook lib).
- viewStubs: inflação de visualização e carregamento de recursos eram pesados. A equipe nivelou os layouts usando o viewStubs e converteu as imagens para webP.
- Linha de execução de worker: algumas tarefas que não exigiam linha de execução de interface foram movidas para linhas de execução b/g para liberar a linha de execução de interface.
- Dados divididos em cache: a leitura e a análise de grandes dados armazenados em cache de um arquivo leva muito tempo. A equipe os dividiu em dados críticos (necessários para mostrar a página inicial) e não críticos.
- LayoutInflater assíncrono: algumas das visualizações necessárias para a recyclerview da página inicial foram pré-infladas usando LayoutInflater assíncrono.
Ferramentas usadas: Perfetto, Systrace, Google Play vitals, criadores de perfil do Android Studio e SDK de desempenho do Firebase.
Resultados
A equipe do JioSaavn lançou essas mudanças em várias versões do app para manter a estabilidade. Eles alcançaram os seguintes resultados:
- 30% de melhoria no tempo de inicialização do app em todos os dispositivos e de 35 a 40% em dispositivos de baixa média.
- 5% de melhoria nos espectadores da tela inicial/ DAU, reduzindo a taxa de rejeição.
Esse exercício de otimização reuniu toda a equipe. Instruções detalhadas foram feitas para deixar a equipe confortável com as mudanças e incutir uma abordagem focada no desempenho em relação ao aplicativo.
"A JiSaavn busca melhorar a experiência de escuta dos nossos usuários que vêm de várias regiões
e cidades da Índia, abrangendo todo o espectro em termos de acessibilidade. Assim, passamos pela infraestrutura de conectividade móvel da região e otimizamos a experiência do usuário em todos os recursos dos dispositivos dos usuários é um desafio constante em que trabalhamos. Graças às orientações do Google para relações com o desenvolvedor, conseguimos dar um passo definitivo nessa direção."– Equipe de produtos da JioSaavn