광고 수익 어트리뷰션 지원

문서

광고 구매 어트리뷰션 이해

광고 구매 어트리뷰션은 사용자를 앱으로 유도한 특정 캠페인에 광고 구매을 연결할 수 있도록 도와줍니다. 이를 통해 캠페인 비용, 인앱 구매, 광고 구매을 한 곳에서 모두 표시하여 광고 실적을 명확하게 파악할 수 있습니다. 또한 이 기능을 사용하면 광고 구매 데이터를 광고 네트워크에 다시 전송하여 광고 실적을 개선할 수 있습니다.

핵심 포인트:

  • 기능: 광고 구매 어트리뷰션은 모바일 앱 광고 구매을 앱 사용자를 생성한 마케팅 캠페인과 연결합니다. 이렇게 하면 각 캠페인에서 얻은 구매과 전체 광고 ROI에 미치는 영향을 확인할 수 있습니다.
  • 데이터 소스: 이 데이터는 일반적으로 미디에이션 플랫폼에서 제공되며, 사용자 수준 또는 노출 수준일 수 있습니다. Singular는 이 어트리뷰션 데이터를 가져오는 다양한 방법을 지원합니다.
  • 자세히 보기: 자세한 내용은 Singular 광고 구매 어트리뷰션에 대한 FAQ 및 문제 해결 문서를 확인하세요.

중요 참고 사항:

  1. 통화 코드: 세 글자로 구성된 ISO 4217 통화 코드(예: 미국 달러의 경우 'USD', 유로의 경우 'EUR', 인도 루피의 경우 'INR')를 사용하세요. 많은 중개 플랫폼이 "USD"를 사용하므로 사용 중인 플랫폼의 코드가 이와 일치하는지 확인하세요. 다른 통화를 사용하는 경우 그에 맞게 유효성 검사 코드를 업데이트하세요.
  2. 데이터 정확성: 매출 및 통화 데이터를 Singular로 전송하기 전에 항상 정확한지 확인하세요. 잘못된 데이터는 나중에 수정할 수 없으므로 정확한지 확인하는 것이 중요합니다.

광고 구매 어트리뷰션 구현하기

  1. SDK를 업데이트합니다: 최신 버전의 Singular SDK가 있는지 확인하세요.
  2. 코드 스니펫 추가: 미디에이션 플랫폼에 따라, Singular SDK 설정에 적합한 코드 스니펫을 추가하세요.

다음 단계를 따르면 광고 구매 어트리뷰션을 올바르게 설정하고 광고 데이터를 최대한 활용하는 데 도움이 됩니다.

AdMob
파트너 참고 사항
  • 이 기능은 애드몹 계정에서 활성화해야 합니다.

    애드몹 지원을 참조하세요.

  • 광고 형식('앱 열기', '배너', '전면 광고', '네이티브', '보상형' 등)을 로드할 때 광고에서 구매이 발생할 때마다 트리거되는 콜백 함수로 유료 이벤트 핸들러를 설정하세요. Google 모바일 광고 SDK는 노출 이벤트를 추적하고 광고에서 발생한 구매으로 이 핸들러를 호출합니다.

    이렇게 하려면 광고 형식의'로드' 함수를 유료 이벤트 핸들러를 포함하도록 수정합니다. 이 콜백 내에서 광고 구매 데이터를 관리하고, 유효성을 검사하고, Singular.adRevenue 함수를 사용하여 Singular로 전송합니다.

    예를 들어, '보상형 광고'가 성공적으로 로드되면 유료 이벤트 핸들러는 광고의 구매 정보(adValue)를 수신합니다. 이 함수에서 구매 데이터를 처리하여 Singular로 전송합니다.

    자세한 내용은 AdMob 설명서를 확인하세요.

    중요: AdMob SDK는 플랫폼에 따라 구매을 다르게 보고합니다. 예를 들어, 0.005달러의 광고 구매은 Unity 및 Android 플랫폼에서는 5000으로 반환되지만 iOS에서는 0.005달러로 반환됩니다. iOS의 경우 0.005를 Singular SDK로 직접 전송합니다. 다른 플랫폼에서는 광고 가치를 마이크로에서 달러로 변환한 후 Singular로 전송하세요.
SDK 구현을 위한 코드 베이스를 선택합니다:
SwiftObjective-CKotlinJavaFlutterCordovaReact NativeUnity
작동 방식
  • 구글 애드몹 모바일 광고 SDK(iOS)를 구현합니다: 시작 가이드를 참조하세요.
  • 애드몹 연동: AdMob에서 광고를 로드하고 광고 구매 이벤트를 처리하도록 setOnPaidEventListener를 설정합니다.
  • 구매 검증: 구매이 0보다 큰지 확인하는 검사를 추가하여 0 또는 음수 구매 값을 전송하지 못하도록 합니다.
  • 통화 유효성 검사: 데이터를 Singular로 보내기 전에 통화가 0이거나 비어 있지 않은지 확인합니다.
  • 유효하지 않은 데이터 로깅: 데이터가 유효성 검사에 실패하면 디버깅을 위해 로그 메시지를 인쇄하고 데이터를 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
