ATT iOS: o que é, mecanismo de solicitação de rastreamento e IDFA

Autor: IT Sectr Publicado: 2026-05-20 Tempo de leitura: 10 min

App Tracking Transparency (ATT) é um mecanismo do iOS que exige o consentimento explícito do usuário para acessar o identificador de publicidade IDFA antes do rastreamento em aplicativos e sites. Introduzido no iOS 14.5, o ATT obrigou todos os desenvolvedores a exibir um diálogo do sistema solicitando permissão de rastreamento. De acordo com a Documentação para Desenvolvedores Apple, cada aplicativo que usa IDFA para publicidade direcionada ou atribuição deve integrar o framework ATT e obter permissão de acesso.

Principais pontos

  • ATT — App Tracking Transparency, framework de solicitação de rastreamento no iOS 14.5+
  • IDFA — identificador de publicidade do dispositivo, acesso restrito sem consentimento
  • Diálogo do sistema — popup padrão com o texto do aplicativo que não pode ser alterado
  • Permissão de rastreamento — solicitação obrigatória para exibir anúncios e atribuição de instalações
  • Recusa — o usuário pode revogar a permissão nas Configurações a qualquer momento

O que é ATT (App Tracking Transparency)?

App Tracking Transparency é um framework da Apple para proteger a privacidade dos usuários, apresentado no iOS 14.5. Ele exige que os aplicativos obtenham permissão explícita para acessar o identificador de publicidade do dispositivo (IDFA) antes de usá-lo para rastreamento.

Antes do ATT, os desenvolvedores podiam ler o IDFA sem solicitar permissão, permitindo que as redes de anúncios criassem perfis de usuários e rastreassem sua atividade entre aplicativos e sites. A Apple considerou isso uma violação de privacidade e introduziu um diálogo de consentimento obrigatório.

O framework está disponível desde o iOS 14.0, mas tornou-se obrigatório para todos os aplicativos que usam IDFA com o lançamento do iOS 14.5 em abril de 2021. De acordo com a Flurry Analytics, após a implementação do ATT, menos de 25% dos usuários nos EUA consentiram com o rastreamento, o que mudou fundamentalmente o mercado de publicidade móvel.

O ATT verifica a permissão por meio de um diálogo especial do sistema que o aplicativo não pode modificar ou contornar. O usuário vê um popup padrão com o texto fornecido pelo desenvolvedor e escolhe entre “Permitir” ou “Solicitar ao aplicativo que não rastreie”.

Como o ATT se relaciona com a privacidade no iOS

A Apple posiciona o ATT como parte de sua estratégia geral de privacidade, que também inclui Rótulos de Privacidade Nutricional na App Store e o Manifesto de Privacidade. Os três mecanismos trabalham juntos: os rótulos mostram quais dados o aplicativo coleta, o Manifesto declara as razões para o uso de APIs e o ATT dá ao usuário controle sobre o rastreamento.

Recusar o rastreamento não bloqueia o funcionamento do aplicativo em si — os usuários podem continuar usando todos os recursos, mas as redes de anúncios não receberão o IDFA para personalização e atribuição. As alternativas da Apple ao IDFA incluem SKAdNetwork e Atribuição Probabilística.

De acordo com a Branch Metrics, após a introdução do ATT, a proporção de aplicativos que recebem IDFA caiu de 70% para 20% globalmente. Isso levou a uma reformulação das abordagens de atribuição de instalações e monetização por anúncios.

Mudanças no iOS 15 e 16

No iOS 15, a Apple não endureceu os requisitos do ATT, mas adicionou o Relatório de Privacidade de Aplicativos — um relatório que mostra ao usuário com que frequência os aplicativos acessam sensores e dados. O iOS 16 expandiu o controle: o usuário pode alterar as configurações de rastreamento a qualquer momento através de Ajustes → Privacidade → Rastreamento.

Importante: se o usuário selecionar “Solicitar ao aplicativo que não rastreie” no diálogo do ATT, o aplicativo não recebe o valor do IDFA — em vez disso, retorna uma string de zeros: 00000000-0000-0000-0000-000000000000. Tentar ler o IDFA por outros meios ou métodos alternativos leva à rejeição do aplicativo na App Store.

