Interstitial Ad
1. 기본 요건
ADX Android SDK를 프로젝트에 추가합니다.
Interstitial Ad용으로 발급받은 Ad Unit ID를 사용합니다.
광고를 요청하기 전에 SDK 초기화를 먼저 진행합니다.
SDK 초기화는 앱 실행 시 한 번만 호출하여 주시고, 광고 요청은 초기화가 완료된 후에 이뤄져야 합니다.
2. 구현
InterstitialAd
를 인스턴스화하고InterstitialListener
를 추가합니다.loadAd()
를 호출하여 광고를 로드합니다.광고 로드가 완료되어
onAdLoaded()
callback을 받은 후show()
를 하거나,isLoaded()
로 표시할 광고가 있는지 확인 후,show()
로 광고를 표시합니다.노출 종료 시
onDestroy()
에서InterstitialAd
의destroy()
를 호출하여InterstitialAd
를 제거합니다.
public class InterstitialActivity extends AppCompatActivity {
private com.adxcorp.ads.InterstitialAd interstitialAd;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
interstitialAd = new InterstitialAd(this, "<INTERSTITIAL_AD_UNIT_ID>");
interstitialAd.setInterstitialListener(new InterstitialAd.InterstitialListener() {
@Override
public void onAdLoaded() {
}
@Override
public void onAdError(int errorCode) {
}
@Override
public void onAdClicked() {
}
@Override
public void onAdImpression() {
}
@Override
public void onAdClosed() {
}
@Override
public void onAdFailedToShow() {
}
});
interstitialAd.loadAd();
}
void show() {
if (interstitialAd != null && interstitialAd.isLoaded()) {
interstitialAd.show();
}
}
@Override
protected void onDestroy() {
super.onDestroy();
if (interstitialAd != null) {
interstitialAd.destroy();
interstitialAd = null;
}
}
}
class InterstitialActivity : AppCompatActivity() {
private var interstitialAd: InterstitialAd? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_fullscreen)
interstitialAd = InterstitialAd(this, "<INTERSTITIAL_AD_UNIT_ID>"))
interstitialAd?.setInterstitialListener(object : InterstitialAd.InterstitialListener {
override fun onAdLoaded() {
}
override fun onAdError(errorCode: Int) {
}
override fun onAdClicked() {
}
override fun onAdImpression() {
}
override fun onAdClosed() {
}
override fun onAdFailedToShow() {
}
})
interstitialAd?.loadAd()
}
fun show() {
if (interstitialAd?.isLoaded == true) {
interstitialAd!!.show()
}
}
override fun onDestroy() {
super.onDestroy()
interstitialAd?.destroy()
interstitialAd = null
}
}
3. Callback
InterstitialAd
의 InterstitialListener
를 설정하여 특정 이벤트를 수신할 수 있습니다. 필요에 따라 구현해주세요.
interstitialAd.setInterstitialListener(new InterstitialAd.InterstitialListener() {
@Override
public void onAdLoaded() {
}
@Override
public void onAdError(int errorCode) {
}
@Override
public void onAdClicked() {
}
@Override
public void onAdImpression() {
}
@Override
public void onAdClosed() {
}
@Override
public void onAdFailedToShow() {
}
});
interstitialAd?.setInterstitialListener(object : InterstitialAd.InterstitialListener {
override fun onAdLoaded() {
}
override fun onAdError(errorCode: Int) {
}
override fun onAdClicked() {
}
override fun onAdImpression() {
}
override fun onAdClosed() {
}
override fun onAdFailedToShow() {
}
})
4. Ad Revenue (OnPaidEvent)
광고 노출이 발생동안 예상되는 광고 수익을 받아볼 수 있습니다.
이는 미디에이션 설정 과정에서 수동적으로 설정한 값과 정확한 값이 섞여 있어서 예상 값으로 사용하시는 것을 권장드립니다.
ecpm의 currency는 USD입니다.
아래와 같이
OnPaidEvent
콜백을 등록하여 사용하시면 됩니다.AdJust의 광고 매출 데이터 연동을 지원합니다. 상세한 내용은 AdJust의 AD(X) SDK 연동 가이드를 확인 부탁드립니다.
interstitialAd.setOnPaidEventListener(new OnPaidEventListener() {
@Override
public void onPaidEvent(double ecpm) {
/* Firebase Analytics 샘플
double revenue = ecpm / 1000;
mFirebaseAnalytics = FirebaseAnalytics.getInstance(this);
Bundle params = new Bundle();
params.putString(FirebaseAnalytics.Param.AD_PLATFORM, "AD(X)");
params.putString(FirebaseAnalytics.Param.AD_FORMAT, "InterstitialAd");
params.putString(FirebaseAnalytics.Param.AD_UNIT_NAME, "ADX Interstitial Ad");
params.putDouble(FirebaseAnalytics.Param.VALUE, revenue);
params.putString(FirebaseAnalytics.Param.CURRENCY, "USD");
mFirebaseAnalytics.logEvent(FirebaseAnalytics.Event.AD_IMPRESSION, params);
*/
/* AppsFlyer 샘플
double revenue = ecpm / 1000;
Map<String, String> customParams = new HashMap<>();
customParams.put(Scheme.AD_TYPE, "InterstitialAd");
customParams.put("ad_unit_name", "ADX Interstitial Ad");
AppsFlyerAdRevenue.logAdRevenue(
"AD(X)",
MediationNetwork.customMediation,
Currency.getInstance(Locale.US),
revenue,
customParams
);
*/
}
});
interstitialAd.setOnPaidEventListener(object : OnPaidEventListener() {
fun onPaidEvent(ecpm: Double) {
/* Firebase Analytics 샘플
val revenue: Double = ecpm / 1000
firebaseAnalytics = Firebase.analytics
firebaseAnalytics.logEvent(FirebaseAnalytics.Event.AD_IMPRESSION) {
param(FirebaseAnalytics.Param.AD_PLATFORM, "AD(X)")
param(FirebaseAnalytics.Param.AD_UNIT_NAME, "ADX Interstitial Ad")
param(FirebaseAnalytics.Param.AD_FORMAT, "InterstitialAd")
param(FirebaseAnalytics.Param.VALUE, revenue)
param(FirebaseAnalytics.Param.CURRENCY, "USD")
}
*/
/* AppsFlyer 샘플
val revenue: Double = ecpm / 1000
val customParams: MutableMap<String, String> = HashMap()
customParams[Scheme.AD_TYPE] = "IntersitialAd"
customParams["ad_unit_name"] = "ADX Interstitial Ad"
AppsFlyerAdRevenue.logAdRevenue(
"AD(X)",
MediationNetwork.customMediation,
Currency.getInstance(Locale.US),
revenue,
customParams
)
*/
}
})
Last updated