Monitoramento de desempenho de lançamentos de recursos

Mantenha tudo organizado com as coleções Salve e categorize o conteúdo com base nas suas preferências.

1. Visão Geral

Neste codelab, você aprenderá a monitorar o desempenho do seu aplicativo durante o lançamento de um recurso. Nosso aplicativo de amostra terá funcionalidades básicas e está configurado para exibir uma imagem de plano de fundo diferente com base em um sinalizador do Firebase Remote Config. Analisaremos os rastreamentos de instrumentação para monitorar o desempenho do aplicativo, implementando uma alteração de configuração no aplicativo, monitorando o efeito e vendo como podemos melhorar o desempenho.

O que você vai aprender

  • Como adicionar o Firebase Performance Monitoring ao seu aplicativo para dispositivos móveis para obter métricas prontas para uso (como hora de início do aplicativo e frames lentos ou congelados)
  • Como adicionar rastreamentos personalizados para entender os caminhos de código críticos de suas jornadas de usuário
  • Como usar o painel do Monitoramento de desempenho para entender suas métricas e acompanhar mudanças importantes, como o lançamento de um recurso
  • Como configurar alertas de desempenho para monitorar suas principais métricas
  • Como implementar uma alteração do Configuração remota do Firebase

Pré-requisitos

  • Android Studio 4.0 ou superior
  • Um emulador do Android com API de nível 16 ou superior.
  • Java versão 8 ou superior
  • Noções básicas do Configuração remota do Firebase

2. Configure o projeto de amostra

Baixe o código

Execute o comando a seguir para clonar o código de amostra para este codelab. Isso criará uma pasta chamada codelab-perf-rc-android em sua máquina:

$ git clone https://github.com/FirebaseExtended/codelab-feature-rollout-performance.git

Se você não tiver o Git em sua máquina, também poderá baixar o código diretamente do GitHub.

Importe o projeto na pasta firebase-perf-rc-android-start para o Android Studio. Você provavelmente verá algumas exceções de tempo de execução ou talvez um aviso sobre um arquivo google-services.json ausente. Corrigiremos isso na próxima seção.

Neste codelab, você usará o plug-in do Firebase Assistant para registrar seu aplicativo Android com um projeto do Firebase e adicionar os arquivos de configuração, plug-ins e dependências do Firebase necessários ao seu projeto Android — tudo no Android Studio !

Conecte seu aplicativo ao Firebase

  1. Acesse Android Studio / Ajuda > Verificar atualizações para garantir que você esteja usando as versões mais recentes do Android Studio e do Firebase Assistant.
  2. Selecione Ferramentas > Firebase para abrir o painel Assistente .

c0e42ef063d21eab.png

  1. Escolha Monitoramento de Desempenho para adicionar ao seu aplicativo e clique em Introdução ao Monitoramento de Desempenho .
  2. Clique em Conectar ao Firebase para conectar seu projeto Android ao Firebase (isso abrirá o console do Firebase em seu navegador) .
  3. No console do Firebase, clique em Adicionar projeto e insira um nome de projeto do Firebase (se você já tiver um projeto do Firebase, poderá selecionar esse projeto existente) . Clique em Continuar e aceite os termos para criar o projeto do Firebase e um novo aplicativo do Firebase.

Em seguida, você verá uma caixa de diálogo para Conectar seu novo aplicativo do Firebase ao seu projeto do Android Studio.

51a549ebde2fe57a.png

  1. Clique em Conectar .
  2. Abra o Android Studio. No painel do Assistente , você verá a confirmação de que seu aplicativo está conectado ao Firebase.

40c24c4a56a45990.png

Adicione o Monitoramento de desempenho ao seu aplicativo

No painel Assistente no Android Studio, clique em Adicionar monitoramento de desempenho ao seu aplicativo .

Você deve ver uma caixa de diálogo para aceitar alterações , após a qual o Android Studio deve sincronizar seu aplicativo para garantir que todas as dependências necessárias tenham sido adicionadas.

3046f3e1f5fea06f.png

Por fim, você deverá ver a mensagem de sucesso no painel Assistente no Android Studio informando que todas as dependências estão configuradas corretamente.

62e79fd18780e320.png

Como uma etapa adicional, habilite o log de depuração seguindo as instruções na etapa "(Opcional) Habilitar o log de depuração". As mesmas instruções também estão disponíveis na documentação pública .

