SDK do iOS - Acompanhamento das receitas dos anúncios

Documento

Atribuição de receitas de anúncios

Acompanhe as receitas de anúncios das plataformas de mediação e atribua-as às campanhas de marketing que adquiriram os seus utilizadores, fornecendo uma visibilidade completa do ROI dos custos das campanhas, das compras na aplicação e da monetização da publicidade.

Visão geral

O que é a atribuição de receitas de anúncios

A atribuição de receitas de anúncios liga as receitas de publicidade de aplicações móveis às campanhas de aquisição de utilizadores que conduziram a instalações de aplicações, permitindo-lhe medir a verdadeira rentabilidade da campanha, incluindo a monetização de anúncios.

Principais benefícios:

  • Visão unificada do ROI: Veja os custos da campanha, a receita in-app e a receita de anúncios em um único painel
  • Otimização de campanhas: Envie os dados da receita de anúncios de volta às redes de anúncios para melhorar os lances e a segmentação
  • Medição de LTV: Calcular o valor total do tempo de vida do utilizador, incluindo a monetização da publicidade

Fontes de dados: Os dados de receita de anúncios geralmente vêm da sua plataforma de mediação (por exemplo, AdMob, AppLovin MAX, IronSource) no nível do usuário ou no nível da impressão. O Singular suporta vários métodos de integração para receber esses dados.

Saiba mais: Consulte as Perguntas frequentes sobre atribuição de receita de anúnciospara obter detalhes abrangentes sobre configuração, relatórios e solução de problemas.


Requisitos de implementação

Diretrizes críticas

A precisão dos dados é fundamental:

  1. Códigos de moeda: Use códigos de moeda ISO 4217 de três letras (por exemplo, USD, EUR, INR). Muitas plataformas de mediação reportam em USD - verifique a moeda da sua plataforma antes da implementação
  2. Validar antes de enviar: Valide sempre os dados da receita e da moeda antes de ligar para Singular.adRevenue(). Os dados incorrectos não podem ser corrigidos após o envio
  3. Diferenças de plataforma: o iOS recebe a receita diretamente em unidades monetárias padrão (por exemplo, $0,005), ao contrário do Android que utiliza micros. Verifique sempre a documentação da sua plataforma para obter o formato correto

Passos de configuração

Siga estas etapas para implementar a atribuição de receita de anúncios:

  1. Atualizar o SDK: Certifique-se de que está a utilizar a versão mais recente do Singular SDK
  2. Escolher integração: Selecione a integração da plataforma de mediação abaixo que corresponde à sua configuração
  3. Implementar retornos de chamada: Adicione ouvintes de eventos pagos específicos da plataforma para capturar dados de receita
  4. Validar dados: Teste os relatórios de receita e verifique se os dados aparecem no painel do Singular

Integrações de plataforma

Integração com a AdMob

Acompanhe a receita de anúncios do Google AdMob usando o ouvinte de eventos pagos para relatórios de receita no nível da impressão.

Requisitos:

Relatório de receita da plataforma: A AdMob informa a receita de forma diferente por plataforma. O iOS retorna a receita em unidades monetárias padrão (por exemplo, US$ 0,005 = 0,005). Envie o valor diretamente para o Singular sem conversão.

Implementação

Defina um manipulador de eventos pagos ao carregar anúncios para capturar dados de receita e enviá-los para o 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)")
        }
    }
}

Integração AppLovin MAX

Partilhe a receita de anúncios ao nível da impressão utilizando a API AppLovin Impression-Level User Revenue.

Requisitos:

Implementação

Tratar mensagens de receitas através do callback do 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")
    }
}

Integração do Unity LevelPlay (IronSource)

Acompanhe a receita em nível de impressão do ironSource e de redes mediadas usando o SDK do IronSource.

Requisitos:

  • Implementar o SDK do ironSource (consulte o Guia de Introdução)
  • Ativar o sinalizador ARM SDK Postbacks no painel do IronSource
  • Definir o ouvinte de dados de impressão para receber callbacks de receita

Saiba mais: Consulte a documentação sobre receita de anúncios do IronSourcepara obter detalhes completos sobre a configuração.

Implementação

Implemente o callback de sucesso dos dados de impressão para capturar e enviar a receita.

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

Integração com o TradPlus

Capture a receita de anúncios da mediação do TradPlus usando o delegado de impressão.

Requisitos:

  • Definir o delegado de impressões através de TradPlus.sharedInstance().impressionDelegate
  • Tratar a chamada de retorno tradPlusAdImpression para receber dados de receitas
  • Converter eCPM de miliunidades para moeda padrão (dividir por 1000)

Implementação

Registar um delegado de impressão para controlar todas as impressões de anúncios e receitas.

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

Integração genérica (outras plataformas)

Integrar qualquer plataforma de mediação utilizando a interface genérica SingularAdData.

Requisitos:

  • Acesso aos dados de receita no nível de impressão da sua plataforma de mediação
  • Valor da receita em unidades monetárias padrão
  • Código de moeda ISO 4217 (por exemplo, USD, EUR, INR)

Exatidão dos dados: Valide os dados de receita e moeda antes de enviar para a Singular. Dados incorretos não podem ser corrigidos após o envio.

Implementação

Crie um objeto SingularAdData com o nome da plataforma, a moeda e a receita e, em seguida, chame 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)

Teste e validação

Verificar relatórios de receita

Teste a implementação da receita de anúncios para garantir que os dados fluam corretamente para a Singular.

  1. Verifique os logs: Verifique se os logs de retorno de chamada de receita aparecem com os valores e a moeda corretos
  2. Testar anúncios: Carregue e exiba anúncios de teste para acionar eventos de receita
  3. Verificação do painel: Confirmar se a receita aparece no painel do Singular dentro de 24 horas
  4. Precisão dos dados: Validar se os valores da receita correspondem aos relatórios da plataforma de mediação

Solução de problemas: Se a receita não aparecer no Singular, verifique se:

  • A atribuição de receita de anúncios está activada na sua conta Singular
  • Os valores de receita são maiores que 0
  • Os códigos de moeda são códigos ISO 4217 válidos
  • O nome da plataforma corresponde ao formato esperado pela Singular