SDK para iOS - Seguimiento de ingresos publicitarios

Documento

Atribución de ingresos publicitarios

Realice un seguimiento de los ingresos publicitarios de las plataformas de mediación y atribúyalos a las campañas de marketing que adquirieron a sus usuarios, proporcionando una visibilidad completa del ROI a través de los costes de campaña, las compras dentro de la aplicación y la monetización de la publicidad.

Visión general

Qué es la atribución de ingresos publicitarios

Ad Revenue Attribution conecta los ingresos publicitarios de las aplicaciones móviles con las campañas de adquisición de usuarios que impulsaron las instalaciones de la aplicación, lo que le permite medir la verdadera rentabilidad de la campaña, incluida la monetización de la publicidad.

Ventajas clave:

  • Vista unificada del ROI: Vea los costes de campaña, los ingresos dentro de la aplicación y los ingresos publicitarios en un único panel de control.
  • Optimización de campañas: Envíe los datos de ingresos publicitarios a las redes publicitarias para mejorar las pujas y la segmentación.
  • Medición LTV: Calcule el valor total de la vida útil del usuario, incluida la monetización de la publicidad.

Fuentes de datos: Los datos de ingresos publicitarios normalmente provienen de su plataforma de mediación (por ejemplo, AdMob, AppLovin MAX, IronSource), ya sea a nivel de usuario o a nivel de impresión. Singular soporta múltiples métodos de integración para recibir estos datos.

Más información: Consulte las preguntas frecuentes sobre la atribución de ingresos publicitariospara obtener información detallada sobre la configuración, la generación de informes y la resolución de problemas.


Requisitos de implementación

Directrices críticas

La precisión de los datos es fundamental:

  1. Códigos de moneda: Utilice códigos de moneda ISO 4217 de tres letras (por ejemplo, USD, EUR, INR). Muchas plataformas de mediación informan en USD; verifique la divisa de su plataforma antes de la implementación.
  2. Validar antes de enviar: Valide siempre los datos de ingresos y divisas antes de llamar a Singular.adRevenue(). Los datos incorrectos no pueden corregirse después del envío.
  3. Diferencias entre plataformas: iOS recibe los ingresos directamente en unidades monetarias estándar (por ejemplo, 0,005 $), a diferencia de Android, que utiliza micros. Consulte siempre la documentación de su plataforma para conocer el formato correcto.

Pasos de configuración

Siga estos pasos para implementar la atribución de ingresos publicitarios:

  1. Actualice el SDK: Asegúrese de que está utilizando la última versión de Singular SDK.
  2. Seleccione Integración: Seleccione la integración de la plataforma de mediación que coincida con su configuración.
  3. Implemente retrollamadas: Añada escuchadores de eventos de pago específicos de la plataforma para capturar datos de ingresos
  4. Validar datos: Pruebe los informes de ingresos y verifique que los datos aparecen en el panel de Singular

Integraciones de plataformas

Integración con AdMob

Realice un seguimiento de los ingresos publicitarios de Google AdMob utilizando la escucha de eventos de pago para obtener informes de ingresos a nivel de impresión.

Requisitos:

Informes de ingresos por plataforma: AdMob informa de los ingresos de forma diferente según la plataforma. iOS devuelve los ingresos en unidades monetarias estándar (por ejemplo, 0,005 $ = 0,005). Envíe el valor directamente a Singular sin conversión.

Implementación

Establezca un controlador de eventos de pago al cargar los anuncios para capturar los datos de ingresos y enviarlos a Singular.

SwiftObjective-C
import Singular
import GoogleMobileAds

private let adUnitID = "AD_UNIT_ID"
var rewardedAd: GADRewardedAd?

func loadRewardedAd() {
    let request = GADRequest()
    
    GADRewardedAd.load(withAdUnitID: adUnitID, request: request) { [weak self] ad, error in
        guard let self = self else { return }
        
        if let error = error {
            print("Rewarded ad failed to load: \(error.localizedDescription)")
            return
        }
        
        self.rewardedAd = ad
        
        // Set paid event handler for revenue tracking
        self.rewardedAd?.paidEventHandler = { adValue in
            // Extract revenue and currency from AdValue
            let revenue = adValue.value.doubleValue
            let currency = adValue.currencyCode
            
            // Validate revenue and currency before sending
            guard revenue > 0, let currency = currency, !currency.isEmpty else {
                print("Invalid ad revenue data: revenue = \(revenue), currency = \(String(describing: currency))")
                return
            }
            
            // Create ad revenue data object
            let data = SingularAdData(
                adPlatform: "AdMob",
                currency: currency,
                revenue: revenue
            )
            
            // Send to Singular
            Singular.adRevenue(data)
            print("Ad revenue sent: \(revenue) \(currency)")
        }
    }
}

Integración de AppLovin MAX

Comparta los ingresos publicitarios a nivel de impresión utilizando la API de ingresos de usuario a nivel de impresión de AppLovin.

Requisitos:

Implementación

Gestione los mensajes de ingresos a través de la devolución de llamada de AppLovin Communicator.

SwiftObjective-C
import Singular
import AppLovinSDK

func didReceive(_ message: ALCMessage) {
    // Check for revenue events topic
    if message.topic == "max_revenue_events" {
        // Extract and validate revenue value
        guard let revenueValue = message.data["revenue"] as? Double,
              revenueValue > 0 else {
            print("Failed to parse valid revenue value or revenue is not greater than 0")
            return
        }
        
        // Create ad revenue data object
        let data = SingularAdData(
            adPlatform: "AppLovin",
            currency: "USD",  // AppLovin typically reports in USD
            revenue: revenueValue
        )
        
        // Send to Singular
        Singular.adRevenue(data)
        print("Ad revenue sent: \(revenueValue) USD")
    }
}

