Android 팝업 광고

팝업 지면은 전면광고와 유사하게 앱을 완전히 덮으면서 노출됩니다. 팝업 지면은 위치에 따라 하단, 중앙 두가지 타입의 UI를 제공하고 있어 원하는 기획에 맞게 선택하여 연동할 수 있습니다.

Adrop 콘솔에서 광고 유닛 생성 할 때 타입을 선택할 수 있어요.

팝업 광고 노출하기

로컬 환경에서 배너 노출을 확인하고 싶다면, 아래의 TEST_UNIT_ID를 사용해주세요.

자세한 예시는 Github에서 확인하실 수 있습니다.

Ad type
Ad unit ID

Popup (bottom)

PUBLIC_TEST_UNIT_ID_POPUP_BOTTOM

Popup Video (bottom 16:9)

PUBLIC_TEST_UNIT_ID_POPUP_BOTTOM_VIDEO_16_9

Popup Video (bottom 9:16)

PUBLIC_TEST_UNIT_ID_POPUP_BOTTOM_VIDEO_9_16

Popup (center)

PUBLIC_TEST_UNIT_ID_POPUP_CENTER

Popup Video (center 16:9)

PUBLIC_TEST_UNIT_ID_POPUP_CENTER_VIDEO_16_9

Popup Video (center 9:16)

PUBLIC_TEST_UNIT_ID_POPUP_CENTER_VIDEO_9_16

  • 광고 노출하기

package io.adrop.ads.example

import android.os.Bundle
import android.util.Log
import android.widget.Button
import androidx.appcompat.app.AppCompatActivity
import io.adrop.ads.model.AdropErrorCode
import io.adrop.ads.popupAd.AdropPopupAd
import io.adrop.ads.popupAd.AdropPopupAdListener

class PopupActivity : AppCompatActivity() {

    private var adropPopupAd: AdropPopupAd? = null
    private lateinit var presetBottomButton: Button
    private lateinit var presetCenterButton: Button

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_popup)

        initViews()
        setupClickListeners()
    }

    /**
     * UI 컴포넌트 초기화
     */
    private fun initViews() {
        presetBottomButton = findViewById(R.id.btn_preset_bottom_video)
        presetCenterButton = findViewById(R.id.btn_preset_center_video)
    }

    /**
     * 버튼 클릭 리스너 설정
     */
    private fun setupClickListeners() {

        // 하단 팝업 광고 (이미지 또는 동영상 자동 결정)
        presetBottomButton.setOnClickListener {
            loadPopupAd("PUBLIC_TEST_UNIT_ID_POPUP_BOTTOM_VIDEO_16_9")
        }

        // 중앙 팝업 광고 (이미지 또는 동영상 자동 결정)
        presetCenterButton.setOnClickListener {
            loadPopupAd("PUBLIC_TEST_UNIT_ID_POPUP_CENTER_VIDEO_16_9")
        }
    }

    /**
     * 팝업 광고 로드 및 표시
     * @param unitId Adrop에서 발급받은 광고 단위 ID
     */
    private fun loadPopupAd(unitId: String) {
        Log.d("PopupActivity", "팝업 광고 로드 시작: $unitId")
        
        // 기존 광고 인스턴스 정리
        adropPopupAd?.destroy()

        // 새로운 팝업 광고 인스턴스 생성
        adropPopupAd = AdropPopupAd(this, unitId).apply {
            popupAdListener = object : AdropPopupAdListener {
                /**
                 * 광고 로드 성공 시 호출
                 * 자동으로 광고를 표시합니다
                 */
                override fun onAdReceived(ad: AdropPopupAd) {
                    Log.d("PopupActivity", "광고 로드 성공: ${ad.unitId}")
                    // 광고 로드 완료 즉시 표시
                    ad.show(this@PopupActivity)
                }

                /**
                 * 광고 로드 실패 시 호출
                 */
                override fun onAdFailedToReceive(ad: AdropPopupAd, errorCode: AdropErrorCode) {
                    Log.e("PopupActivity", "광고 로드 실패: ${ad.unitId} / 에러코드: $errorCode")
                    // 실패한 광고 인스턴스 정리
                    ad.destroy()
                    adropPopupAd = null
                }

                /**
                 * 사용자가 광고를 클릭했을 때 호출
                 */
                override fun onAdClicked(ad: AdropPopupAd) {
                    Log.d("PopupActivity", "광고 클릭됨: ${ad.unitId}")
                }

                /**
                 * 광고가 사용자에게 노출되었을 때 호출
                 */
                override fun onAdImpression(ad: AdropPopupAd) {
                    Log.d("PopupActivity", "광고 노출됨: ${ad.unitId}")
                }

                /**
                 * 전체화면 광고가 표시되기 전 호출
                 */
                override fun onAdWillPresentFullScreen(ad: AdropPopupAd) {
                    Log.d("PopupActivity", "전체화면 광고 표시 예정: ${ad.unitId}")
                }

                /**
                 * 전체화면 광고가 표시된 후 호출
                 */
                override fun onAdDidPresentFullScreen(ad: AdropPopupAd) {
                    Log.d("PopupActivity", "전체화면 광고 표시됨: ${ad.unitId}")
                }

                /**
                 * 전체화면 광고가 닫히기 전 호출
                 */
                override fun onAdWillDismissFullScreen(ad: AdropPopupAd) {
                    Log.d("PopupActivity", "전체화면 광고 닫힘 예정: ${ad.unitId}")
                }

                /**
                 * 전체화면 광고가 닫힌 후 호출
                 */
                override fun onAdDidDismissFullScreen(ad: AdropPopupAd) {
                    Log.d("PopupActivity", "전체화면 광고 닫힘: ${ad.unitId}")
                }
            }

            // 광고 로드 시작
            load()
        }
    }

    /**
     * Activity 종료 시 광고 리소스 정리
     */
    override fun onDestroy() {
        super.onDestroy()
        adropPopupAd?.destroy()
        adropPopupAd = null
    }
}

참고

  1. onAdReceived 콜백 이전 show를 호출 시, onAdFailedToShowFullScreen 로 에러 콜백을 받을 수 있습니다

  2. onAdReceived 콜백 확인 후, show를 호출하는 것을 권장드립니다. show 하는 타이밍이 따로 있으시다면 AdropPopupisLoaded를 확인 후 show 해주시면 됩니다!

커스텀 팝업 콜백

  • 팝업 광고의 닫기 관련 이벤트를 처리하기 위한 리스너입니다.

popupAd = AdropPopupAd(this, unitId)
popupAd?.closeListener = object: AdropPopupAdCloseListener {
  override fun onTodayOffClicked(ad: AdropPopupAd) {
      Log.d("adrop", "popup ad today off clicked")
  }

  override fun onDimClicked(ad: AdropPopupAd) {
      Log.d("adrop", "popup ad dim clicked")
  }

  override fun onClosed(ad: AdropPopupAd) {
      Log.d("adrop", "popup ad closed")
  }
}

적용 확인하기

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

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

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

Last updated