Apoyo a la atribución de ingresos publicitarios

Documento

Atribución de ingresos publicitarios

La atribución de ingresos por publicidad le ayuda a relacionar sus ingresos por publicidad con las campañas específicas que llevaron a los usuarios a su aplicación. Esto le ofrece una imagen clara del rendimiento de sus anuncios al mostrar el coste de la campaña, los ingresos dentro de la aplicación y los ingresos publicitarios, todo en un mismo lugar. Esta función también le permite enviar los datos de ingresos publicitarios a sus redes publicitarias para mejorar el rendimiento de sus anuncios.

Puntos clave:

  • Qué hace: Ad Revenue Attribution vincula los ingresos publicitarios de las aplicaciones móviles a las campañas de marketing que generaron usuarios para su aplicación. De este modo, puede ver cuánto ha ganado con cada campaña y cómo afecta a su ROI publicitario global.
  • Fuente de datos: Estos datos suelen proceder de su plataforma de mediación y pueden ser a nivel de usuario o a nivel de impresión. Singular admite diferentes formas de obtener estos datos de atribución.
  • Más información: Para obtener más detalles, consulte el artículo Preguntas frecuentes y solución de problemas sobre Singular Ad Revenue Attribution.

Notas importantes:

  1. Códigos de moneda: Utilice códigos de moneda ISO 4217 de tres letras (por ejemplo, "USD" para dólares estadounidenses, "EUR" para euros, "INR" para rupias indias). Muchas plataformas de mediación utilizan "USD", así que asegúrese de que su código coincide con éste si lo utiliza. Si utiliza una moneda distinta, actualice el código de validación en consecuencia.
  2. Exactitud de los datos: Compruebe siempre que sus datos de ingresos y divisas son correctos antes de enviarlos a Singular. Los datos incorrectos no se pueden corregir posteriormente, por lo que es crucial asegurarse de que son exactos.

Implementación de la atribución de ingresos publicitarios

  1. Actualice el SDK: Asegúrese de que dispone de la última versión del SDK de Singular.
  2. Añada fragmentos de código: Dependiendo de su plataforma de mediación, añada los fragmentos de código adecuados a la configuración de Singular SDK.

Seguir estos pasos le ayudará a configurar Ad Revenue Attribution correctamente y a sacar el máximo partido de sus datos publicitarios.

AdMob
Notas para socios
  • Esta función debe estar habilitada en su cuenta de AdMob.

    Consulte Soporte de AdMob.

  • Cuando cargue un formato de anuncio (como "App Open", "Banner", "Interstitial", "Native" o "Rewarded"), configure un paidEventHandler como función de devolución de llamada que se active cada vez que un anuncio genere ingresos. El SDK de Google Mobile Ads realiza un seguimiento de los eventos de impresión y llama a este controlador con los ingresos generados por el anuncio.

    Para ello, modifica la función"load" del formato del anuncio para incluir el paidEventHandler. Dentro de esta devolución de llamada, gestiona los datos de ingresos del anuncio, los valida y los envía a Singular mediante la función Singular.adRevenue.

    Por ejemplo, cuando un "anuncio recompensado" se carga correctamente, el paidEventHandler recibirá la información de ingresos del anuncio (adValue). En esta función, maneja los datos de ingresos y los envía a Singular.

    Para más detalles, consulte la documentación de AdMob.

    IMPORTANTE: El SDK de AdMob informa de los ingresos de forma diferente según la plataforma. Por ejemplo, los ingresos publicitarios de 0,005 $ se devolverán como 5000 en las plataformas Unity y Android, pero como 0,005 en iOS. Para iOS, envíe 0,005 directamente al SDK de Singular. En otras plataformas, convierta adValue de micros a dólares antes de enviarlo a Singular.
Seleccione la base de código para la implementación de su SDK:
SwiftObjective-CKotlinJavaFlutterCordovaReact NativeUnity
Cómo funciona:
  • Implemente el SDK de Google AdMob Mobile Ads (iOS): Consulte la Guía de introducción.
  • Integración con AdMob: Cargue el anuncio desde AdMob y configure un setOnPaidEventListener para gestionar los eventos de ingresos publicitarios.
  • Validación de ingresos: Añada una comprobación para asegurarse de que los ingresos son superiores a 0. De este modo se evita el envío de valores de ingresos nulos o negativos.
  • Validación de divisas: Asegúrese de que la divisa no sea nula o esté vacía antes de enviar los datos a Singular.
  • Registro de datos no válidos: Si los datos no superan la validación, imprima un mensaje de registro para depuración y no envíe los datos a Singular.