3. Execute o aplicativo

Agora você deve ver o arquivo google-services.json no diretório do módulo (nível do aplicativo) do seu aplicativo, e seu aplicativo deve agora compilar. No Android Studio, clique em Executar > Executar 'app' para compilar e executar o aplicativo em seu emulador Android.

Quando o aplicativo estiver em execução, você deverá ver primeiro uma tela inicial como esta:

ffbd413a6983b205.png

Então, após alguns segundos, a página principal com a imagem padrão será exibida:

d946cab0df319e50.png

O que está acontecendo sob o capô?

A tela inicial é implementada em SplashScreenActivity e faz o seguinte:

  1. Em onCreate() , inicializamos as configurações do Firebase Remote Config e buscamos os valores de configuração que você definirá no painel do Remote Config posteriormente neste codelab.
  2. Em executeTasksBasedOnRC() , lemos o valor de configuração do sinalizador seasonal_image_url . Se um URL for fornecido pelo valor de configuração, baixamos a imagem de forma síncrona.
  3. Quando o download estiver concluído, o aplicativo navega para MainActivity e chama finish() para encerrar SplashScreenActivity .

Em MainActivity , se seasonal_image_url for definido por meio do Remote Config, o recurso será habilitado e a imagem baixada será exibida como plano de fundo da página principal. Caso contrário, a imagem padrão (mostrada acima) será exibida.

4. Configure a Configuração Remota

Agora que seu aplicativo está em execução, você pode configurar o novo sinalizador de recurso.

  1. No painel esquerdo do console do Firebase , localize a seção Engage e clique em Configuração remota .
  2. Clique no botão Criar configuração para abrir o formulário de configuração e adicionar seasonal_image_url como a chave de parâmetro.
  3. Clique em Adicionar descrição e insira esta descrição: Shows a seasonal image (replaces default) in the main page when the restaurant list is empty.
  4. Clique em Adicionar novo -> Valor condicional -> Criar nova condição .
  5. Para o nome da condição, insira Lançamento de Seasonal image rollout .
  6. Para a seção Applies if... , selecione User in random percentile <= 0% . (Você deseja deixar o recurso desabilitado até que esteja pronto para lançar em uma etapa posterior.)
  7. Clique em Criar condição . Você usará essa condição posteriormente para lançar o novo recurso para seus usuários.

7a07526eb9e81623.png

  1. Abra o formulário Criar seu primeiro parâmetro e localize o campo Valor para distribuição de imagem sazonal . Insira o URL onde a imagem sazonal será baixada: https://images.unsplash.com/photo-1552691021-7043334e0b51
  2. Deixe o valor padrão como uma string vazia. Isso significa que a imagem padrão na base de código será mostrada em vez de uma imagem baixada de um URL.
  3. Clique em Salvar .

99e6cd2ebcdced.png

Você pode ver que a nova configuração é criada como um rascunho.

  1. Clique em Publicar alterações e confirme as alterações na parte superior para atualizar seu aplicativo.

39cd3e96d370c7ce.png

5. Adicione monitoramento para o tempo de carregamento de dados

Seu aplicativo pré-carrega alguns dados antes de mostrar MainActivity e exibe uma tela inicial para ocultar esse processo. Você não quer que seus usuários esperem muito tempo nesta tela, então normalmente é benéfico monitorar por quanto tempo a tela inicial é exibida.

O Firebase Performance Monitoring oferece uma maneira de fazer exatamente isso. Você pode instrumentar rastreamentos de código personalizados para monitorar o desempenho de um código específico em seu aplicativo, como o tempo de carregamento de dados e o tempo de processamento de seu novo recurso.

Para rastrear por quanto tempo a tela inicial é exibida, você adicionará um rastreamento de código personalizado a SplashScreenActivity , que é a Activity que implementa a tela inicial.

  1. Inicialize, crie e inicie um rastreamento de código personalizado chamado splash_screen_trace :

SplashScreenActivity.java

// ...
import com.google.firebase.perf.FirebasePerformance;
import com.google.firebase.perf.metrics.Trace;
// ...

public class SplashScreenActivity extends AppCompatActivity {

    private static final String TAG = "SplashScreenActivity";
    private static final String SEASONAL_IMAGE_URL_RC_FLAG = "seasonal_image_url";

    // TODO: Initialize splash_screen_trace
    private final Trace splashScreenTrace = FirebasePerformance.startTrace("splash_screen_trace");
    