A partir do iOS 17, a Apple reforçou as verificações: se um aplicativo solicitar IDFA sem exibir o diálogo do sistema ATT, ele recebe uma recusa no nível do sistema operacional, não apenas um identificador vazio. Isso elimina a possibilidade de coleta em segundo plano do IDFA sem o conhecimento do usuário.

Como funciona a solicitação de rastreamento no iOS

O processo de solicitação do ATT consiste em três etapas: verificação do status, exibição do diálogo do sistema e processamento da resposta. O desenvolvedor não pode pular nenhuma etapa — o sistema operacional controla cada estágio.

Verificação do status de autorização

Antes de chamar o diálogo, o aplicativo deve verificar o status atual através do ATTrackingManager. Os possíveis status são: notDetermined (ainda não solicitado), restricted (proibido por políticas do dispositivo), denied (usuário recusou), authorized (permitido).

Se o status já estiver determinado (authorized ou denied), o diálogo não pode ser chamado novamente — o usuário fez uma escolha permanente. A única maneira de alterar a decisão é através das configurações do sistema iOS.

Para verificar o status, usa-se a propriedade ATTrackingManager.trackingAuthorizationStatus. A chamada deve ocorrer na thread principal, pois o diálogo do sistema é um componente de interface do usuário.

swift
import AppTrackingTransparency
import AdSupport

func checkTrackingStatus() {
    let status = ATTrackingManager.trackingAuthorizationStatus
    switch status {
    case .notDetermined:
        requestTrackingPermission()
    case .authorized:
        readIDFA()
    case .denied, .restricted:
        useAlternativeTracking()
    @unknown default:
        break
    }
}

Exibição do diálogo do sistema

Para exibir o diálogo, chama-se o método requestTrackingAuthorization com uma closure que recebe o resultado da escolha do usuário. Importante: o diálogo é exibido apenas uma vez. Se o desenvolvedor tentar chamá-lo novamente, o sistema ignora a solicitação.

O texto do diálogo consiste em duas partes: um cabeçalho do sistema (que não pode ser alterado) e uma mensagem personalizada que o desenvolvedor especifica no Info.plist através da chave NSUserTrackingUsageDescription.

O diálogo deve aparecer em um contexto natural — não imediatamente ao iniciar o aplicativo, mas na primeira tentativa de usar funcionalidades relacionadas ao rastreamento. A Apple recomenda exibir o diálogo depois que o usuário entender o valor da funcionalidade.

swift
func requestTrackingPermission() {
    ATTrackingManager.requestTrackingAuthorization { status in
        DispatchQueue.main.async {
            switch status {
            case .authorized:
                let idfa = ASIdentifierManager.shared().advertisingIdentifier
                print("IDFA: \(idfa)")
            case .denied:
                print("Usuário recusou rastreamento")
            default:
                break
            }
        }
    }
}

IDFA e restrição de acesso

IDFA (Identifier for Advertisers) é um identificador único de publicidade para dispositivos iOS, usado para publicidade direcionada e atribuição de instalações. Antes do ATT, os desenvolvedores o obtinham através do ASIdentifierManager sem restrições. Após o ATT, o acesso ao IDFA é bloqueado até que o usuário dê consentimento explícito.

O que é IDFA e para que serve

IDFA é uma string UUID única para cada dispositivo iOS. As redes de anúncios usam IDFA para: rastrear instalações de aplicativos (atribuição), exibir anúncios relevantes com base nos interesses do usuário, medir a eficácia de campanhas publicitárias e retargeting — trazer de volta usuários que não concluíram uma ação desejada.

Após o usuário recusar o rastreamento, o ASIdentifierManager retorna o valor 00000000-0000-0000-0000-000000000000. O aplicativo ainda pode ler o IDFA para fins técnicos (como antifraude), mas não pode transmiti-lo para redes de anúncios.

De acordo com a Singular (2024), a taxa global de consentimento do ATT é de 25–35%, com a Europa (GDPR) apresentando taxas mais altas (40–50%) do que os EUA (15–25%). Isso levou as plataformas de anúncios a desenvolver métodos alternativos de atribuição.

Alternativas ao IDFA: SKAdNetwork e Atribuição Probabilística

SKAdNetwork é um framework da Apple para atribuição de instalações sem expor o IDFA. Funciona no nível do sistema operacional: a rede de anúncios envia um postback assinado, que a Apple valida e encaminha ao desenvolvedor. A atribuição ocorre sem identificar um usuário específico, apenas no nível da campanha.

