Como funciona a atribuição de múltiplas janelas do SKAdNetwork 4.0? O SKAdNetwork 4.0 divide a medição de conversões em três janelas sequenciais que abrangem os dias 0–2, 3–7 e 8–35 após o primeiro lançamento do aplicativo. A Apple atribui um nível de dados de postback a cada download de aplicativo, o que determina se os postbacks elegíveis expõem dados de atribuição detalhados, genéricos ou reduzidos.
O SKAdNetwork 4.0 é a estrutura de atribuição de campanhas móveis da Apple voltada para a preservação da privacidade, permitindo a medição segura de campanhas no iOS. Ele introduz três janelas de conversão sequenciais de até 35 dias após o primeiro lançamento, identificadores de origem hierárquicos, valores de conversão genéricos e mecanismos de bloqueio de janela para avaliar o valor do ciclo de vida do usuário no meio do funil sem coletar identidades persistentes de dispositivos.
| Termo | Definição |
|---|---|
| SKAdNetwork | Estrutura em nível de plataforma da Apple para atribuição de campanhas publicitárias com preservação de privacidade. |
| Janela de Conversão | Um dos três períodos de medição designados, com início no primeiro lançamento do aplicativo, durante o qual o aplicativo anunciado pode atualizar os valores de conversão. |
| Nível de Dados de Postback | Um nível atribuído pela plataforma (do Nível 0 ao Nível 3) que rege a granularidade dos metadados retornados nos postbacks. |
| Valor de Conversão Genérico | Um sinal de conversão de três níveis (low, medium, high) que pode ser divulgado quando os dados de conversão detalhados não estão disponíveis ou em janelas de conversão posteriores. |
Visão Geral: Cronogramas Chave de Postback e Regras de Divulgação
- Janela 1 (Dias 0–2 Após o Primeiro Lançamento): Pode divulgar valores detalhados (0–63) ou genéricos (
low,medium,high); é enviada após um atraso adicional randomizado de 24 a 48 horas. - Janela 2 (Dias 3–7 Após o Primeiro Lançamento): Pode divulgar um
coarse-conversion-valuequando fornecido e permitido pelo nível de dados de postback; caso contrário, esse campo fica ausente. É enviada após um atraso adicional randomizado de 24 a 144 horas. - Janela 3 (Dias 8–35 Após o Primeiro Lançamento): Pode divulgar um
coarse-conversion-valuequando fornecido e permitido pelo nível de dados de postback; caso contrário, esse campo fica ausente. É enviada após um atraso adicional randomizado de 24 a 144 horas. - Restrição de Dados do Nível 0: Downloads que caem no Nível 0 recebem um único postback contendo um ID de origem de 2 dígitos e nenhum valor de conversão; o segundo e o terceiro postbacks são omitidos.
- Requisito de Múltiplos Postbacks: Para ser elegível a vários postbacks vencedores, o anúncio deve ser assinado usando o SKAdNetwork 4 ou posterior, and o aplicativo anunciado deve atualizar os valores de conversão durante as janelas de conversão aplicáveis.
O Que É o SKAdNetwork 4.0 e Como Funciona a Atribuição de Múltiplas Janelas
A Evolução Estrutural das Restrições de Temporizador Único para o Acompanhamento do Ciclo de Vida em Múltiplas Janelas
As versões anteriores do StoreKit Ad Network da Apple (SKAdNetwork 2.0 e 3.0) operavam sob um único temporizador contínuo de 24 horas. No SKAdNetwork 3 e em versões anteriores, atualizações válidas e crescentes de valores de conversão podiam estender o período de conversão contínuo reiniciando o temporizador de 24 horas. Assim que se passavam 24 horas sem nenhuma atualização, a janela se fechava e a Apple enviava um único postback após um atraso randomizado.
Essa arquitetura de temporizador único gerava atrito operacional:
- Horizontes de Observação Restritos: Os anunciantes só conseguiam medir o engajamento inicial ocorrido durante os primeiros dias pós-instalação.
- Atrasos de Relatório: Atualizações de conversão qualificadas repetidas podiam estender o período efetivo de medição e atrasar o postback final, desacelerando os algoritmos de lances de anúncios automatizados.
- Visibilidade de Cauda Longa Limitada: O SKAdNetwork 3 não possuía janelas de conversão posteriores dedicadas para a medição estruturada do Dia 7 ao Dia 30.
O SKAdNetwork 4.0 reestrutura esse modelo ao estabelecer três janelas de medição fixas e sequenciais ancoradas ao primeiro lançamento do aplicativo pelo usuário.
Desacoplando os Temporizadores de Atribuição das Sessões Ativas de Usuário
No SKAdNetwork 4.0, as janelas de conversão avançam com base na duração fixa do calendário e não na atividade contínua do usuário. Quando um aplicativo é aberto pela primeira vez após a impressão de um anúncio atribuído, o sistema operacional inicia a Janela 1.
Independentemente de o usuário abrir o aplicativo uma vez ou cinquenta vezes durante as primeiras 48 horas, a Janela 1 se fecha na marca de 48 horas (a menos que seja finalizada explicitamente de forma antecipada por meio do bloqueio de janela). O sistema avança automaticamente para a Janela 2 (do Dia 3 ao Dia 7) e, em seguida, para a Janela 3 (do Dia 8 ao Dia 35). Esse desacoplamento garante intervalos estruturados de envio de postbacks para os fluxos de dados downstream.
A Cadeia de Assinatura Criptográfica de Duas Etapas
O SKAdNetwork mantém a integridade dos dados usando criptografia de chave pública em duas fases distintas:
- Etapa de Impressão do Anúncio (Rede de Anúncios para a Apple): Quando uma rede de anúncios exibe uma impressão, ela assina o payload do anúncio usando sua chave privada. Após a instalação e o lançamento do aplicativo, o sistema operacional valida essa assinatura em relação à chave pública da rede de anúncios registrada na Apple para verificar a elegibilidade de atribuição.
- Etapa de Validação de Instalação (Apple para a Rede de Anúncios/Desenvolvedor): Quando uma janela de conversão se fecha, a Apple assina o payload do postback de validação de instalação. A rede de anúncios receptora e o endpoint do desenvolvedor verificam essa assinatura usando a chave pública da Apple para certificar a autenticidade e a integridade do postback.
Veja Também: SKAdNetwork ──> Modelo de Atribuição Móvel
A Mecânica das Três Janelas de Postback e Cronogramas de Medição
Janela 1: Capturando o Engajamento Inicial e Sinais de Conversão de Alta Precisão
- Intervalo de Medição: Do Dia 0 ao Dia 2 (primeiras 48 horas após o primeiro lançamento).
- Divulgação de Dados Disponível: Valor de conversão detalhado (inteiro de 6 bits de 0 a 63) ou valor genérico (
low,medium,high), determinado pelo nível de dados de postback atribuído. - Atraso Randomizado de Postback: 24 a 48 horas após o fechamento ou bloqueio da janela.
- Objetivo Analítico: Medir a conclusão imediata da integração (onboarding), marcos de tutoriais, conversão de compra inicial e risco precoce de rotatividade (churn).
Janela 2: Avaliando a Retenção Inicial de Usuários e Marcos de Meio de Funil
- Intervalo de Medição: Do Dia 3 ao Dia 7 após o primeiro lançamento (horas 48 a 168).
- Divulgação de Dados Disponível: Pode divulgar um
coarse-conversion-value(low,medium,high) quando fornecido e permitido pelo nível de dados de postback; caso contrário, esse campo fica ausente. Valores detalhados (0 a 63) não são suportados na Janela 2. - Atraso Randomizado de Postback: 24 a 144 horas (1 a 6 dias) após o fechamento ou bloqueio da janela.
- Objetivo Analítico: Avaliar a retenção do Dia 3 ao Dia 7, ciclos de engajamento de vários dias, testes de assinatura iniciais e comportamento de compras recorrentes.
Janela 3: Medindo a Retenção de Cauda Longa e o Valor do Ciclo de Vida Acumulado
- Intervalo de Medição: Do Dia 8 ao Dia 35 após o primeiro lançamento (horas 168 a 840).
- Divulgação de Dados Disponível: Pode divulgar um
coarse-conversion-value(low,medium,high) quando fornecido e permitido pelo nível de dados de postback; caso contrário, esse campo fica ausente. - Atraso Randomizado de Postback: 24 a 144 horas (1 a 6 dias) após o fechamento ou bloqueio da janela.
- Objetivo Analítico: Capturar parâmetros de referência de retenção do Mês 1, conversões de teste para assinatura paga e marcos de monetização de cauda longa.