    // ...
}
  1. Finalize o rastreamento no método onDestroy() de SplashScreenActivity :

SplashScreenActivity.java

@Override
protected void onDestroy() {
    super.onDestroy();

    // TODO: Stop the splash_screen_trace here
    splashScreenTrace.stop();
}

Como seu novo recurso baixa e processa uma imagem, você adicionará um segundo rastreamento de código personalizado que rastreará o tempo adicional que seu recurso adicionou a SplashScreenActivity .

  1. Inicialize, crie e inicie um rastreamento de código personalizado chamado splash_seasonal_image_processing :

SplashScreenActivity.java

private void executeTasksBasedOnRC(FirebaseRemoteConfig rcConfig) {
    String seasonalImageUrl = rcConfig.getString(SEASONAL_IMAGE_URL_RC_FLAG);
    Log.d(TAG, SEASONAL_IMAGE_URL_RC_FLAG + ": " + seasonalImageUrl);

    if (!seasonalImageUrl.isEmpty()) {
        // TODO: Start the splash_seasonal_image_processing here
        final Trace seasonalImageProcessingTrace = FirebasePerformance
            .startTrace("splash_seasonal_image_processing");

        // ...
    }
}
  1. Finalize o rastreamento nos onLoadFailed() e onResourceReady() do RequestListener :

SplashScreenActivity.java

Glide.with(SplashScreenActivity.this.getApplicationContext())
    .asBitmap()
    .load(seasonalImageUrl)
    .signature(new ObjectKey(Utils.getCacheUUID()))
    .listener(new RequestListener<Bitmap>() {
        @Override
        public boolean onLoadFailed(
            @Nullable GlideException e,
            Object model, Target<Bitmap> target,
            boolean isFirstResource) {

            // TODO: Stop the splash_seasonal_image_processing here
            seasonalImageProcessingTrace.stop();

            launchMainActivity();
            return true;
        }

        @Override
        public boolean onResourceReady(Bitmap resource, Object model,
            Target<Bitmap> target, DataSource dataSource,
            boolean isFirstResource) {

            // TODO: Stop the splash_seasonal_image_processing here
            seasonalImageProcessingTrace.stop();

            launchMainActivity();
            return true;
        }
     })
     .preload();

Agora que você adicionou rastreamentos de código personalizados para rastrear a duração da tela inicial ( splash_screen_trace) e o tempo de processamento do novo recurso ( splash_seasonal_image_processing ), execute o aplicativo no Android Studio novamente. Você deve ver uma mensagem de log que contém a Logging trace metric: splash_screen_trace , seguida pela duração do rastreamento. Você não verá uma mensagem de log para splash_seasonal_image_processing porque ainda não ativou o novo recurso.

6. Adicione um atributo personalizado ao rastreamento

Para rastreamentos de código personalizados, o Monitoramento de desempenho registra automaticamente os atributos padrão (metadados comuns, como versão do aplicativo, país, dispositivo etc.) para que você possa filtrar os dados do rastreamento no Firebase console . Você também pode adicionar e monitorar atributos personalizados .

Em seu aplicativo, você acabou de adicionar dois rastreamentos de código personalizados para monitorar a duração da tela inicial e o tempo de processamento do novo recurso. Um fator que pode afetar essas durações é se a imagem exibida é a imagem padrão ou se a imagem precisa ser baixada de um URL. E quem sabe – você pode eventualmente ter URLs diferentes dos quais você baixa uma imagem.

Então, vamos adicionar um atributo personalizado que representa o URL da imagem sazonal a esses rastreamentos de código personalizado. Dessa forma, você pode filtrar os dados de duração por esses valores posteriormente.

  1. Adicione o atributo personalizado ( seasonal_image_url_attribute ) para splash_screen_trace no início do método executeTasksBasedOnRC :

SplashScreenActivity.java

private void executeTasksBasedOnRC(FirebaseRemoteConfig rcConfig) {
    String seasonalImageUrl = rcConfig.getString(SEASONAL_IMAGE_URL_RC_FLAG);
    Log.d(TAG, SEASONAL_IMAGE_URL_RC_FLAG + ": " + seasonalImageUrl);

    // TODO: Add a custom attribute "seasonal_image_url_attribute" to splash_screen_trace
    if (seasonalImageUrl.isEmpty()) {
        splashScreenTrace.putAttribute("seasonal_image_url_attribute", "unset");
    } else {
        splashScreenTrace.putAttribute("seasonal_image_url_attribute", seasonalImageUrl);
    }

    // ...
}
  1. Adicione o mesmo atributo personalizado para splash_seasonal_image_processing logo após a startTrace("splash_seasonal_image_processing") :

