IDFA (Identifier for Advertisers) é um identificador único de dispositivo no iOS projetado para fins publicitários e atribuição de instalações. Com o surgimento do App Tracking Transparency (ATT) no iOS 14.5, obter o IDFA exige consentimento explícito do usuário por meio de um diálogo do sistema. De acordo com a Apple App Tracking Transparency Documentation, 2025, sem a permissão ATT o aplicativo recebe um identificador zerado. App Tracking Transparency mudou fundamentalmente o ecossistema de publicidade móvel, reduzindo a disponibilidade do IDFA em 80% após sua implementação.
Principais pontos
IDFA (Identifier for Advertisers) é um identificador alfanumérico único atribuído a cada dispositivo Apple para fins publicitários. Ao contrário do IDFV (Identifier for Vendor), o IDFA é comum a todos os aplicativos no dispositivo e pode ser redefinido pelo usuário a qualquer momento através de Ajustes — Privacidade — Publicidade — Redefinir identificador.
O propósito principal do IDFA é a atribuição de instalações e o monitoramento da eficácia de campanhas publicitárias em dispositivos Apple. As redes de anúncios usam o IDFA para vincular um clique em um anúncio à instalação de um aplicativo, criar perfis de usuário e exibir anúncios personalizados. Desde a implementação do ATT, a porcentagem de usuários que concedem acesso ao IDFA é em média de 20–35% de acordo com várias plataformas analíticas.
De acordo com o Flurry Analytics (2025), após o iOS 18 a taxa de adoção do ATT atingiu 92% dos dispositivos ativos, mas a proporção de usuários que concordam com o rastreamento caiu para 22%. Isso levou a uma mudança fundamental na indústria de publicidade móvel, forçando as redes de anúncios a buscar métodos alternativos de atribuição.
Uma característica fundamental do IDFA é que ele não contém dados pessoais do usuário nem está vinculado a um Apple ID. No entanto, a Apple o classifica como um identificador sujeito à regulamentação do App Tracking Transparency.
App Tracking Transparency (ATT) é um framework da Apple apresentado no iOS 14.5 que exige consentimento explícito do usuário antes de ler o IDFA. Sem consentimento, o método asIdentifierManager retorna um identificador zerado (00000000-0000-0000-0000-000000000000) e o aplicativo não pode rastrear o usuário.
O ATT é implementado através da classe ATTrackingManager com um único método público requestTrackingAuthorization(completionHandler:). Quando este método é chamado, o sistema exibe um diálogo nativo com o texto definido pelo desenvolvedor através da chave NSUserTrackingUsageDescription no Info.plist. O usuário pode escolher uma de três opções: “Permitir rastreamento”, “Pedir ao aplicativo para não rastrear” ou “Negar”.
O status de autorização é monitorado através de ATTrackingManager.trackingAuthorizationStatus, que pode assumir quatro valores: notDetermined, restricted, denied ou authorized. Antes de solicitar o ATT, recomenda-se verificar o status atual e não chamar o diálogo se o status já estiver determinado — a partir do iOS 17, chamar novamente requestTrackingAuthorization com status denied não exibe o diálogo e retorna um erro.
O momento da solicitação do ATT afeta criticamente as taxas de consentimento. Pesquisas do Singular (2025) mostram que solicitar o ATT na tela de integração (no primeiro lançamento) produz uma taxa de conversão de 35–45%, enquanto solicitá-lo após completar uma ação (por exemplo, após o registro) aumenta a conversão para 55–65%. Recomenda-se exibir uma tela de pré-permissão com design personalizado explicando o valor do rastreamento ao usuário antes do diálogo ATT do sistema.
Importante: o aplicativo pode chamar requestTrackingAuthorization apenas uma vez antes de receber uma resposta. Depois que o usuário escolhe “Negar” ou “Pedir ao aplicativo para não rastrear”, o diálogo não aparecerá mais no dispositivo. O desenvolvedor deve implementar mecanismos alternativos para trabalhar sem IDFA, garantindo que o aplicativo continue funcionando corretamente em condições de rastreamento limitado.
Com o lançamento do iOS 18, a Apple endureceu os requisitos para aplicativos que usam o identificador publicitário. Todos os aplicativos que solicitam IDFA ou transmitem dados do dispositivo para fins publicitários devem cumprir as novas regras da App Store. O não cumprimento leva à rejeição do build durante a revisão do App Store Connect.
A partir do iOS 18, cada aplicativo deve incluir um Privacy Manifest (arquivo privacy.xcprivacy) declarando todas as APIs usadas para rastreamento. Para o IDFA, são usadas as chaves NSPrivacyTracking e NSPrivacyTrackingDomains, onde são especificados os domínios das redes de anúncios para os quais o identificador é transmitido. Sem um manifesto correto, o aplicativo é rejeitado durante a moderação do App Store Connect.
A Apple também introduziu o requisito de especificar o motivo do uso do identificador publicitário na descrição do aplicativo. Se o aplicativo usa IDFA para atribuição de instalações, ele deve usar o SKAdNetwork como método principal, com o IDFA apenas como um sinal adicional para melhorar a precisão da atribuição.
Com o aumento das restrições ao IDFA, a indústria desenvolveu várias abordagens alternativas. SKAdNetwork (StoreKit Ad Network) é o mecanismo oficial de atribuição da Apple que funciona sem IDFA e não requer consentimento do usuário. O SKAdNetwork usa solicitações postback assinadas entre a rede de anúncios e a App Store, garantindo a privacidade do usuário.
Outras alternativas incluem: atribuição probabilística baseada em endereço IP, versão do SO e outros sinais do dispositivo; APIs agregadas privadas como Private Click Measurement (PCM) do WebKit; e soluções próprias de plataformas de anúncios que usam aprendizado de máquina para prever conversões. Para o mercado chinês, também é usado o CAID (Cellular Advertising ID), baseado em dados da rede da operadora móvel.
Implementar uma solicitação de IDFA requer integrar o App Tracking Transparency e lidar corretamente com todos os possíveis status de autorização. Abaixo está um exemplo completo para Swift com uma tela de pré-permissão.
O exemplo demonstra o fluxo completo de trabalho com IDFA: verificar o status, exibir uma tela de pré-permissão, chamar o diálogo ATT do sistema e obter o identificador após a autorização.
import AppTrackingTransparency
import AdSupport
func requestIDFAAccess() {
let status = ATTrackingManager.trackingAuthorizationStatus
switch status {
case .notDetermined:
// Mostrando tela de pré-permissão com explicação
showPrePermissionScreen { accepted in
guard accepted else { return }
ATTrackingManager.requestTrackingAuthorization { newStatus in
handleATTStatus(newStatus)
}
}
case .authorized:
// Usuário já concedeu consentimento — obtendo IDFA
let idfa = ASIdentifierManager.shared().advertisingIdentifier
print("IDFA: \(idfa.uuidString)")
case .denied, .restricted:
// Redirecionando usuário para configurações
redirectToSettings()
@unknown default:
break
}
}
private func handleATTStatus(status: ATTrackingManager.AuthorizationStatus) {
if status == .authorized {
let idfa = ASIdentifierManager.shared().advertisingIdentifier
// Transmitindo IDFA para a rede de anúncios
sendIDFAToAdNetwork(idfa.uuidString)
}
}
Como a maioria dos usuários rejeita a solicitação ATT, os desenvolvedores precisam de um conjunto de estratégias para trabalhar eficazmente sem o identificador. A abordagem principal é uma combinação de SKAdNetwork e métodos probabilísticos de atribuição.
SKAdNetwork (SKAN) é um framework da Apple para atribuição de instalações que não requer IDFA nem exibe um diálogo de consentimento. A rede de anúncios registra seu ID SKAdNetwork no Info.plist do aplicativo e, após a instalação, a App Store envia um postback assinado com informações da campanha. O SKAN 4.0, apresentado no iOS 17, suporta múltiplas conversões, identificadores de origem e valores de conversão de granularidade grossa.
Limitações do SKAN: atraso do postback de 24 a 48 horas, ausência de identificador do usuário e valores de conversão limitados (até 64). Apesar disso, o SKAN se tornou o padrão de facto para atribuição no iOS após a implementação do ATT, e todas as grandes redes de anúncios devem suportá-lo para funcionar em dispositivos Apple.
Redes de anúncios como Meta e Google desenvolveram suas próprias soluções baseadas em aprendizado de máquina que preveem conversões sem identificador de usuário. O Meta Aggregated Events Measurement (AEM) usa dados agregados para atribuição, enquanto o Google Attribution modela conversões com base em dados históricos.
Para o desenvolvedor, é importante implementar múltiplos métodos de atribuição simultaneamente: SKAdNetwork como método principal, atribuição do lado do servidor através de redes de anúncios e ferramentas analíticas próprias com modelagem de conversões. A combinação de métodos permite recuperar até 70–80% da precisão de atribuição em comparação com a era do IDFA. Recomenda-se testar diferentes combinações de métodos durante a fase de teste beta para selecionar o conjunto ideal para o aplicativo e público-alvo específicos.
Perguntas frequentes
IDFA é um código único do dispositivo iPhone ou iPad que as redes de anúncios usam para exibir anúncios personalizados e medir a eficácia das campanhas. Desde o iOS 14.5, o aplicativo deve solicitar sua permissão antes de acessar o IDFA através do diálogo do sistema App Tracking Transparency.
IDFV (Identifier for Vendor) é um identificador único para todos os aplicativos do mesmo desenvolvedor em um dispositivo. Ao contrário do IDFA, o IDFV não requer consentimento ATT e está sempre disponível. O IDFA é comum a todos os aplicativos, enquanto o IDFV é específico para aplicativos de um mesmo fornecedor (por bundle ID).
É impossível obter IDFA sem consentimento do usuário. Desde o iOS 14.5, o ASIdentifierManager.advertisingIdentifier retorna um identificador zerado (00000000-0000-0000-0000-000000000000) se o usuário não concedeu consentimento através do ATT. A única maneira legal é chamar ATTrackingManager.requestTrackingAuthorization e obter o status authorized.
NSUserTrackingUsageDescription é uma chave no Info.plist do aplicativo que contém o texto exibido no diálogo ATT do sistema. O texto deve explicar ao usuário por que o aplicativo precisa de rastreamento. Exemplo: “Seu IDFA é usado para exibir anúncios personalizados e medir a eficácia das campanhas.”
Não, o IDFA é um identificador exclusivo do ecossistema Apple. O Android usa GAID (Google Advertising ID) ou AAID (Android Advertising ID). Ambos têm função semelhante, mas são regulados por regras diferentes — no Android, o usuário pode redefinir o identificador ou desativar a personalização de anúncios nas configurações do Google.
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.