Ad Impression
│
▼
App Install
│
▼
First App Launch ← conversion measurement t = 0
│
├── Window 1: Day 0–2 after first launch
│ Fine or coarse disclosure
│ 24–48h randomized delay after close/lock
│
├── Window 2: Day 3–7 after first launch
│ Coarse disclosure only (or absent)
│ 24–144h randomized delay after close/lock
│
└── Window 3: Day 8–35 after first launch
Coarse disclosure only (or absent)
24–144h randomized delay after close/lock
Mecânica de Atraso Randomizado: Janela 1 versus Janelas 2 e 3
Para evitar heurísticas de ataques de tempo (timing attacks) em que um observador correlaciona o milissegundo exato de uma transação no aplicativo com o recebimento de um postback de atribuição, a Apple aplica atrasos de envio randomizados:
- Temporizador da Janela 1: Se a Janela 1 fechar naturalmente sem um bloqueio antecipado, o primeiro postback é enviado após um atraso adicional randomizado de 24 a 48 horas.
- Temporizadores das Janelas 2 e 3: A Apple amplia a janela de atraso randomizado para 24 a 144 horas (até 6 dias completos) para acomodar a duração estendida dos períodos de medição.
Como os Níveis de Dados de Postback Controlam a Divulgação
A Matriz Oficial de Níveis de Dados de Postback
A Apple atribui um nível de dados de postback (do Nível 0 ao Nível 3) aos downloads de aplicativos com base no público associado ao aplicativo ou domínio de origem, ao aplicativo anunciado, ao país de instalação e ao identificador de origem hierárquico. A Apple não publica limiares universais de contagem de instalações para os Níveis 0 a 3.
| Nível de Dados de Postback | Primeiro Postback (Janela 1) | Segundo e Terceiro Postbacks (Janelas 2 e 3) |
|---|---|---|
| Nível 3 | ID de origem de 2, 3 ou 4 dígitos + valor detalhado (se fornecido) + metadados elegíveis de origem/país | ID de origem de 2 dígitos + valor genérico (se fornecido) |
| Nível 2 | ID de origem de 2, 3 ou 4 dígitos + valor detalhado (se fornecido) | ID de origem de 2 dígitos + valor genérico (se fornecido) |
| Nível 1 | ID de origem de 2 dígitos + valor genérico (se fornecido) | ID de origem de 2 dígitos + valor genérico (se fornecido) |
| Nível 0 | Apenas ID de origem de 2 dígitos (sem valor de conversão) | Nenhum segundo ou terceiro postback enviado |