import Singular

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 with error: \(error.localizedDescription)")
            return
        }
        
        self.rewardedAd = ad
        self.rewardedAd?.paidEventHandler = { adValue in
            // Ensure valid revenue data
            let revenue = adValue.value
            let currency = adValue.currencyCode
            
            // Validate the revenue and currency before sending to Singular
            guard revenue > 0, let currency = currency, !currency.isEmpty else {
                print("Invalid ad revenue data: revenue = \(revenue), currency = \(String(describing: currency))")
                return
            }
            
            let data = SingularAdData(
                adPlatform: "Admob",
                currency: currency,
                revenue: revenue
            )
            
            // Send Ad Revenue data to Singular
            Singular.adRevenue(data: data)
            
            // Log the data for debugging
            print("Ad Revenue reported to Singular: \(data)")
        }
    }
}
AppLovinMax
Notas para socios
  • Comparta datos de ingresos publicitarios a nivel de impresiones mediante la API de ingresos de usuarios a nivel de impresiones de Applovin.
Seleccione la base de código para la implementación de su SDK:
SwiftObjective-CKotlinJavaFlutterCordovaReact NativeUnity
Cómo funciona:
  • Utiliza la API AppLovin Impression-Level User Revenue (iOS): Consulte la Guía de introducción.
  • Integración con AppLovin: Carga un anuncio recompensado de AppLovin MAX y utiliza la función didReceive para gestionar los eventos de ingresos publicitarios.
  • Validación de ingresos: Añada una comprobación para asegurarse de que los ingresos son superiores a 0. Esto evita el envío de valores de ingresos nulos o negativos.
  • Validación de moneda: En el ejemplo siguiente, la moneda está codificada en "USD". Asegúrese de que la moneda es correcta y no nula o vacía antes de enviar los datos a Singular.
  • Registro de datos no válidos: Si los datos no superan la validación, imprima un mensaje de registro para depuración y no envíe los datos a Singular.
import Singular

