메인 콘텐츠로 건너뛰기

앱 오프닝 광고 형태 소개

앱 오프닝 광고는 다음과 같은 시점에 사용할 수 있는 전면 광고 형식입니다:
  • 앱 시작 시 로딩 화면에서 광고 표시
  • 앱이 백그라운드에서 포그라운드로 전환될 때 광고 표시
앱 오프닝 광고 예시

광고 연동하기

1

adUnit 생성

대시보드에서 발급받은 ad unit ID를 사용하여 광고 단위를 설정합니다.
val adUnit = DaroAppOpenAdUnit(
    unitId = ${AdUnitId},,
    placement = ${placement}, //로그 상 보여질 이름입니다. 공백을 보내도 무관합니다.
)
2

Loader 생성 및 광고 로드

광고 로더를 생성하고 리스너를 설정한 후 광고를 로드합니다.
val loader = DaroAppOpenAdLoader(
    context = context,
    adUnit = adUnit
)

loader.setListener(object : DaroAppOpenAdLoaderListener {
    override fun onAdLoadSuccess(ad: DaroAppOpenAd, adInfo: DaroAdInfo) {
        // 광고 로드 성공
        daroAppOpenAd = ad
        setupAdListeners(ad)
    }

    override fun onAdLoadFail(error: DaroLoadError) {
        // 광고 로드 실패
        ...
    }
})

// 광고 로드
loader.loadAd()
3

리스너 설정 및 광고 표시

로드된 광고에 표시 관련 리스너를 설정하고 광고를 표시합니다.
private var daroAppOpenAd: DaroAppOpenAd? = null

private fun setupAdListeners(ad: DaroAppOpenAd) {
    ad.setListener(object : DaroAppOpenAdListener {
        override fun onAdImpression(adInfo: DaroAdInfo) {
            // 앱 오프닝 광고 임프레션 이벤트
        }

        override fun onAdClicked(adInfo: DaroAdInfo) {
            // 앱 오프닝 광고 클릭 이벤트 
        }
        override fun onShown(adInfo: DaroAdInfo) {
            // 앱 오프닝 광고화면이 보여질때
        }

        override fun onDismiss(adInfo: DaroAdInfo) {
            // 앱 오프닝 광고 화면이 닫혔을때
        }

        override fun onFailedToShow(adInfo: DaroAdInfo, error: DaroAdDisplayFailError) {
            // 앱 오프닝 광고 화면을 보여주는데 실패했을때
        }
    })
}

// 광고 표시 (Activity 필수)
daroAppOpenAd.show(activity = this@MainActivity)
4

광고 리소스 정리

액티비티가 종료되거나 광고가 더 이상 필요하지 않을 때 리소스를 정리합니다.
override fun onDestroy() {
    super.onDestroy()
    daroAppOpenAd?.destroy()
    daroAppOpenAd = null
}

콜드 스타트 시 광고 표시

class SplashActivity : AppCompatActivity() {
    private var daroAppOpenAd: DaroAppOpenAd? = null
    private var isAdShown = false

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

        loadDaroAppOpenAd()
    }

    private fun loadDaroAppOpenAd() {
        val adUnit = DaroAppOpenAdUnit(
            unitId = "your_appopen_unit_id",
            placement = "splash_screen"
        )

        val loader = DaroAppOpenAdLoader(
            context = this,
            adUnit = adUnit
        )

        loader.setListener(object : DaroAppOpenAdLoaderListener {
            override fun onAdLoadSuccess(ad: DaroAppOpenAd, adInfo: DaroAdInfo?) {
                daroAppOpenAd = ad

                ad.setListener(object : DaroAppOpenAdListener {
                    override fun onAdImpression(adInfo: DaroAdInfo) {
                        ...
                    }

                    override fun onAdClicked(adInfo: DaroAdInfo) {
                        ...
                    }

                    override fun onShown(adInfo: DaroAdInfo) {
                        isAdShown = true
                    }

                    override fun onDismiss(adInfo: DaroAdInfo) {
                        // 앱 오프닝 광고가 닫혔을때 동작 처리 (ex. 메인 화면으로 이동)
                        if (!isAdShown) {
                            val intent = Intent(this, MainActivity::class.java)
                            startActivity(intent)
                            finish()
                        }
                    }

                    override fun onFailedToShow(adInfo: DaroAdInfo, error: DaroAdDisplayFailError) {
                        // 앱 오프닝 광고를 보여줄 수 없을때 동작 처리.
                        ...
                    }
                })

                // 광고 표시
                ad.show(this@SplashActivity)
            }

            override fun onAdLoadFail(error: DaroLoadError) {
                // 광고 로드 실패 시 동작 처리.
            }
        })

        // 광고 로드
        loader.loadAd()
    }

    override fun onDestroy() {
        super.onDestroy()
        daroAppOpenAd?.destroy()
        daroAppOpenAd = null
    }
}