Server-to-Server - Guía de S2S para Apps Móviles

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:

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

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
            }
        }];
    }
}

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:

  1. Configurar un retraso de unos segundos antes de recuperar los datos de atribución
  2. 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

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 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:

Más información: Documentación del Install Referrer de Google

Pasos de implementación:

  1. Recupera el install referrer en la primera apertura de la app usando la Play Install Referrer API
  2. Reporta la sesión a través del endpoint SESSION incluyendo el parámetro JSON install_ref con 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:

  1. Recupera el install referrer de Meta en la primera apertura de la app según la documentación de Meta
  2. Reporta la sesión a través del endpoint SESSION incluyendo el parámetro JSON meta_ref con 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:

  1. Sigue la configuración de seguimiento de desinstalaciones específica de la plataforma:
  2. 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)

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.

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
            }
        }
    }
}