파트너 노트
  • 앱러빈 노출 수준 사용자 구매 API를 사용하여 노출 수준 광고 구매 데이터를 공유합니다.
SDK 구현을 위한 코드 베이스를 선택합니다:
SwiftObjective-CKotlinJavaFlutterCordovaReact NativeUnity
작동 방식
  • AppLovin 노출 수준 사용자 구매 API(iOS)를 사용합니다: 시작 가이드를 참조하세요.
  • 앱러빈 연동: AppLovin MAX에서 보상형 광고를 로드하고 didReceive 함수를 사용하여 광고 구매 이벤트를 처리합니다.
  • 구매 검증: 구매이 0보다 큰지 확인하는 확인을 추가하여 0 또는 음수 구매 값을 전송하지 않도록 합니다.
  • 통화 유효성 검사: 아래 샘플에서는 통화가 'USD'로 하드 코딩되어 있습니다. Singular로 데이터를 보내기 전에 통화가 정확하고 0이거나 비어 있지 않은지 확인하세요.
  • 유효하지 않은 데이터 로깅: 데이터가 유효성 검사에 실패하면 디버깅을 위해 로그 메시지를 인쇄하고 데이터를 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)
파트너 노트
  • ILR(노출 수준 구매) SDK API는 아이언소스 SDK를 사용하여 아이언소스 광고 및 기타 미디에이티드 네트워크에 대한 노출 수준 데이터를 제공합니다.developers.is.com]에서 자세히 알아보기
  • 아이언소스에서 ARM SDK 포스트백 플래그가 켜져 있는지 확인합니다.
SDK 구현을 위한 코드 베이스를 선택합니다:
SwiftObjective-CKotlinJavaFlutterCordovaReact NativeUnity
작동 방식
  • 아이언소스 SDK를 사용하여 노출 수준 사용자 구매(iOS)을 얻습니다: 시작 가이드를 참조하세요.
  • 아이언소스 연동: 아이언소스에서 보상형 광고를 로드하고 impressionDataDidSucceed 함수를 사용하여 광고 구매 이벤트를 처리합니다.
  • 구매 검증: 구매이 0보다 큰지 확인하는 확인을 추가하여 0 또는 음수 구매 값을 전송하지 않도록 합니다.
  • 통화 유효성 검사: 아래 샘플에서는 통화가 'USD'로 하드 코딩되어 있습니다. Singular로 데이터를 보내기 전에 통화가 정확하고 0이거나 비어 있지 않은지 확인하세요.
  • 유효하지 않은 데이터 로깅: 데이터가 유효성 검사에 실패하면 디버깅을 위해 로그 메시지를 인쇄하고 데이터를 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
파트너 참고 사항
  • 인상 델리게이트설정
  • 트레이드플러스광고 노출 콜백에 Singular 추가하기
SDK 구현을 위한 코드 베이스를 선택합니다:
SwiftObjective-CKotlinJavaFlutterCordovaReact NativeUnity
작동 방식
  • 트레이드플러스 연동: 트레이드플러스에서 보상형 광고를 로드하고 트레이드플러스광고 노출 함수를 사용하여 광고 구매 이벤트를 처리합니다.
  • 구매 검증: 구매이 0보다 큰지 확인하는 검사를 추가하여 0 또는 음수 구매 값을 전송하지 않도록 합니다. 광고정보 사전에는 유효한 NSNumber 값을 가진"ecpm" 키가 포함되어 있습니다. 이 값을 더블로 변환하고 배율을적용합니다(일반적으로 ecpm은 밀리 단위로 제공되므로 1000.0으로 나누면 달러로 변환됩니다).
  • 통화 유효성 검사: 아래 샘플에서는 통화가 'USD'로 하드 코딩되어 있습니다. Singular로 데이터를 보내기 전에 통화가 정확하고 0이거나 비어 있지 않은지 확인하세요.
  • 유효하지 않은 데이터 로깅: 데이터가 유효성 검사에 실패하면 디버깅을 위해 로그 메시지를 인쇄하고 데이터를 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")
    }
}
기타(일반)
파트너 참고 사항
  • 일반 연동: SingularAdData 객체를 초기화하고 필요한 데이터를 전달합니다. 데이터에는 광고 플랫폼이 문자열로, 통화가 문자열로, 구매이 더블로 포함되어야 합니다.
  • 구매 보고: 구매 및 통화 데이터가 올바른지 확인한 후 Singular로 전송하세요. 잘못된 데이터는 나중에 수정할 수 없으므로 정확한지 확인하는 것이 중요합니다.
  • 팁: 디버깅을 위해 정보를 기록하세요.
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)")
}