Integración de Unity LevelPlay (IronSource)

Realice un seguimiento de los ingresos a nivel de impresión desde IronSource y redes mediadas utilizando el SDK de IronSource.

Requisitos:

  • Implementar ironSource SDK (consulte la Guía de introducción)
  • Activar la bandera ARM SDK Postbacks en su panel IronSource
  • Configure la escucha de datos de impresión para recibir devoluciones de llamada de ingresos

Más información: Consulte la documentación sobre ingresos publicitarios deIronSource para obtener información detallada sobre la configuración.

Implementación

Implemente la devolución de llamada de éxito de datos de impresión para capturar y enviar ingresos.

SwiftObjective-C
import Singular
import IronSource

func impressionDataDidSucceed(_ impressionData: ISImpressionData?) {
    // Validate impression data
    guard let impressionData = impressionData else {
        print("No impression data available")
        return
    }
    
    // Extract and validate revenue
    let revenue = impressionData.revenue
    guard revenue > 0 else {
        print("Invalid revenue value: \(revenue)")
        return
    }
    
    // Create ad revenue data object
    let data = SingularAdData(
        adPlatform: "IronSource",
        currency: "USD",  // IronSource typically reports in USD
        revenue: revenue
    )
    
    // Send to Singular
    Singular.adRevenue(data)
    print("Ad revenue sent: \(revenue) USD")
}

Integración con TradPlus

Capture ingresos publicitarios de la mediación TradPlus utilizando el delegado de impresiones.

Requisitos:

  • Establecer el delegado de impresión a través de TradPlus.sharedInstance().impressionDelegate
  • Gestionar la devolución de llamada de tradPlusAdImpression para recibir datos de ingresos
  • Convertir eCPM de mili-unidades a moneda estándar (dividir por 1000)

Implementación

Registre un delegado de impresiones para realizar un seguimiento de todas las impresiones de anuncios y los ingresos.

SwiftObjective-C
import Singular
import TradPlusSDK

// Set up the delegate
TradPlus.sharedInstance().impressionDelegate = self

// Delegate method for handling ad impressions
func tradPlusAdImpression(_ adInfo: [String: Any]) {
    let currency = "USD"
    
    // Extract and validate eCPM value
    guard let ecpmValue = adInfo["ecpm"] as? NSNumber else {
        print("No eCPM data available in adInfo")
        return
    }
    
    // Convert eCPM from milli-units to dollars
    let revenue = ecpmValue.doubleValue / 1000.0
    
    // Validate revenue
    guard revenue > 0 else {
        print("Ad Revenue value out of expected range: \(revenue)")
        return
    }
    
    // Create ad revenue data object
    let data = SingularAdData(
        adPlatform: "TradPlus",
        currency: currency,
        revenue: revenue
    )
    
    // Send to Singular
    Singular.adRevenue(data)
    print("Ad revenue sent: \(revenue) \(currency)")
}

Integración genérica (otras plataformas)

Integre cualquier plataforma de mediación utilizando la interfaz genérica SingularAdData.

Requisitos:

  • Acceso a los datos de ingresos a nivel de impresión de su plataforma de mediación
  • Importe de los ingresos en unidades monetarias estándar
  • Código de moneda ISO 4217 (por ejemplo, USD, EUR, INR)

Precisión de los datos: Valide los datos de ingresos y divisas antes de enviarlos a Singular. Los datos incorrectos no pueden corregirse después del envío.

Implementación

Cree un objeto SingularAdData con el nombre de la plataforma, la divisa y los ingresos y, a continuación, llame a Singular.adRevenue().

SwiftObjective-C
import Singular

func reportAdRevenue(adPlatform: String, currency: String, revenue: Double) {
    // Validate revenue
    guard revenue > 0 else {
        print("Invalid revenue value: \(revenue)")
        return
    }
    
    // Validate currency
    guard !currency.isEmpty else {
        print("Invalid currency: \(currency)")
        return
    }
    
    // Create ad revenue data object
    let data = SingularAdData(
        adPlatform: adPlatform,
        currency: currency,
        revenue: revenue
    )
    
    // Send to Singular
    Singular.adRevenue(data)
    print("Revenue sent: \(revenue) \(currency) from \(adPlatform)")
}

// Example usage
reportAdRevenue(adPlatform: "MyMediationPlatform", currency: "USD", revenue: 0.05)

Pruebas y validación

Verificación de los informes de ingresos

Pruebe su implementación de ingresos publicitarios para asegurarse de que los datos fluyen correctamente a Singular.

  1. Compruebe los registros: Compruebe que los registros de devolución de llamada de ingresos aparecen con los valores y la moneda correctos.
  2. Pruebe los anuncios: Cargue y muestre anuncios de prueba para activar eventos de ingresos
  3. Verificación del panel de control: Confirme que los ingresos aparecen en el panel de Singular en un plazo de 24 horas
  4. Precisión de datos: Valide que las cantidades de ingresos coincidan con los informes de su plataforma de mediación

Resolución de problemas: Si los ingresos no aparecen en Singular, compruebe que

  • La atribución de ingresos publicitarios está activada en su cuenta de Singular.
  • Los valores de ingresos son superiores a 0
  • Los códigos de moneda son códigos ISO 4217 válidos
  • El nombre de la plataforma coincide con el formato esperado de Singular