iOS 팝업 광고

  • 팝업 지면은 전면광고와 유사하게 앱을 완전히 덮으면서 노출됩니다.

  • 팝업 지면은 위치에 따라 하단, 중앙 두가지 타입의 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

  • 광고 노출하기

import AdropAds

class ViewController: UIViewController {
    var popupAd: AdropPopupAd?
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        // 팝업 광고 인스턴스 생성
        popupAd = AdropPopupAd(unitId: "PUBLIC_TEST_UNIT_ID_POPUP_CENTER")
        popupAd?.delegate = self
        popupAd?.closeDelegate = self
        
        // 커스터마이징 (선택사항)
        popupAd?.backgroundColor = .black.withAlphaComponent(0.7)
        popupAd?.hideForTodayTextColor = .red
        popupAd?.closeTextColor = .white
        
        // 광고 로드
        popupAd?.load()
    }
    
    func showPopupAd() {
        popupAd?.show(fromRootViewController: self)
    }
}

extension ViewController: AdropPopupAdDelegate {
    func onAdReceived(_ ad: AdropPopupAd) {
        print("팝업 광고 로드 성공")
        // 원하는 시점에 광고 표시
        // ad.show(fromRootViewController: self)
    }
    
    func onAdFailedToReceive(_ ad: AdropPopupAd, _ error: AdropErrorCode) {
        print("팝업 광고 로드 실패: \(error)")
    }
    
    func onAdImpression(_ ad: AdropPopupAd) {
        print("팝업 광고 노출")
    }
    
    func onAdClicked(_ ad: AdropPopupAd) {
        print("팝업 광고 클릭")
    }
    
    func onAdWillPresentFullScreen(_ ad: AdropPopupAd) {
        print("팝업 광고 표시 예정")
    }
    
    func onAdDidPresentFullScreen(_ ad: AdropPopupAd) {
        print("팝업 광고 표시 완료")
    }
    
    func onAdWillDismissFullScreen(_ ad: AdropPopupAd) {
        print("팝업 광고 닫기 예정")
    }
    
    func onAdDidDismissFullScreen(_ ad: AdropPopupAd) {
        print("팝업 광고 닫기 완료")
        // 새로운 광고 로드
        popupAd?.load()
    }
    
    func onAdFailedToShowFullScreen(_ ad: AdropPopupAd, _ error: AdropErrorCode) {
        print("팝업 광고 표시 실패: \(error)")
    }
}

extension ViewController: AdropPopupAdCloseDelegate {
    func onClosed(_ ad: AdropPopupAd) {
        print("팝업 광고 닫기 버튼 클릭")
    }
    
    func onDimClicked(_ ad: AdropPopupAd) {
        print("팝업 광고 배경 클릭")
    }
    
    func onTodayOffClicked(_ ad: AdropPopupAd) {
        print("오늘 하루 보지 않기 클릭")
    }
}

커스텀 팝업 콜백

popupAd = AdropPopupAd(unitId: unitId)
popupAd.delegate = self
popupAd.closeDelegate = self
popupAd.load()

func onClosed(_ ad: AdropPopupAd) {
    print("onClosed: \(ad.unitId)")
}
    
func onDimClicked(_ ad: AdropPopupAd) {
    print("onDimClicked: \(ad.unitId)")
}
    
func onTodayOffClicked(_ ad: AdropPopupAd) {
    print("onTodayOffClicked: \(ad.unitId)")
}

유의사항

  • 메모리 관리

    • ViewController 해제 시 팝업 광고 정리 필수

    • 광고 표시 후 새로운 광고 미리 로드 권장

  • 에러 처리 예시

func onAdFailedToReceive(_ ad: AdropPopupAd, _ error: AdropErrorCode) {
  switch error {
  case .ERROR_CODE_AD_NO_FILL:
      print("현재 노출 가능한 팝업 광고가 없습니다")
  case .ERROR_CODE_NETWORK:
      print("네트워크 오류로 팝업 광고 로드 실패")
  case .ERROR_CODE_INVALID_UNIT:
      print("잘못된 유닛 ID입니다")
  default:
      print("팝업 광고 로드 실패: \(error)")
  }
}

적용 확인하기

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

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

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

Last updated