SplashScreenActivity.java

if (!seasonalImageUrl.isEmpty()) {
    // TODO: Start the splash_seasonal_image_processing here
    final Trace seasonalImageProcessingTrace = FirebasePerformance
        .startTrace("splash_seasonal_image_processing");

    // TODO: Add a custom attribute "seasonal_image_url_attribute" to splash_seasonal_image_processing
    seasonalImageProcessingTrace
        .putAttribute("seasonal_image_url_attribute", seasonalImageUrl);

    // ...
}

Agora que você adicionou um atributo personalizado ( seasonal_image_url_attribute ) para ambos os traces personalizados ( splash_screen_trace e splash_seasonal_image_processing ), execute o aplicativo no Android Studio novamente. Você deve ver uma mensagem de log que contém Setting attribute 'seasonal_image_url_attribute' to 'unset' on trace 'splash_screen_trace'. Você ainda não ativou o parâmetro do Configuração remota sazonalImageUrl e é por isso que o valor do atributo unset está definido.

O SDK do Monitoramento de desempenho coletará os dados de rastreamento e os enviará ao Firebase. Você pode visualizar os dados no painel Desempenho do console do Firebase, que explicaremos em detalhes na próxima etapa do codelab.

7. Configure seu painel de monitoramento de desempenho

Configure seu painel para monitorar seu recurso

No console do Firebase , selecione o projeto que contém seu app Friendly Eats.

No painel esquerdo, localize a seção Release & Monitor e clique em Performance .

Você deve ver seu painel de desempenho com seus primeiros pontos de dados em seu quadro de métricas! O SDK do Monitoramento de Desempenho coleta dados de desempenho do seu aplicativo e os exibe minutos após a coleta.

f57e5450b70034c9.png

Este quadro de métricas é onde você pode acompanhar as principais métricas do seu aplicativo. A visualização padrão inclui a duração do rastreamento da hora de início do seu aplicativo, mas você pode adicionar as métricas que mais lhe interessam. Como você está rastreando o novo recurso que adicionou, pode personalizar seu painel para exibir a duração do rastreamento de código personalizado splash_screen_trace .

  1. Clique em uma das caixas Selecione uma métrica vazia.
  2. Na janela de diálogo, selecione o tipo de rastreamento de Rastreamentos personalizados e o nome do rastreamento splash_screen_trace .

1fb81f4dba3220e0.png

  1. Clique em Selecionar métrica e você verá a duração de splash_screen_trace adicionada ao seu painel!

Você pode usar essas mesmas etapas para adicionar outras métricas importantes para que você possa ver rapidamente como seu desempenho muda ao longo do tempo e até mesmo com versões diferentes.

1d465c021e58da3b.png

O quadro de métricas é uma ferramenta poderosa para acompanhar o desempenho das principais métricas experimentadas por seus usuários. Para este codelab, você tem um pequeno conjunto de dados em um intervalo de tempo estreito, portanto, usará outras visualizações de painel que ajudarão você a entender o desempenho do lançamento do recurso.

8. Implemente seu recurso

Agora que você configurou seu monitoramento, está pronto para implementar a alteração do Firebase Remote Config ( seasonal_image_url) que configurou anteriormente.

Para implementar uma alteração, você voltará à página do Configuração remota no console do Firebase para aumentar o percentual de usuários da sua condição de segmentação. Normalmente, você lançaria novos recursos para uma pequena parte dos usuários e os aumentaria apenas quando tiver certeza de que não há problemas com eles. Neste codelab, no entanto, você é o único usuário do aplicativo, então você pode alterar o percentil para 100%.

  1. Clique na guia Condições na parte superior da página.
  2. Clique na condição de Seasonal image rollout que você adicionou anteriormente.
  3. Altere o percentil para 100%.
  4. Clique em Salvar condição .
  5. Clique em Publicar alterações e confirme as alterações.

70f993502b27e7a0.png

De volta ao Android Studio, reinicie o aplicativo em seu emulador para ver o novo recurso. Após a tela inicial, você deverá ver a nova tela principal de estado vazio!