func didReceive(_ message: ALCMessage) { if "max_revenue_events" == message.topic { // Safely unwrap values from the message data guard let revenueValue = message.data["revenue"] as? Double, revenueValue > 0 else { print("Failed to parse valid revenue value from message data or revenue is not greater than 0") return } let data = SingularAdData( adPlatform: "AppLovin", currency: "USD", // Update this if a different currency is needed revenue: revenueValue ) // Send the revenue data to Singular Singular.adRevenue(data) } }
Unity LevelPlay (IronSource)
Notas del socio
  • La API del SDK de Impression Level Revenue (ILR) proporciona datos de nivel de impresión para ironSource Ads y otras redes mediadas, utilizando el SDK de ironSource. Más información en[developers.is.com]
  • Asegúrese de que la bandera ARM SDK Postbacks en IronSource está activada
Seleccione la base de código para la implementación de su SDK:
SwiftObjective-CKotlinJavaFlutterCordovaReact NativeUnity
Cómo funciona:
  • Utiliza el SDK ironSource para obtener ingresos de usuario a nivel de impresión (iOS): Consulte la Guía de introducción.
  • Integración con Ironsource: Carga un anuncio recompensado desde Ironsource y utiliza la función impressionDataDidSucceed para gestionar los eventos de Ad Revenue.
  • Validación de ingresos: Añada una comprobación para asegurarse de que los ingresos son superiores a 0. Esto evita el envío de valores de ingresos nulos o negativos.
  • Validación de moneda: En el ejemplo siguiente, la divisa está codificada en "USD". Asegúrese de que la moneda es correcta y no nula o vacía antes de enviar los datos a Singular.
  • Registro de datos no válidos: Si los datos no superan la validación, imprima un mensaje de registro para depuración y no envíe los datos a Singular.
import Singular

class IronSourceRewardedAdViewController: UIViewController {

    func impressionDataDidSucceed(impressionData: ISImpressionData?) {
        logCallback(#function)

        // Ensure impressionData is not nil
        guard let impressionData = impressionData else {
            print("No impression data available.")
            return
        }

        // Ensure revenue value is valid
        let revenue = impressionData.revenue
        guard revenue > 0 else {
            print("Invalid revenue value: \(revenue)")
            return
        }

        // Create SingularAdData object with appropriate values
        let data = SingularAdData(
            adPlatform: "IronSource",
            currency: "USD",
            revenue: revenue
        )

        // Send the Ad Revenue data to Singular
        Singular.adRevenue(data)

        // Log the data for debugging
        print("Ad Revenue reported to Singular: AdPlatform: \(data.adPlatform), Currency: \(data.currency), Revenue: \(data.revenue)")
    }

    private func logCallback(_ functionName: String) {
        // Implement logging if needed
        print("Function called: \(functionName)")
    }
}
TradPlus
Notas del socio
  • Establezca el impressionDelegate
  • Añada Singular a la devolución de llamada TradPlusAdImpression
Seleccione la base de código para la implementación de su SDK:
SwiftObjective-CKotlinJavaFlutterCordovaReact NativeUnity
Cómo funciona:
  • Integración con TradPlus: Cargue un anuncio recompensado desde TradPlus y utilice la función tradPlusAdImpression para gestionar los eventos de ingresos por anuncios.
  • Validación de ingresos: Añada una comprobación para asegurarse de que los ingresos son superiores a 0. Esto evita el envío de valores de ingresos nulos o negativos. El diccionario adInfo contiene una clave"ecpm" con un valor NSNumber válido. Convierte este valor a Double y lo escala(normalmente ecpm se da en mili-unidades, por lo que dividiendo por 1000.0 lo convierte a dólares).
  • Validación de moneda: En el ejemplo de abajo, la moneda está codificada en "USD". Asegúrese de que la moneda es correcta y no nula o vacía antes de enviar los datos a Singular.
  • Registro de datos no válidos: Si los datos no superan la validación, imprima un mensaje de registro para depuración y no envíe los datos a Singular.
import Singular

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

// Delegate method for handling ad impressions
func tradPlusAdImpression(_ adInfo: [String: Any]) {
    let currency = "USD" // Assuming USD, adjust if necessary

    // Ensure adInfo contains the necessary key and its value is valid
    if let ecpmValue = adInfo["ecpm"] as? NSNumber {
        let revenue = ecpmValue.doubleValue / 1000.0
        
        // Validate the revenue value
        guard revenue > 0 else {
            print("Ad Revenue value out of expected range: \(revenue)")
            return
        }

        // Create SingularAdData object with required fields
        let data = SingularAdData(
            adPlatform: "TradPlus",
            currency: currency,
            revenue: revenue
        )

        // Send the Ad Revenue data to Singular
        Singular.adRevenue(data)

        print("Ad Revenue reported to Singular: \(data)")
    } else {
        // Log the issue for debugging
        print("No eCPM data available in adInfo")
    }
}
Otros (Genérico)
Notas del socio
  • Integración genérica: Inicialice un objeto SingularAdData y pásele los datos necesarios. Los datos deben incluir la adPlatform como cadena, la divisa como cadena y los ingresos como doble.
  • Informes de ingresos: Compruebe que los datos de ingresos y divisa son correctos antes de enviarlos a Singular. Los datos incorrectos NO se pueden corregir más tarde, por lo que es crucial asegurarse de que son exactos.
  • Consejo: Registre la información con fines de depuración.
Seleccione la base de código para la implementación de su SDK:
SwiftObjective-CKotlinJavaFlutterCordovaReact NativeUnity
import Singular

// Function to send Ad Revenue data to Singular
func reportAdRevenue(adPlatform: String, currency: String, revenue: Double) {
    // Validate the revenue value
    guard revenue > 0 else {
        print("Invalid revenue value: \(revenue)")
        return
    }
    
    // Create a SingularAdData object with the provided fields
    let data = SingularAdData(
        adPlatform: adPlatform,
        currency: currency,
        revenue: revenue
    )
    
    // Send the Ad Revenue data to Singular
    Singular.adRevenue(data)
    
    // Log the data for debugging
    print("Ad Revenue reported to Singular: AdPlatform: \(data.adPlatform), Currency: \(data.currency), Revenue: \(data.revenue)")
}