Android 배너 광고

배너 광고 노출하기

AdropBanner 를 광고 유닛 ID와 함께 초기화해주세요. 그 다음 onAdReceived 콜백 시 원하는 영역에 광고를 로드하세요.

로컬 환경에서 배너 노출을 확인하고 싶다면, 하단의 TEST_UNIT_ID를 사용해주세요. 자세한 예시는 여기서 확인하실 수 있습니다. 테스트 유닛 아이디는 프로덕션 배포시 반드시 실제 광고 유닛으로 교체해 주셔야 합니다.

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"
    }
}
  • 레이아웃에 배너 영역 추가

<!-- 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()
    }
}

유의사항

  1. 메모리 관리

    • Activity 종료 시 반드시 banner?.destroy() 호출

    • 새 배너 로드 전 기존 배너 정리 필수

    • 프로덕션에서는 메모리 누수 방지를 위해 적절한 생명주기 관리 구현

  2. 광고 로드 타이밍

    • 네트워크 상태 확인 후 광고 로드

    • 사용자가 실제로 볼 수 있는 시점에 로드

    • 백그라운드에서의 불필요한 광고 로드 방지

  3. 에러 처리

    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")
          }
      }
    }
    
  4. 필수 권한 설정

    <!-- AndroidManifest.xml -->
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
  5. SDK 초기화 확인

    // Application 클래스 또는 MainActivity에서
    Adrop.initialize(application, false, arrayOf())

적용 확인하기

console에서 발급받은 unitId가 한 번이라도 광고요청을 할 경우 성공적으로 연결됩니다.

광고 유닛에 연결된 광고가 없다면, 배너가 랜더링 되지 않습니다. 따라서 배너가 정상적으로 랜더링 되는지 확인하고 싶으면, TEST_UNIT_ID 를 사용해 주세요.

TEST_UNIT_ID 를 사용하면 배너 랜더링 확인은 할 수 있지만, console과 연결되지는 않습니다. 따라서 성공적인 연결을 확인하려면 콘솔에 등록한 광고 유닛의 아이디를 적용해 주시고, 하단 이미지 처럼 콘솔을 확인해 주세요.

Last updated