b0cc91b6e48fb842.png

9. Verifique as alterações de desempenho

Agora vamos verificar o desempenho do carregamento da tela inicial usando o painel Desempenho no console do Firebase. Nesta etapa do codelab, você usará diferentes partes do painel para visualizar dados de desempenho.

  1. Na guia principal do Painel , role para baixo até a tabela de rastreamentos e clique na guia Rastreamentos personalizados . Nesta tabela, você verá os rastreamentos de código personalizados adicionados anteriormente, além de alguns rastreamentos prontos para uso .
  2. Agora que você ativou o novo recurso, procure o rastreamento de código customizado splash_seasonal_image_processing , que mediu o tempo necessário para baixar e processar a imagem. A partir do valor Duration do rastreamento, você pode ver que esse download e processamento levam um tempo significativo.

439adc3ec71805b7.png

  1. Como você tem dados para splash_seasonal_image_processing , pode adicionar a duração desse rastreamento ao seu quadro de métricas na parte superior da guia Painel .

Semelhante a antes, clique em uma das caixas Selecione uma métrica vazia. Na janela de diálogo, selecione o tipo de rastreio Rastreios customizados e o nome do rastreio splash_seasonal_image_processing . Por fim, clique em Selecionar métrica para adicionar essa métrica ao quadro de métricas.

7fb64d2340410576.png

  1. Para confirmar ainda mais as diferenças, você pode dar uma olhada nos dados de splash_screen_trace . Clique no cartão splash_screen_trace no painel de métricas e clique em Visualizar detalhes da métrica .

b1c275c30679062a.png

  1. Na página de detalhes, você verá uma lista de atributos no canto inferior esquerdo, incluindo o atributo personalizado que você criou anteriormente. Clique no atributo personalizado seasonal_image_url_attribute para visualizar a duração da tela inicial para cada URL de imagem sazonal à direita:

8fa1a69019bb045e.png

  1. Os valores de duração da tela inicial provavelmente serão um pouco diferentes daqueles na captura de tela acima, mas você deve ter uma duração maior quando a imagem é baixada de um URL em vez de usar a imagem padrão (representada por "unset").

