광고 이벤트를 수신하려면 AdropInterstitialAdListener를 구현하고 설정해야 합니다.
복사
import io.adrop.ads.interstitial.AdropInterstitialAdListenerimport io.adrop.ads.model.AdropErrorCodeclass MainActivity : AppCompatActivity() { private var interstitialAd: AdropInterstitialAd? = null override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) // 1. 전면 광고 인스턴스 생성 interstitialAd = AdropInterstitialAd(this, "YOUR_UNIT_ID") // 2. 리스너 설정 interstitialAd?.interstitialAdListener = object : AdropInterstitialAdListener { override fun onAdReceived(ad: AdropInterstitialAd) { Log.d("Adrop", "전면 광고 수신 완료") } override fun onAdFailedToReceive(ad: AdropInterstitialAd, errorCode: AdropErrorCode) { Log.e("Adrop", "전면 광고 수신 실패: $errorCode") } override fun onAdImpression(ad: AdropInterstitialAd) { Log.d("Adrop", "전면 광고 노출") } override fun onAdClicked(ad: AdropInterstitialAd) { Log.d("Adrop", "전면 광고 클릭") } override fun onAdWillPresentFullScreen(ad: AdropInterstitialAd) { Log.d("Adrop", "전면 광고 표시 직전") } override fun onAdDidPresentFullScreen(ad: AdropInterstitialAd) { Log.d("Adrop", "전면 광고 표시 완료") } override fun onAdWillDismissFullScreen(ad: AdropInterstitialAd) { Log.d("Adrop", "전면 광고 닫히기 직전") } override fun onAdDidDismissFullScreen(ad: AdropInterstitialAd) { Log.d("Adrop", "전면 광고 닫힘") // 다음 광고를 미리 로드 loadInterstitialAd() } override fun onAdFailedToShowFullScreen(ad: AdropInterstitialAd, errorCode: AdropErrorCode) { Log.e("Adrop", "전면 광고 표시 실패: $errorCode") } } // 3. 광고 로드 loadInterstitialAd() } private fun loadInterstitialAd() { interstitialAd?.load() }}
class GameActivity : AppCompatActivity() { private var interstitialAd: AdropInterstitialAd? = null private var isAdReady = false override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_game) // 화면 진입 시 미리 로드 preloadInterstitialAd() } private fun preloadInterstitialAd() { interstitialAd = AdropInterstitialAd(this, "YOUR_UNIT_ID") interstitialAd?.interstitialAdListener = object : AdropInterstitialAdListener { override fun onAdReceived(ad: AdropInterstitialAd) { isAdReady = true Log.d("Adrop", "전면 광고 준비 완료") } override fun onAdFailedToReceive(ad: AdropInterstitialAd, errorCode: AdropErrorCode) { isAdReady = false Log.e("Adrop", "전면 광고 로드 실패: $errorCode") } override fun onAdDidDismissFullScreen(ad: AdropInterstitialAd) { isAdReady = false // 다음 광고 미리 로드 preloadInterstitialAd() } } interstitialAd?.load() } private fun onGameLevelComplete() { // 레벨 완료 시 즉시 표시 if (isAdReady) { interstitialAd?.show(this) } }}
// ✅ 좋은 예: 게임 레벨 전환fun onLevelComplete() { saveProgress() showInterstitialAd() loadNextLevel()}// ✅ 좋은 예: 콘텐츠 읽기 완료fun onArticleFinished() { showInterstitialAd()}// ❌ 나쁜 예: 사용자 액션 중간fun onButtonClick() { showInterstitialAd() // 사용자 경험 저해 performAction()}
override fun onAdFailedToReceive(ad: AdropInterstitialAd, errorCode: AdropErrorCode) { when (errorCode) { AdropErrorCode.ERROR_CODE_NETWORK -> { Log.e("Adrop", "네트워크 오류: 나중에 다시 시도") retryAfterDelay() } AdropErrorCode.ERROR_CODE_AD_NO_FILL -> { Log.w("Adrop", "표시할 광고 없음") continueWithoutAd() } else -> { Log.e("Adrop", "광고 로드 실패: $errorCode") } }}private fun retryAfterDelay() { Handler(Looper.getMainLooper()).postDelayed({ interstitialAd?.load() }, 30000) // 30초 후 재시도}private fun continueWithoutAd() { // 광고 없이 계속 진행 proceedToNextScreen()}
override fun onAdWillPresentFullScreen(ad: AdropInterstitialAd) { // 게임 일시정지 pauseGame() // 배경음악 중지 pauseBackgroundMusic()}override fun onAdDidDismissFullScreen(ad: AdropInterstitialAd) { // 게임 재개 resumeGame() // 배경음악 재생 resumeBackgroundMusic()}
override fun onAdReceived(ad: AdropInterstitialAd) { Log.d("Adrop", "✅ 전면 광고 로드 성공") Log.d("Adrop", "Unit ID: ${ad.unitId}") Log.d("Adrop", "Creative ID: ${ad.creativeId}") Log.d("Adrop", "Is Backfilled: ${ad.isBackfilled}")}override fun onAdFailedToReceive(ad: AdropInterstitialAd, errorCode: AdropErrorCode) { Log.e("Adrop", "❌ 전면 광고 로드 실패: $errorCode") if (BuildConfig.DEBUG) { Toast.makeText(this, "광고 로드 실패: $errorCode", Toast.LENGTH_SHORT).show() }}