Como Funcionam os Identificadores de Origem Hierárquicos
Estrutura e Granularidade do Identificador de Origem
O SKAdNetwork 4.0 substitui o ID de Campanha legado de 2 dígitos por um inteiro hierárquico de 4 dígitos chamado Identificador de Origem (Source Identifier):
Redes de anúncios e desenvolvedores definem o significado do identificador de origem hierárquico com base nos requisitos internos de relatórios:
- Dois Dígitos Inferiores (
): Formam a porção mínima de dois dígitos do identificador de origem hierárquico que pode ser divulgada. As redes de anúncios podem usar essa parte para o agrupamento amplo de campanhas, mas a Apple não prescreve um significado comercial fixo. - Dígitos de Ordem Superior (
): Podem codificar dimensões internas, como posicionamento de anúncios, ID do criativo ou público-alvo geográfico. A Apple não atribui semânticas de negócios fixas a dígitos individuais.

Original Source Identifier: [ d4 ] [ d3 ] [ d2 ] [ d1 ]
Possible disclosed forms in first winning postback:
2-digit disclosure: [ d2 ] [ d1 ]
3-digit disclosure: [ d3 ][ d2 ] [ d1 ]
4-digit disclosure: [ d4 ][ d3 ][ d2 ] [ d1 ]
The exact number of digits disclosed depends on Apple's postback data tier.
A consolidação de campanhas pode aumentar o público associado a determinados identificadores de origem, mas a Apple não publica limiares universais de instalações e a consolidação não garante um nível de dados de postback específico.
Valores de Conversão Detalhados versus Genéricos
Valores de Conversão Detalhados
Os valores de conversão detalhados funcionam como números binários de 6 bits que representam inteiros de 0 a 63 (
Valores de Conversão Genéricos
Os valores de conversão genéricos fornecem uma alternativa de menor granularidade quando o nível de dados de postback aplicável não permite a divulgação detalhada e servem como o formato de valor de conversão para o segundo e o terceiro postbacks. A Apple não atribui semânticas comerciais predefinidas a low, medium ou high; os exemplos abaixo são mapeamentos ilustrativos definidos pelo aplicativo:
low: Mapeamento ilustrativo para engajamento básico (por exemplo, abertura inicial do aplicativo ou cadastro).medium: Mapeamento ilustrativo para engajamento intermediário (por exemplo, tutorial concluído ou sessão ativa de vários dias).high: Mapeamento ilustrativo para marcos de conversão de alto valor (por exemplo, compra no aplicativo ou ativação de teste).
Para o design de esquemas de conversão específicos de implementação, consulte a documentação de mapeamento de conversão SKAN.
Mapeamento de Índice de Sequência de Postback
Nos postbacks do SKAdNetwork 4, o campo postback-sequence-index identifica a janela de conversão correspondente:
postback-sequence-index |
Janela de Conversão Correspondente | Formatos de Valor de Conversão Permitidos |
|---|---|---|
0 |
Janela 1 (Dias 0–2 após o primeiro lançamento) | Detalhado (0–63) OU Genérico (low, medium, high) |
1 |
Janela 2 (Dias 3–7 após o primeiro lançamento) | Apenas genérico (low, medium, high) (ou ausente) |
2 |
Janela 3 (Dias 8–35 após o primeiro lançamento) | Apenas genérico (low, medium, high) (ou ausente) |
A Apple especifica que um postback de validação de instalação pode conter um conversion-value (detalhado) ou um coarse-conversion-value (genérico), mas nunca ambos simultaneamente.
Os payloads a seguir são exemplos ilustrativos do SKAdNetwork 4. Os campos reais de postback variam de acordo com a sequência de postback, o nível de dados de postback, o tipo de anúncio e as condições de divulgação de privacidade. Os valores de attribution-signature de exemplo são marcadores de posição e não são criptograficamente válidos.
O Exemplo 1 abaixo ilustra um payload de postback detalhado da Janela 1, e o Exemplo 2 ilustra um payload de postback genérico da Janela 2:
{
"version": "4.0",
"ad-network-id": "example123.skadnetwork",
"source-identifier": "4821",
"app-id": 1234567890,
"transaction-id": "6a8b1c2d-3e4f-5a6b-7c8d-9e0f1a2b3c4d",
"postback-sequence-index": 0,
"conversion-value": 47,
"fidelity-type": 1,
"did-win": true,
"attribution-signature": "MEQCIFz8...SAMPLE_CRYPTOGRAPHIC_SIGNATURE...=="
}
{
"version": "4.0",
"ad-network-id": "example123.skadnetwork",
"source-identifier": "48",
"app-id": 1234567890,
"transaction-id": "6a8b1c2d-3e4f-5a6b-7c8d-9e0f1a2b3c4d",
"postback-sequence-index": 1,
"coarse-conversion-value": "high",
"fidelity-type": 1,
"did-win": true,
"attribution-signature": "MEQCIFz8...SAMPLE_CRYPTOGRAPHIC_SIGNATURE...=="
}
Vantagens e Desvantagens de Bloquear uma Janela de Conversão Antecipadamente
Acelerando a Medição com o Parâmetro lockWindow
Por padrão, cada janela de medição permanece aberta por toda a sua duração de calendário (48 horas para a Janela 1, 5 dias para a Janela 2, 28 dias para a Janela 3). Quando lockWindow é definindo como true, a atualização se torna a atualização final do valor de conversão para a janela ativa. O sistema prepara o postback e ignora atualizações adicionais do valor de conversão pelo resto dessa janela.

Default Window 1 (No Lock):
[First Launch] ─────────────── 48 Hours Open ───────────────► [Closes] ──► Delay (24-48h) ──► Postback 1
Locked Window 1 (Purchase at Hour 6):
[First Launch] ── 6h (Lock: true) ──► [Conversion Value Locked / Postback Prepared] ──► Delay (24-48h) ──► Postback 1 Sent Sooner
Considerações Operacionais ao Acionar Bloqueios de Janela
- Envio Acelerado de Postback: Quando uma conversão é finalizada antecipadamente, o atraso do postback começa assim que a conversão bloqueada é finalizada, em vez de esperar a janela de calendário completa transcorrer.
- Independência de Janela: O bloqueio da janela atual não adianta o início da próxima janela. A janela de conversão seguinte ainda começa em seu limite de tempo predefinido (por exemplo, a Janela 2 começa no Dia 3, independentemente de quando a Janela 1 foi bloqueada).
- Bloqueio de Eventos Subsequentes: Uma vez que
lockWindow: trueé executado, o sistema operacional ignora todas as chamadas subsequentes de atualização do valor de conversão durante o restante dessa janela específica.
O código Swift abaixo demonstra como atualizar valores de conversão detalhados e genéricos e acionar o bloqueio de janelas usando o StoreKit:
import Foundation
import StoreKit
enum SKANError: Error {
case invalidFineValue
case unsupportedOSVersion
}
final class SKAN4Manager {
static let shared = SKAN4Manager()
private init() {}
/// Updates conversion values and optionally locks the active SKAN 4.0 window
/// - Parameters:
/// - fineValue: 6-bit integer (0 to 63) for Window 1. Note: In Windows 2 and 3, SKAdNetwork ignores the fineValue parameter.
/// - coarseValue: Coarse value string ("low", "medium", "high") for all windows
/// - shouldLock: Boolean flag to immediately finalize the active window
func updateConversionState(
fineValue: Int,
coarseValue: SKAdNetwork.CoarseConversionValue,
shouldLock: Bool,
completion: ((Error?) -> Void)? = nil
) {
guard #available(iOS 16.1, *) else {
completion?(SKANError.unsupportedOSVersion)
return
}
// Validate fine-grained value bounds (0 to 63)
guard (0...63).contains(fineValue) else {
completion?(SKANError.invalidFineValue)
return
}
// Execute asynchronous SKAN 4.0 conversion update
SKAdNetwork.updatePostbackConversionValue(
fineValue,
coarseValue: coarseValue,
lockWindow: shouldLock
) { error in
if let error = error {
print("SKAN 4.0 update failed: \(error.localizedDescription)")
} else {
print("SKAN 4.0 update succeeded - Fine: \(fineValue), Coarse: \(coarseValue.rawValue), Locked: \(shouldLock)")
}
completion?(error)
}
}
/// Illustrative revenue mapping workflow (Do not copy specific thresholds directly to production)
/// Note: In production, determine the active conversion window and define window-specific coarse-value logic.
func handleInAppPurchase(amountUSD: Double) {
let fineVal: Int
let coarseVal: SKAdNetwork.CoarseConversionValue
let lock: Bool
switch amountUSD {
case 0.0..<5.0:
fineVal = 10
coarseVal = .low
lock = false
case 5.0..<25.0:
fineVal = 25
coarseVal = .medium
lock = false
case 25.0...:
fineVal = 60
coarseVal = .high
// Lock window immediately to expedite postback preparation for high-value conversion
lock = true
default:
fineVal = 0
coarseVal = .low
lock = false
}
updateConversionState(fineValue: fineVal, coarseValue: coarseVal, shouldLock: lock)
}
}
Interoperabilidade entre SKAdNetwork 4.0 e AdAttributionKit
A Relação Entre o SKAdNetwork e o Apple AdAttributionKit
A Apple introduziu o AdAttributionKit como uma estrutura de atribuição expandida para o iOS 17.4 e versões posteriores. O AdAttributionKit e o SKAdNetwork podem coexistir, mas continuam sendo APIs de atribuição distintas:
- Invocações de API Específicas da Estrutura: Os aplicativos devem chamar a API de atualização de conversão que corresponde à estrutura usada pela rede de anúncios. Se uma rede de anúncios exibir anúncios por meio do AdAttributionKit, o aplicativo invocará os métodos de conversão do AdAttributionKit; se estiver usando o SKAdNetwork, ele chamará as APIs do StoreKit.
- Seleção de Ganhadores entre Estruturas: Quando ambas as estruturas registram impressões qualificadas para uma única instalação, o sistema operacional as avalia em conjunto e seleciona uma única impressão vencedora para atribuição.
- Comportamento de Ponte (Bridging): A Apple fornece comportamento de ponte de valor de conversão para certas chamadas de atualização do SKAdNetwork para garantir a compatibilidade entre as camadas de medição.
O SKAdNetwork 4 continua importante para operar as integrações existentes de atribuição da App Store, enquanto a Apple direciona as novas implementações de publicidade de aplicativos para o AdAttributionKit e documenta a interoperabilidade entre as duas estruturas.
Matriz Comparativa: SKAN 3.0 Legado versus Modelo de Múltiplas Janelas do SKAN 4.0
| Dimensão Funcional | SKAdNetwork 3.0 Legado | SKAdNetwork 4.0 |
|---|---|---|
| Número de Postbacks Vencedores | Um Postback | Até Três Postbacks Vencedores |
| Cronograma de Medição | Temporizador contínuo de 24 horas após a última atualização crescente qualificada | Até 35 Dias (Três Janelas a Partir do Primeiro Lançamento) |
| Estrutura de ID de Origem | Inteiro de 2 Dígitos (00 a 99) | ID de Origem Hierárquico de 4 Dígitos (2, 3 ou 4 dígitos) |
| Granularidade do Valor de Conversão | Apenas Inteiro de 6 Bits (0 a 63) | Detalhado (0 a 63) + Genérico (low, medium, high) |
| Finalização Antecipada | Não Suportado | Suportado por Meio da API de Bloqueio de Janela (lockWindow: true) |
| Atribuição Web-to-App | Não Suportado | Suportado para Anúncios Web Atribuíveis no Safari |
Perguntas Frequentes (FAQ)
Um aplicativo pode receber valores de conversão detalhados na Janela 2 ou na Janela 3?
O que acontece se um aplicativo não bloquear uma janela de postback antecipadamente?
O SKAdNetwork 4.0 exige um prompt de autorização da Transparência de Rastreamento de Aplicativos (ATT)?
Resumo e Diretrizes de Decisão
O SKAdNetwork 4.0 estende a visibilidade de atribuição para 35 dias a partir do primeiro lançamento do aplicativo, introduz valores de conversão genéricos para fornecer medição de menor granularidade quando a divulgação detalhada não está disponível e permite que os desenvolvedores bloqueiem as janelas de medição para reduzir a latência de postback quando uma janela de conversão é finalizada antecipadamente. A implementação bem-sucedida requer um mapeamento cuidadoso do esquema de conversão em todas as três janelas e o alinhamento das chamadas de atualização do lado do cliente com marcos de negócios genuínos.
O roteamento de links profundos em nível de aplicativo pode operar em conjunto com as estruturas de atribuição com preservação de privacidade da Apple como uma camada separada de medição e integração. Para fluxos de trabalho de atribuição e roteamento de links profundos específicos de implementação, consulte a documentação do OpoInstall.
Materiais Relacionados
-
Conceitos: Atribuição de Múltiplas Janelas, Níveis de Dados de Postback, Identificadores de Origem Hierárquicos, Bloqueio de Janela, Valores Genéricos
-
Tecnologias: Apple SKAdNetwork, Apple AdAttributionKit, StoreKit Framework, OpoInstall Mobile SDK
-
Padrões: Especificação JSON IETF RFC 8259
-
APIs: API
updatePostbackConversionValuedo StoreKit, postbacks de validação de instalação do SKAdNetwork
Documentação Oficial
-
Documentação para Desenvolvedores da Apple sobre o SKAdNetwork
-
Documentação para Desenvolvedores da Apple sobre o AdAttributionKit
-
Documentação para Desenvolvedores da Apple sobre a Atualização de Valores de Conversão de Postback
-
Compreendendo a Interoperabilidade entre o AdAttributionKit e o SKAdNetwork
Share this article



