Android 배너 광고
배너 광고 노출하기
AdropBanner 를 광고 유닛 ID와 함께 초기화해주세요.
그 다음 onAdReceived 콜백 시 원하는 영역에 광고를 로드하세요.
Banner (375X80)
PUBLIC_TEST_UNIT_ID_375_80
Banner (320X50)
PUBLIC_TEST_UNIT_ID_320_50
Banner (320X100)
PUBLIC_TEST_UNIT_ID_320_100
Banner(캐러셀)
PUBLIC_TEST_UNIT_ID_CAROUSEL
Banner Video (16:9)
PUBLIC_TEST_UNIT_ID_BANNER_VIDEO_16_9
Banner Video (9:16)
PUBLIC_TEST_UNIT_ID_BANNER_VIDEO_9_16
Banner Example 구현 예시
필요한 파라미터 정의
class AdropUnitId {
companion object {
// 배너 이미지 광고 유닛 ID (실제 발급받은 ID로 교체)
val BANNER_IMAGE_320_50 = "YOUR_BANNER_UNIT_ID"
val BANNER_IMAGE_375_80 = "YOUR_BANNER_UNIT_ID"
// 배너 동영상 광고 유닛 ID (실제 발급받은 ID로 교체)
val BANNER_VIDEO_16_9 = "YOUR_BANNER_UNIT_ID"
val BANNER_VIDEO_9_16 = "YOUR_BANNER_UNIT_ID"
}
}public class AdropUnitId {
// 배너 이미지 광고 유닛 ID (실제 발급받은 ID로 교체)
public static final String BANNER_IMAGE_320_50 = "YOUR_BANNER_UNIT_ID";
public static final String BANNER_IMAGE_375_80 = "YOUR_BANNER_UNIT_ID";
// 배너 동영상 광고 유닛 ID (실제 발급받은 ID로 교체)
public static final String BANNER_VIDEO_16_9 = "YOUR_BANNER_UNIT_ID";
public static final String BANNER_VIDEO_9_16 = "YOUR_BANNER_UNIT_ID";
}레이아웃에 배너 영역 추가
<!-- activity_main.xml -->
<FrameLayout
android:id="@+id/banner_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
/>Activity에서 배너 광고 구현
import io.adrop.ads.banner.AdropBanner
import io.adrop.ads.banner.AdropBannerListener
import io.adrop.ads.model.AdropErrorCode
class MainActivity : AppCompatActivity() {
private lateinit var bannerContainer: FrameLayout
private var currentBanner: AdropBanner? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
bannerContainer = findViewById(R.id.banner_container)
// 배너 광고 로드
loadBannerAd()
}
private fun loadBannerAd() {
// 기존 배너 정리
clearCurrentBanner()
// 새 배너 생성 및 로드 (contextId 포함)
currentBanner = AdropBanner(
this,
AdropUnitId.BANNER_VIDEO_16_9,
AdropUnitId.CONTEXT_ID // 타겟팅용 컨텍스트 ID
).apply {
listener = bannerListener
load()
}
}
private fun clearCurrentBanner() {
currentBanner?.destroy()
currentBanner = null
bannerContainer.removeAllViews()
}
private val bannerListener = object : AdropBannerListener {
override fun onAdReceived(banner: AdropBanner) {
Log.d("AdropBanner", "광고 로드 성공: ${banner.getUnitId()}")
Log.d("AdropBanner", "광고 크리에이티브 크기: ${banner.creativeSize.width}x${banner.creativeSize.height}")
bannerContainer.removeAllViews()
bannerContainer.addView(banner)
}
override fun onAdFailedToReceive(banner: AdropBanner, errorCode: AdropErrorCode) {
Log.e("AdropBanner", "광고 로드 실패: $errorCode")
// 에러 처리 로직 추가
}
override fun onAdClicked(banner: AdropBanner) {
Log.d("AdropBanner", "광고 클릭됨")
}
override fun onAdImpression(banner: AdropBanner) {
Log.d("AdropBanner", "광고 노출됨")
}
}
override fun onDestroy() {
super.onDestroy()
clearCurrentBanner()
}
}import android.os.Bundle;
import android.util.Log;
import android.widget.FrameLayout;
import androidx.appcompat.app.AppCompatActivity;
import io.adrop.ads.banner.AdropBanner;
import io.adrop.ads.banner.AdropBannerListener;
import io.adrop.ads.model.AdropErrorCode;
public class MainActivity extends AppCompatActivity {
private FrameLayout bannerContainer;
private AdropBanner currentBanner;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
bannerContainer = findViewById(R.id.banner_container);
// 배너 광고 로드
loadBannerAd();
}
private void loadBannerAd() {
// 기존 배너 정리
clearCurrentBanner();
// 새 배너 생성 및 로드 (contextId 포함)
currentBanner = new AdropBanner(
this,
AdropUnitId.BANNER_VIDEO_16_9,
AdropUnitId.CONTEXT_ID // 타겟팅용 컨텍스트 ID
);
currentBanner.setListener(bannerListener);
currentBanner.load();
}
private void clearCurrentBanner() {
if (currentBanner != null) {
currentBanner.destroy();
currentBanner = null;
}
bannerContainer.removeAllViews();
}
private AdropBannerListener bannerListener = new AdropBannerListener() {
@Override
public void onAdReceived(AdropBanner banner) {
Log.d("AdropBanner", "광고 로드 성공: " + banner.getUnitId());
Log.d("AdropBanner", "광고 크리에이티브 크기: " +
banner.getCreativeSize().getWidth() + "x" + banner.getCreativeSize().getHeight());
bannerContainer.removeAllViews();
bannerContainer.addView(banner);
}
@Override
public void onAdFailedToReceive(AdropBanner banner, AdropErrorCode errorCode) {
Log.e("AdropBanner", "광고 로드 실패: " + errorCode);
// 에러 처리 로직 추가
}
@Override
public void onAdClicked(AdropBanner banner) {
Log.d("AdropBanner", "광고 클릭됨");
}
@Override
public void onAdImpression(AdropBanner banner) {
Log.d("AdropBanner", "광고 노출됨");
}
};
@Override
protected void onDestroy() {
super.onDestroy();
clearCurrentBanner();
}
}유의사항
메모리 관리
Activity 종료 시 반드시 banner?.destroy() 호출
새 배너 로드 전 기존 배너 정리 필수
프로덕션에서는 메모리 누수 방지를 위해 적절한 생명주기 관리 구현
광고 로드 타이밍
네트워크 상태 확인 후 광고 로드
사용자가 실제로 볼 수 있는 시점에 로드
백그라운드에서의 불필요한 광고 로드 방지
에러 처리
override fun onAdFailedToReceive(banner: AdropBanner, errorCode: AdropErrorCode) { when (errorCode) { AdropErrorCode.ERROR_CODE_AD_NO_FILL -> { Log.i("AdropBanner", "현재 노출 가능한 광고가 없습니다") // 대체 컨텐츠 표시 로직 } AdropErrorCode.ERROR_CODE_NETWORK -> { Log.w("AdropBanner", "네트워크 오류로 광고 로드 실패") // 재시도 로직 구현 } AdropErrorCode.ERROR_CODE_INITIALIZE -> { Log.e("AdropBanner", "SDK 초기화 오류") } AdropErrorCode.ERROR_CODE_INVALID_UNIT -> { Log.e("AdropBanner", "잘못된 광고 유닛 ID") } else -> { Log.e("AdropBanner", "광고 로드 실패: $errorCode") } } }필수 권한 설정
<!-- AndroidManifest.xml --> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />SDK 초기화 확인
// Application 클래스 또는 MainActivity에서 Adrop.initialize(application, false, arrayOf())
적용 확인하기
console에서 발급받은 unitId가 한 번이라도 광고요청을 할 경우 성공적으로 연결됩니다.
Last updated