Neste codelab, o motivo dessa duração mais longa pode ser simples, mas em um aplicativo real, pode não ser tão óbvio. Os dados de duração coletados virão de diferentes dispositivos, executando o aplicativo em várias condições de conexão de rede, e essas condições podem ser piores do que suas expectativas. Vejamos como você investigaria esse problema se fosse uma situação do mundo real.

  1. Clique em Desempenho na parte superior da página para voltar à guia principal do Painel : 640b696b79d90103.png
  2. Na tabela de rastreamentos na parte inferior da página, clique na guia Solicitações de rede . Nesta tabela, você verá todas as solicitações de rede do seu aplicativo agregadas em padrões de URL , incluindo o padrão de URL images.unsplash.com/** . Se você comparar o valor desse tempo de resposta com o tempo total necessário para download e processamento da imagem (ou seja, a duração do rastreamento splash_seasonal_image_processing ), poderá ver que grande parte do tempo é gasto no download da imagem.

6f92ce0f23494507.png

Descobertas de desempenho

Ao usar o Firebase Performance Monitoring, você viu o seguinte impacto nos usuários finais com o novo recurso ativado:

  1. O tempo gasto em SplashScreenActivity aumentou.
  2. A duração do splash_seasonal_image_processing era muito grande.
  3. O atraso foi devido ao tempo de resposta para o download da imagem e ao tempo de processamento correspondente necessário para a imagem.

Na próxima etapa, você reduzirá o impacto no desempenho revertendo o recurso e identificando como melhorar a implementação do recurso.

10. Reverta o recurso

Aumentar o tempo de espera dos usuários durante a tela inicial não é desejável. Um dos principais benefícios do Remote Config é a capacidade de pausar e reverter sua distribuição sem precisar lançar outra versão para seus usuários. Isso permite que você reaja rapidamente a problemas (como os problemas de desempenho que você descobriu na última etapa) e minimize o número de usuários insatisfeitos.

Como uma mitigação rápida, você redefinirá o percentil de distribuição de volta para 0 para que todos os usuários vejam a imagem padrão novamente:

  1. Volte para a página do Configuração remota no console do Firebase.
  2. Clique em Condições no topo da página.
  3. Clique na condição de Seasonal image rollout que você adicionou anteriormente.
  4. Altere o percentil para 0%.
  5. Clique em Salvar condição .
  6. Clique em Publicar alterações e confirme as alterações.

18c4f1cbac955a04.png

Reinicie o aplicativo no Android Studio e você verá a tela principal do estado vazio original:

d946cab0df319e50.png

11. Corrija os problemas de desempenho

Você descobriu anteriormente no codelab que o download de uma imagem para sua tela inicial estava causando a lentidão do seu aplicativo. Observando mais de perto a imagem baixada, você verá que está usando a resolução original da imagem, que era superior a 2 MB! Uma solução rápida para o problema de desempenho é reduzir a qualidade para uma resolução mais apropriada para que o download da imagem demore menos tempo.

Implemente o valor do Configuração remota novamente

  1. Volte para a página do Configuração remota no console do Firebase.
  2. Clique no ícone Editar para o parâmetro seasonal_image_url .
  3. Atualize o valor para lançamento de imagem sazonal para https://images.unsplash.com/photo-1552691021-7043334e0b51?w=640 e clique em Salvar .

828dd1951a2ec4a4.png

  1. Clique na guia Condições na parte superior da página.
  2. Clique no lançamento de imagem sazonal e defina o percentil de volta para 100%.
  3. Clique em Salvar condição .

1974fa3bb789f36c.png

  1. Clique no botão Publicar alterações .

12. Teste a correção e configure alertas

Execute o aplicativo localmente

Com o novo valor de configuração definido para usar um URL de imagem de download diferente, execute o aplicativo novamente. Desta vez, você deve notar que o tempo gasto na tela inicial é menor do que antes.

b0cc91b6e48fb842.png

Veja o desempenho das alterações

Retorne ao painel Desempenho no console do Firebase para ver a aparência das métricas.

  1. Desta vez, você usará a tabela de rastreamentos para navegar até a página de detalhes. Abaixo na tabela de rastreamentos, na guia Rastreamentos personalizados , clique no rastreamento personalizado splash_seasonal_image_processing para ver uma visualização mais detalhada de sua métrica de duração novamente.

2d7aaca03112c062.png

  1. Clique no atributo personalizado seasonal_image_url_attribute para ver o detalhamento dos atributos personalizados novamente. Se você passar o mouse sobre os URLs, verá um valor que corresponde ao novo URL da imagem de tamanho reduzido: https://images.unsplash.com/photo-1552691021-7043334e0b51?w=640 (com o ?w=640 no final). O valor de duração associado a esta imagem é consideravelmente menor que o valor da imagem anterior e mais aceitável para seus usuários!

10e30c037a4237a2.png

  1. Agora que você melhorou o desempenho de sua tela inicial, você pode configurar alertas para notificá-lo quando um rastreamento exceder um limite definido. Abra o painel Desempenho e clique no ícone do menu flutuante (três pontos) para splash_screen_trace e clique em Configurações de alerta .

4bd0a2a1faa14479.png

  1. Clique no botão de alternância para ativar o alerta Duração . Defina o valor do limite um pouco acima do valor que você estava vendo para que, se seu splash_screen_trace exceder o limite, você receba um e-mail.
  1. Clique em Salvar para criar seu alerta. Role para baixo até a tabela de rastreamentos e clique na guia Rastreamentos personalizados para ver se seu alerta está ativado!

2bb93639e2218d1.png

13. Parabéns!

Parabéns! Você ativou o SDK do Firebase Performance Monitoring e coletou traces para medir o desempenho de um novo recurso! Você monitorou as principais métricas de desempenho para o lançamento de um novo recurso e reagiu rapidamente quando um problema de desempenho foi descoberto. Tudo isso foi possível com a capacidade de fazer alterações de configuração com o Remote Config e monitorar problemas de desempenho em tempo real.

O que cobrimos

  • Como adicionar o SDK do Firebase Performance Monitoring ao seu aplicativo
  • Adicionando um rastreamento de código personalizado ao seu código para medir um recurso específico
  • Como configurar um parâmetro do Remote Config e um valor condicional para controlar/lançar um novo recurso
  • Entendendo como usar o painel de monitoramento de desempenho para identificar problemas durante uma distribuição
  • Configurar alertas de desempenho para notificá-lo quando o desempenho do seu aplicativo ultrapassar um limite definido por você

Saber mais