A Atribuição Probabilística usa múltiplos sinais do dispositivo — modelo, versão do iOS, fuso horário, brilho da tela — para corresponder probabilisticamente instalações a impressões de anúncios. No entanto, a Apple proíbe este método em suas diretrizes, e seu uso pode levar à rejeição do aplicativo.

Google, Adjust e AppsFlyer desenvolveram suas próprias soluções híbridas que combinam SKAdNetwork com dados agregados proprietários. Por exemplo, o Google Ads Conversion Tracking usa postbacks do SKAdNetwork e seus próprios modelos de machine learning para atribuição sem IDFA.

Implementação do ATT no código do aplicativo

Para integrar o ATT, é necessário adicionar a chave NSUserTrackingUsageDescription ao Info.plist e importar o framework AppTrackingTransparency. Abaixo estão as etapas para Swift e Objective-C.

Configuração do Info.plist

O primeiro passo é adicionar a chave NSUserTrackingUsageDescription ao Info.plist com um texto explicando por que o aplicativo precisa de rastreamento. Este texto será exibido no diálogo do sistema. Exemplo: “Seu IDFA é usado para exibir anúncios personalizados e acompanhar a eficácia das campanhas.”

Sem esta chave, chamar requestTrackingAuthorization causará uma quebra do aplicativo — a Apple verifica explicitamente a presença de NSUserTrackingUsageDescription antes de exibir o diálogo. O texto deve ser conciso, específico e refletir o uso real dos dados.

Importante: a chave é adicionada manualmente através da aba Info do Xcode ou editando o código-fonte XML do Info.plist. Após adicioná-la, recompile o projeto e verifique se a chave aparece no binário final.

xml
<!-- Info.plist -->
<key>NSUserTrackingUsageDescription</key>
<string>This identifier is used to deliver
personalized ads and measure campaign performance.</string>

Integração completa em Swift

Em um projeto real, é melhor chamar a solicitação ATT antes do primeiro lançamento de um módulo de anúncios ou tracker. Recomenda-se explicar primeiro o valor do consentimento em uma tela separada (pre-permission prompt) — isso aumenta as taxas de consentimento em 20–30%.

Um pre-permission prompt é uma interface de usuário personalizada que mostra o benefício de ativar o rastreamento (“Ajude-nos a mostrar anúncios relevantes”). Somente após tocar em “Continuar” o diálogo do sistema ATT aparece. A Adjust (2024) registrou um aumento de 40% no consentimento ao usar uma tela de pre-permission.

swift
final class TrackingManager {
    static let shared = TrackingManager()

    func requestTrackingIfNeeded() {
        guard ATTrackingManager.trackingAuthorizationStatus
            == .notDetermined
        else { return }

        ATTrackingManager.requestTrackingAuthorization { _ in
            NotificationCenter.default.post(
                Notification(Name("trackingStatusChanged"))
            )
        }
    }
}

Erros ao trabalhar com ATT

Os desenvolvedores frequentemente cometem erros típicos ao integrar o ATT, que levam a menor conversão de consentimentos ou rejeição do aplicativo pelos revisores da App Store. Vamos examinar os cinco problemas mais comuns.

Solicitar ATT imediatamente após iniciar o aplicativo

O erro mais comum é exibir o diálogo do sistema ATT na primeira tela logo após carregar o aplicativo. O usuário ainda não entende o valor do aplicativo e provavelmente pressiona “Recusar”. A IronSource (2023) mostrou uma queda de 32% no consentimento ao solicitar na primeira tela em comparação com após a terceira sessão.

Recomendação: solicite o rastreamento depois que o usuário realizar uma ação valiosa (visualizar conteúdo, iniciar a integração) ou após 3–5 sessões de uso do aplicativo. Isso aumenta a confiança e a percepção de valor.

Ausência de tela de pre-permission

Exibir o diálogo do sistema ATT sem explicação prévia é um erro que reduz a conversão para 15–20%. O usuário vê uma solicitação inesperada e a recusa instintivamente. Uma tela de pre-permission explicando o benefício aumenta o consentimento para 35–45%.

