임프레션별 수익 연동

Before you start

이 문서에서 설명된 바와 같이, 아이언소스 SDK 7.0.3 이상 버전이 정상적으로 연동이 되었는지 확인해 주세요.
SDK를 통한 임프레션별 수익 기능과 사전 준비 사항에 대한 세부사항을 확인하세요.

ImpressionData 리스너 구현하기

아이언소스 SDK는 송출된 광고에 대한 정보를 전달하기 위해 포스트백들을 발송합니다. ImpressionData 리스너는 광고 노출 데이터를 수신하기 위해 선택적으로 구현할 수 있는 리스너 입니다. 이 리스너는 모든 광고 유닛에 대한 정보를 제공하고, 이 광고 수익 측정 기능을 통해 다양한 광고를 식별할 수 있습니다.

ImpressionData 리스너를 앱에 추가하려면, 데이터 손실을 피하기 위해 반드시 아이언소스 SDK 초기화 이전에 리스너를 구현 및 등록해 주세요.

IronSource.addImpressionDataListener(mImpressionDataListener)

아이언소스 SDK는 광고 노출 데이터와 관련된 포스트백이 성공할 경우 리스너를 통해 이 사항을 전달합니다. 이 때 호출되는 onImpressionSuccess 메서드는 아래와 같이 정의됩니다:

public static void addImpressionDataListener(ImpressionDataListener listener){
 
   /**
   Invoked when the ad was displayed successfully and the impression data was recorded 
   **/
  
}

ImpressionData 리스너 제거하기

ImpressionData 리스너를 앱에서 제거하려면, removeImpressionData API를 사용하면 됩니다:

IronSource.removeImpressionDataListener(mImpressionDataListener);

아이언소스 SDK 7.1.0 부터 setImpressionDataListener API는 더 이상 지원되지 않으며 addImpressionDataListener API로 교체되었습니다.

임프레션별 수익 데이터 연동

ImpressionDataListener를 구현하면, 광고 노출 데이터의 사용과 데이터를 자체 BI(Business Intelligence) 도구 및 DWH(Data Warehouse)로의 전송 또는 서드파티 도구와 연동할 수 있게 됩니다.

Important! 반환된 데이터는 null 값을 포함할 수 있습니다. 크래시 방지를 위해, 데이터 할당 전에 반드시 보호수단을 추가해 주세요.

편리한 사용을 위해 각 필드를 별도로 참조하는 기능 및 모든 정보를 allData 메서드를 사용해 한 번에 가져올 수 있는 기능이 모두 제공됩니다:

public void onImpressionSuccess (ImpressionData impressionData)
{
  Double  revenue = impressionData.getRevenue();
  String  adNetwork = impressionData.getAdNetwork();
  JSONObject allData =  impressionData.getAllData(); 
}

필드 설명 및 타입을 포함한 사용 가능한 임프레션별 수익 데이터의 전체 리스트는 여기를 참조하세요.

아래의 예제는 SDK의 임프레션별 수익 API 데이터를 어떻게 Firebase용 구글 애널리틱스와 연동하는지 보여주는 예제입니다. 그대로 사용하거나, 서드 파티 리포트 도구나 전용 최적화 도구 또는 데이터베이스와 연동하기 위해 필요한 변경사항을 적용하여 사용할 수 있습니다.

/** 
Invoked when the ad was displayed successfully and the impression data was recorded 
**/ 
@Override 
public void onImpressionSuccess(ImpressionData impressionData) { 
 // The onImpressionSuccess will be reported when the rewarded video and interstitial ad is opened. 
 // For banners, the impression is reported on load success.  Log.d(TAG, "onImpressionSuccess" + impressionData); 
	if (impressionData != null) 
	{ 
		 Bundle bundle = new Bundle(); 
		 bundle.putString(FirebaseAnalytics.Param.AD_PLATFORM, "ironSource");  
		 bundle.putString(FirebaseAnalytics.Param.AD_SOURCE,impressionData.adNetwork());  
		 bundle.putString(FirebaseAnalytics.Param.AD_FORMAT, impressionData.getAdUnit());  	
		 bundle.putString(FirebaseAnalytics.Param.AD_UNIT_NAME, impressionData.getInstanceName());
		 bundle.putString(FirebaseAnalytics.Param.CURRENCY, "USD");  
		 bundle.putDouble(FirebaseAnalytics.Param.VALUE, impressionData.getRevenue());  
		 
		 mFirebaseAnalytics.logEvent(FirebaseAnalytics.Event.AD_IMPRESSION, bundle);  
	
	} 
}

Important! 내부 파라미터들이 null이 아닌지 반드시 확인해 주세요.