Server-to-Server - Guia S2S para Apps Móveis

Visão geral

Este guia aborda os sinais de atribuição específicos para dispositivos móveis que se somam à mecânica S2S compartilhada: Apple Search Ads, install referrers do Google Play e da Meta, rastreamento de desinstalações e o recibo de instalação do iOS. Ele se aplica a integrações de apps iOS e Android que reportam sessões e eventos server-to-server.

Esses recursos pressupõem que você já tenha o fluxo de requisições S2S compartilhado implementado. Para os endpoints, a autenticação e os parâmetros comuns sobre os quais eles se baseiam, comece pelo hub de fundamentos e pelas duas referências de endpoint.

Antes de começar: Esses recursos se baseiam no fluxo de requisições S2S compartilhado. Consulte o hub de Fundamentos S2S para endpoints e parâmetros comuns, a referência do endpoint SESSION e a referência do endpoint EVENT .


Atribuição do Apple Search Ads

Integração do iOS Search Ads

O Apple Search Ads é uma Self-Attributing Network (SAN) que exige uma implementação de atribuição específica para a plataforma por meio dos frameworks da Apple.

Suporte a frameworks:

Implementação dupla: Implemente ambos os frameworks iAd e AdServices até que o iAd seja descontinuado. A Singular prioriza os sinais do AdServices em relação aos do iAd para atribuição e relatórios.

Guia completo: Documentação de integração do Apple Search Ads


Implementação do framework iAd

Recupere e envie os dados de atribuição do Apple Search Ads por meio do framework iAd para iOS 14.2 e anteriores.

Etapa 1: Recuperar os dados de atribuição

Objective-C
#import <iAd/iAd.h>

Class ADClientClass = NSClassFromString(@"ADClient");

if (ADClientClass) {
    id sharedClient = [ADClientClass performSelector:@selector(sharedClient)];

    if ([sharedClient respondsToSelector:@selector(requestAttributionDetailsWithBlock:)]) {
        [sharedClient requestAttributionDetailsWithBlock:^(NSDictionary *attributionDetails, NSError *error) {
            if (attributionDetails && attributionDetails.count > 0) {
                // REPORT attributionDetails FROM YOUR APP TO YOUR SERVER
            }
        }];
    }
}

Tratamento de latência: Usuários que clicam em Search Ads podem baixar e abrir o app imediatamente. Evite problemas de tempo na atribuição da seguinte forma:

  1. Defina um atraso de alguns segundos antes de recuperar os dados de atribuição
  2. Implemente lógica de repetição (retry) se a resposta for False ou houver um código de erro (0, 2, 3). Repita 2 segundos depois

Etapa 2: Enviar para a Singular

Reporte um evento com o nome reservado __iAd_Attribution__ por meio do endpoint EVENT , passando o JSON de atribuição como parâmetro e .

Requisitos de tempo:

  • iOS 13+: Envie o evento __iAd_Attribution__ imediatamente após a primeira sessão pós-instalação/reinstalação. Caso contrário, os dados do Apple Search Ads não serão considerados na atribuição
  • iOS 14+: As respostas de atribuição só estão disponíveis sob determinadas condições e ficam indisponíveis se o status do ATT for ATTrackingManager.AuthorizationStatus.denied

Implementação do framework AdServices

Recupere e envie o attribution token por meio do framework AdServices para iOS 14.3 e posteriores.

Etapa 1: Recuperar o attribution token

Objective-C
#import <AdServices/AdServices.h>

NSError *error = nil;
Class AAAttributionClass = NSClassFromString(@"AAAttribution");
if (AAAttributionClass) {
    NSString *attributionToken = [AAAttributionClass attributionTokenWithError:&error];
    if (!error && attributionToken) {
        // Handle attributionToken
    }
}

Características do token:

  • Gerado no dispositivo
  • Armazenado em cache por 5 minutos—um novo token é gerado após a expiração se attributionToken() for chamado
  • Válido por 24 horas

Etapa 2: Enviar para a Singular

Faça o URL-encode do token e o anexe ao endpoint SESSION como parâmetro attribution_token na primeira sessão após cada instalação e reinstalação.


Install Referrer do Google Play

Atribuição de instalação no Android

O Install Referrer do Google Play fornece a atribuição de instalação mais precisa no Android, contendo informações sobre a origem do usuário antes de chegar à Play Store.

Obrigatório para:

Mais informações: Documentação do Google Install Referrer

Etapas de implementação:

  1. Recupere o install referrer na primeira abertura do app usando a Play Install Referrer API
  2. Reporte a sessão por meio do endpoint SESSION incluindo o parâmetro JSON install_ref com os atributos obrigatórios

Atributos de install_ref:

Parâmetro Detalhes
referrer

Valor de referrer da Play Install Referrer API (objeto JSON—codifique como string)

referrer_source

Especifique "service"

clickTimestampSeconds

Timestamp do clique vindo da API (ex.: "1550420123")

installBeginTimestampSeconds

Horário de início da instalação vindo da API

current_device_time

Horário atual do dispositivo em milissegundos (ex.: "1550420454906")


Meta Install Referrer

Aprimoramento da atribuição do Facebook

A partir de 18 de junho de 2025: O Advanced Mobile Measurement (AMM) da Meta elimina a necessidade de implementar o Meta Install Referrer. Não é recomendado se o AMM estiver ativado.

O Meta Referrer é uma solução de medição específica para Android que fornece dados de atribuição granulares em nível de usuário para instalações de apps, combinando as tecnologias do Google Play Install Referrer e do Meta Install Referrer.

Saiba mais: FAQ do Meta Referrer

Etapas de implementação:

  1. Recupere o meta install referrer na primeira abertura do app conforme a documentação da Meta
  2. Reporte a sessão por meio do endpoint SESSION incluindo o parâmetro JSON meta_ref com os atributos obrigatórios

Atributos de meta_ref:

Parâmetro Detalhes
is_ct

is_ct do Meta Install Referrer (0 ou 1)

install_referrer

install_referrer do Meta Install Referrer

actual_timestamp

actual_timestamp do Meta Install Referrer (ex.: 1693978124)


Rastreamento de desinstalações

Configuração de notificações push silenciosas

Rastreie desinstalações usando notificações push silenciosas do dispositivo, enviando o push token com cada notificação de sessão.

Requisitos de configuração:

  1. Siga a configuração de rastreamento de desinstalações específica da plataforma:
  2. Anexe o token específico da plataforma à requisição SESSION:

Recibo de instalação do iOS

Validação do recibo

Passe o recibo de instalação do iOS no parâmetro install_receipt ao reportar uma sessão do iOS.

Swift
import Foundation
import StoreKit

class ReceiptManager {
    static func getInstallReceipt() -> String? {
        if #available(iOS 18.0, *) {
            let semaphore = DispatchSemaphore(value: 0)
            var result: String?

            Task {
                do {
                    let transaction = try await AppTransaction.shared
                    result = transaction.jwsRepresentation
                    semaphore.signal()
                } catch {
                    debugPrint("Failed to get app transaction: \(error.localizedDescription)")
                    semaphore.signal()
                }
            }

            semaphore.wait()
            return result

        } else {
            guard let receiptURL = Bundle.main.appStoreReceiptURL else {
                debugPrint("Receipt URL not found")
                return nil
            }

            do {
                let receiptData = try Data(contentsOf: receiptURL, options: .uncached)
                return receiptData.base64EncodedString(options: [])
            } catch {
                debugPrint("Failed to read receipt: \(error.localizedDescription)")
                return nil
            }
        }
    }
}