O texto do pre-permission deve ser específico: “Permita-nos mostrar anúncios relevantes — isso nos ajuda a permanecer gratuitos.” Evite frases vagas — elas reduzem a confiança. A GameAnalytics mostrou em 2023 que uma tela de pre-permission explicando o benefício gera 28% mais consentimentos do que uma tela vazia.

Ignorar o status restricted e denied

Se o usuário já recusou o rastreamento ou o status é restricted (controle parental, políticas corporativas), o aplicativo não deve chamar o diálogo ATT novamente. Uma chamada repetida não funciona e é percebida como violação de privacidade. Em vez disso, mude para SKAdNetwork e publicidade contextual.

No status restricted, o aplicativo não pode determinar se a opção “Permitir solicitações de rastreamento” está ativada nas configurações. Neste caso, use sempre SKAdNetwork como único método de atribuição e não exiba uma tela de pre-permission.

Ler IDFA sem chamar ATT

Ler IDFA através de ASIdentifierManager.shared().advertisingIdentifier sem permissão prévia do ATT retorna uma string de zeros. Alguns desenvolvedores tentam usar métodos antigos de acesso ao IDFA através de APIs privadas — isso garante a rejeição durante a revisão do aplicativo.

A Apple usa análise estática de código e machine learning para detectar soluções alternativas. Mesmo que o aplicativo passe na revisão, atualizações subsequentes ou verificações automáticas podem revelar a violação e levar à proibição da conta do desenvolvedor.

Texto incorreto do NSUserTrackingUsageDescription

Um texto muito longo, vago ou enganoso na chave NSUserTrackingUsageDescription é motivo para rejeição pelos revisores. A Apple verifica se a descrição corresponde ao uso real dos dados. Se o aplicativo não tem anúncios mas afirma “para fins publicitários”, o revisor rejeitará a compilação.

Formato recomendado: uma descrição específica do propósito do uso do IDFA, com 2–3 frases. Exemplo para um aplicativo sem anúncios: “O identificador é usado para análise e prevenção de fraudes. Os dados não são compartilhados com terceiros nem usados para criação de perfis.”

Perguntas frequentes

O que acontece se o ATT não for adicionado ao aplicativo?

Se um aplicativo usa IDFA ou rastreamento sem ATT, a Apple o rejeitará durante a revisão. Mesmo que não haja rastreamento, é recomendado adicionar ATT para transparência — caso contrário, o risco de rejeição aumenta a cada atualização.

O aplicativo funciona sem consentimento de rastreamento?

Sim, o aplicativo funciona completamente, mas as redes de anúncios não receberão o IDFA para personalização e atribuição. Todos os recursos do aplicativo, exceto anúncios personalizados, permanecem disponíveis.

É possível redefinir o status do ATT no iOS?

Sim, o usuário pode alterar sua decisão a qualquer momento através de Ajustes → Privacidade → Rastreamento. O aplicativo não pode programaticamente redefinir o status — apenas através das configurações do sistema.

Como aumentar a taxa de consentimento do ATT?

Use uma tela de pre-permission explicando o benefício e solicite o rastreamento não no primeiro lançamento, mas após o usuário realizar uma ação valiosa. A Meta (2024) mostrou um aumento de 35% nos consentimentos com solicitações atrasadas.

O ATT afeta aplicativos para crianças?

Aplicativos na categoria “Crianças” não podem usar IDFA e ATT para rastreamento de acordo com as regras da Apple. Também é proibido compartilhar dados com terceiros para análise ou publicidade.

Resumo

  • ATT — App Tracking Transparency, framework obrigatório para solicitar acesso ao IDFA no iOS 14.5+
  • IDFA — identificador de publicidade do dispositivo, protegido pelo ATT contra acesso não autorizado
  • Diálogo do sistema — o usuário sempre vê um diálogo que o aplicativo não pode modificar ou contornar
  • Pre-permission — tela personalizada explicando o benefício, aumenta o consentimento em 20–40%
  • SKAdNetwork — o único método de atribuição da Apple para aplicativos sem acesso ao IDFA
  • Conversão — a taxa global de consentimento é de 25–35%, na Europa até 50% graças ao GDPR
  • Integre o ATT antes de chamar qualquer tracker e certifique-se de adicionar a chave NSUserTrackingUsageDescription ao Info.plist

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.

Discutir o projeto

Leia também