Descripción general
Esta guía cubre las señales de atribución específicas para móviles que se superponen a las mecánicas compartidas de S2S: Apple Search Ads, los install referrers de Google Play y Meta, el seguimiento de desinstalaciones y el recibo de instalación de iOS. Aplica a integraciones de apps iOS y Android que reportan sesiones y eventos server-to-server.
Estas funciones asumen que ya tienes implementado el flujo de solicitudes S2S compartido. Para los endpoints, la autenticación y los parámetros comunes sobre los que se construyen, comienza por el hub de fundamentos y las dos referencias de endpoints.
Antes de empezar: Estas funciones se construyen sobre el flujo de solicitudes S2S compartido. Consulta el hub de Fundamentos de S2S para los endpoints y parámetros comunes, la referencia del endpoint SESSION , y la referencia del endpoint EVENT .
Atribución de Apple Search Ads
Integración de Search Ads en iOS
Apple Search Ads es una Self-Attributing Network (SAN) que requiere una implementación de atribución específica de la plataforma mediante los frameworks de Apple.
Soporte de frameworks:
- iOS 14.2 y anteriores: framework iAd
- iOS 14.3 y posteriores: framework AdServices (recomendado)
Implementación dual: Implementa ambos frameworks, iAd y AdServices, hasta que iAd quede obsoleto. Singular prioriza las señales de AdServices sobre las de iAd para la atribución y los reportes.
Guía completa: Documentación de integración de Apple Search Ads
Implementación del framework iAd
Recupera y envía los datos de atribución de Apple Search Ads mediante el framework iAd para iOS 14.2 y anteriores.
Paso 1: Recuperar los datos de atribución
#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
}
}];
}
}
Manejo de latencia: Los usuarios que hacen clic en Search Ads pueden descargar y abrir la app de inmediato. Evita problemas de sincronización en la atribución mediante:
- Configurar un retraso de unos segundos antes de recuperar los datos de atribución
- Implementar lógica de reintento si la respuesta es False o hay un código de error (0, 2, 3). Reintenta 2 segundos después
Paso 2: Enviar a Singular
Reporta un evento con el nombre reservado
__iAd_Attribution__
a través del
endpoint EVENT
,
pasando el JSON de atribución como parámetro
e
.
Requisitos de sincronización:
-
iOS 13+: Envía el evento
__iAd_Attribution__inmediatamente después de la primera sesión posterior a la instalación/reinstalación. De lo contrario, los datos de Apple Search Ads no se consideran para la atribución -
iOS 14+: Las respuestas de atribución solo están disponibles
bajo ciertas condiciones
y no están disponibles si el estado de ATT es
ATTrackingManager.AuthorizationStatus.denied
Implementación del framework AdServices
Recupera y envía el token de atribución mediante el framework AdServices para iOS 14.3 y posteriores.
Paso 1: Recuperar el token de atribución
#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 del token:
- Se genera en el dispositivo
-
Se almacena en caché durante 5 minutos; se genera un nuevo token tras la expiración si se
llama a
attributionToken() - Válido durante 24 horas
Paso 2: Enviar a Singular
Codifica el token en URL y agrégalo al
endpoint SESSION
como parámetro
attribution_token
en la primera sesión después de cada
instalación y reinstalación.
Install Referrer de Google Play
Atribución de instalación en Android
El Install Referrer de Google Play proporciona la atribución de instalación más precisa en Android, ya que contiene información sobre el origen del usuario antes de llegar a la Play Store.
Requerido para:
- Datos de Facebook en User-Level Exports
- Compartir con Data Destinations
- Enviar postbacks
Más información: Documentación del Install Referrer de Google
Pasos de implementación:
- Recupera el install referrer en la primera apertura de la app usando la Play Install Referrer API
-
Reporta la sesión a través del
endpoint SESSION
incluyendo el parámetro JSON
install_refcon los atributos requeridos
Atributos de install_ref:
| Parámetro | Detalles |
|---|---|
referrer
|
Valor del referrer obtenido de la Play Install Referrer API (objeto JSON: codifícalo como cadena) |
referrer_source
|
Especifica "service" |
clickTimestampSeconds
|
Marca de tiempo del clic obtenida de la API (p. ej., "1550420123") |
installBeginTimestampSeconds
|
Hora de inicio de la instalación obtenida de la API |
current_device_time
|
Hora actual del dispositivo en milisegundos (p. ej., "1550420454906") |
Install Referrer de Meta
Mejora de la atribución de Facebook
A partir del 18 de junio de 2025: La Advanced Mobile Measurement (AMM) de Meta elimina la necesidad de implementar el Install Referrer de Meta. No se recomienda si AMM está habilitado.
El Referrer de Meta es una solución de medición específica de Android que proporciona datos de atribución granulares a nivel de usuario para las instalaciones de apps, combinando las tecnologías del Install Referrer de Google Play y del Install Referrer de Meta.
Más información: FAQ del Referrer de Meta
Pasos de implementación:
- Recupera el install referrer de Meta en la primera apertura de la app según la documentación de Meta
-
Reporta la sesión a través del
endpoint SESSION
incluyendo el parámetro JSON
meta_refcon los atributos requeridos
Atributos de meta_ref:
| Parámetro | Detalles |
|---|---|
is_ct
|
is_ct del Install Referrer de Meta (0 o 1) |
install_referrer
|
install_referrer del Install Referrer de Meta |
actual_timestamp
|
actual_timestamp del Install Referrer de Meta (p. ej., 1693978124) |
Seguimiento de desinstalaciones
Configuración de notificaciones push silenciosas
Realiza el seguimiento de las desinstalaciones mediante notificaciones push silenciosas del dispositivo, enviando el push token con cada notificación de sesión.
Requisitos de configuración:
- Sigue la configuración de seguimiento de desinstalaciones específica de la plataforma:
-
Agrega el token específico de la plataforma a la solicitud SESSION:
-
iOS:
apns_token(token de dispositivo APNs) -
Android:
fcm(token de dispositivo FCM)
-
iOS:
Recibo de instalación de iOS
Validación del recibo
Pasa el recibo de instalación de iOS en el parámetro
install_receipt
al reportar una sesión de iOS.
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
}
}
}
}