A sessão em análise mobile é um período de interação contínua do usuário com o aplicativo, limitado no tempo. Esta métrica serve como base para calcular retenção, engajamento e LTV. De acordo com Adjust, 2025, a duração mediana de uma sessão nos aplicativos é de 4–7 minutos, mas varia muito por categoria. Compreender as métricas de sessão é fundamental para avaliar a qualidade da experiência do usuário.
Principais conclusões
Uma sessão é um período de tempo durante o qual o usuário interage ativamente com o aplicativo. A sessão começa quando o aplicativo é aberto (ou retorna do fundo) e termina após um período de inatividade ou fechamento.
Diferentes plataformas de análise definem os limites da sessão de forma distinta. O Firebase Analytics considera uma sessão completa após 30 minutos de inatividade, o AppsFlyer após 60 minutos, o Amplitude após 5 minutos ou com o evento session_end. Não existe um único padrão.
As métricas baseadas em sessões são a base para calcular a retenção (Retention Rate), a profundidade de engajamento (Stickiness Ratio) e a distribuição de usuários por frequência de uso (Session Frequency). Sem uma definição correta de sessão, todas as métricas derivadas serão incorretas.
De acordo com a Mixpanel (2024), os aplicativos que melhoraram a Session Duration em 15% demonstraram um crescimento do LTV de 22% em um trimestre. Esta é uma correlação direta entre o tempo no aplicativo e a monetização.
A medição da sessão é baseada em eventos do ciclo de vida do aplicativo: open (session_start) e close (session_end). Entre eles, todas as ações do usuário são registradas.
// Basic session tracker for Android
class SessionTracker {
private var sessionStart: Long = 0L
private val SESSION_TIMEOUT = 30 * 60 * 1000L
fun onAppOpened() {
sessionStart = System.currentTimeMillis()
Analytics.logEvent("session_start")
}
fun onAppClosed() {
val duration = System.currentTimeMillis() - sessionStart
Analytics.logEvent("session_end") {
param("duration_ms", duration)
}
}
fun isNewSession(lastActive: Long): Boolean {
return (System.currentTimeMillis() - lastActive) > SESSION_TIMEOUT
}
}
O código rastreia o início e o fim da sessão através de callbacks do sistema. O parâmetro SESSION_TIMEOUT (30 minutos) determina quando um retorno do fundo é considerado uma nova sessão e não uma continuação da anterior.
| Plataforma | Timeout da sessão | Método de determinação |
|---|---|---|
| Firebase Analytics | 30 min | Automático, sem personalização |
| Amplitude | 5 min (padrão) | Configurável via SDK |
| AppsFlyer | 60 min | Intervalo fixo |
| Mixpanel | 30 min | Configurável através da opção minimumSessionDuration |
| Adjust | 60 min | Automático, vinculado ao ciclo de vida |
A escolha do timeout afeta as métricas: um timeout curto (5 min) cria mais sessões, um longo (60 min) mescla as interações. O importante é definir uma regra e não alterá-la ao comparar períodos.
A análise de sessões se baseia em quatro métricas básicas. Cada uma revela um aspecto específico do comportamento do usuário.
A duração da sessão é o tempo médio que um usuário passa no aplicativo por visita. Para aplicativos de notícias, a norma é de 2–4 minutos; para jogos, 8–15 minutos; para serviços de streaming, 20+ minutos. Se a Session Duration cair, é um sinal de problemas com o conteúdo ou desempenho.
O intervalo entre sessões é o tempo entre o fim da sessão anterior e o início da próxima. Um intervalo curto (minutos ou horas) indica alto engajamento. Um intervalo longo (dias) sinaliza baixo interesse ou um caso de uso utilitário onde o aplicativo raramente é necessário.
O número de sessões por usuário em um período (dia, semana, mês) é um indicador de Stickiness. Fórmula: DAU / MAU (Daily Active Users / Monthly Active Users). Um valor acima de 20% é considerado bom, acima de 50% — excelente para a maioria das categorias de aplicativos.
A profundidade da sessão é o número de telas ou ações em uma única sessão. Mostra o quão profundamente o usuário explora a funcionalidade do aplicativo. Uma profundidade baixa com duração alta indica problemas de navegação.
As diferenças de plataforma no ciclo de vida do aplicativo afetam diretamente a definição da sessão. iOS e Android lidam com estados de fundo e notificações de forma diferente.
No Android, uma sessão começa quando o onStart() da primeira Activity é chamado e termina no onStop() da última Activity. No entanto, o sistema pode matar o processo em segundo plano, o que encerra a sessão falsamente. Recomenda-se usar Application.ActivityLifecycleCallbacks para um rastreamento confiável.
class AnalyticsApp : Application() {
private var activityReferences = 0
override fun onCreate() {
super.onCreate()
registerActivityLifecycleCallbacks(object : ActivityLifecycleCallbacks {
override fun onActivityStarted(act: Activity) {
if (++activityReferences == 1) {
Analytics.trackSessionStart()
}
}
override fun onActivityStopped(act: Activity) {
if (--activityReferences == 0) {
Analytics.trackSessionEnd()
}
}
})
}
}
O contador activityReferences determina se o usuário vê pelo menos uma tela. Quando chega a 0, o aplicativo foi para o fundo e a sessão é encerrada.
No iOS, uma sessão está vinculada aos métodos applicationDidBecomeActive e applicationDidEnterBackground. Toques em notificações push podem inflar artificialmente a contagem de sessões — isso deve ser considerado na análise.
Exemplo em Swift:
import UIKit
class AppDelegate: UIResponder, UIApplicationDelegate {
func applicationDidBecomeActive(_ application: UIApplication) {
Analytics.trackSessionStart()
}
func applicationDidEnterBackground(_ application: UIApplication) {
Analytics.trackSessionEnd()
}
}
Nota: no iOS, alternar entre aplicativos (App Switcher) não encerra a sessão — apenas a ida para o fundo profundo ou o deslize de fechamento a ativam.
A análise de sessões vai além da simples contagem. A segmentação e a análise de coortes revelam padrões de engajamento que não podem ser vistos nos dados agregados.
Agrupe os usuários por semana de instalação e observe o número médio de sessões nos primeiros 7 dias. Se a coorte de instalações mais recente tiver Sessions Per User menor que as mais antigas, é um sinal de deterioração na integração ou na qualidade do tráfego.
As anomalias nas métricas de sessão são indicadores precoces de problemas. Um aumento repentino de sessões curtas (menos de 5 segundos) após um lançamento aponta para um bug de inicialização. Uma queda de 30% na Session Duration em um dia pode indicar uma falha de servidor ou mudança de API. Configure monitoramento com limiares: se a duração média da sessão cair mais de 2 desvios padrão da média móvel de 7 dias, dispare um alerta.
Use a segmentação por versão do aplicativo nos relatórios de sessão. A versão 3.2.0 mostra Session Duration de 4 minutos, a versão 3.2.1 mostra 2 minutos. A causa é uma mudança na integração. Reverter a versão restaura a métrica. Sem a segmentação por versão, você veria uma queda média mas não encontraria a causa raiz.
Os Power Users (5+ sessões por dia) — seu público-chave. Os Casual Users (1–2 sessões por semana) — um grupo para reativação. Os Dormant Users (0 sessões em 30 dias) — candidatos para retargeting ou exclusão de push.
Para cada segmento, calcule métricas separadas: a Session Duration para Power Users mostra a profundidade de uso, enquanto para Casual Users mostra as barreiras de entrada. De acordo com a Amplitude (2024), os aplicativos que personalizam o conteúdo por segmento de sessão aumentam a Session Duration em média 18% ao mês.
A retenção é calculada através das sessões: um usuário é retido no Dia N se teve pelo menos uma sessão. No entanto, diferentes produtos exigem definições diferentes. Para redes sociais, uma sessão pode ser de 1 segundo (só abriu para ver notificações), enquanto para um serviço de streaming pode ser de 15 minutos.
Use as sessões de desinstalação como um indicador de qualidade: se após uma atualização o número de sessões curtas (menos de 10 segundos) aumentar, os usuários não encontram a funcionalidade necessária. Este é um sinal precoce de problemas de UX antes do aumento de desinstalações.
Vincule as sessões às fontes de tráfego: os usuários de canais pagos devem ter mais sessões e maior Session Duration. Se o tráfego orgânico mostrar Session Duration 40% maior que o tráfego pago, há um problema de qualidade de segmentação. A atribuição de sessões ajuda a otimizar o orçamento de aquisição.
Perguntas frequentes
A duração média da sessão depende da categoria: jogos — 8–15 minutos, redes sociais — 5–10 minutos, utilitários — 1–3 minutos. A tendência é o que mais importa: se a Session Duration cair 20% em um mês, é necessária uma auditoria de UX.
Muitos SDKs de análise não disparam um evento de fim ao minimizar — eles aguardam um timeout. Se o usuário minimizar o aplicativo por 1 minuto e retornar, é contado como uma única sessão. Só após o timeout (30–60 min) uma nova sessão começa.
A retenção de um usuário no Dia N é calculada como a proporção de instaladores que tiveram pelo menos uma sessão naquele dia. Se as sessões não forem rastreadas corretamente, a retenção será sistematicamente subestimada ou superestimada.
Sim, a atividade em segundo plano (reprodução de música, navegação, sincronização) pode manter o aplicativo em estado ativo. É melhor separar as sessões em primeiro plano (o usuário vê a tela) das sessões de processador (trabalho em segundo plano sem interface do usuário).
Para serviços de assinatura (streaming, fitness, educação), recomenda-se um timeout de 5–10 minutos. Os usuários geralmente retornam após uma pausa curta — e cada pausa deve contar como uma nova sessão para não distorcer a Session Duration.
Resumo
Vamos desenvolver um aplicativo móvel chave na mão
A IT Sectr cria aplicativos para iOS e Android para startups e empresas desde 2017. Nós vamos aconselhá-lo e propor a melhor solução.
Leia também