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

팝업 광고 노출하기
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("오늘 하루 보지 않기 클릭")
}
}@interface ViewController () <AdropPopupAdDelegate, AdropPopupAdCloseDelegate>
@property (strong, nonatomic) AdropPopupAd *popupAd;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// 팝업 광고 인스턴스 생성
self.popupAd = [[AdropPopupAd alloc] initWithUnitId:@"PUBLIC_TEST_UNIT_ID_POPUP_CENTER"];
self.popupAd.delegate = self;
self.popupAd.closeDelegate = self;
// 커스터마이징 (선택사항)
self.popupAd.backgroundColor = [[UIColor blackColor] colorWithAlphaComponent:0.7];
self.popupAd.hideForTodayTextColor = [UIColor redColor];
self.popupAd.closeTextColor = [UIColor whiteColor];
// 광고 로드
[self.popupAd load];
}
- (void)showPopupAd {
[self.popupAd showFromRootViewController:self];
}
// AdropPopupAdDelegate 메서드들
- (void)onAdReceived:(AdropPopupAd *)ad {
NSLog(@"팝업 광고 로드 성공");
}
- (void)onAdFailedToReceive:(AdropPopupAd *)ad :(enum AdropErrorCode)error {
NSLog(@"팝업 광고 로드 실패");
}
- (void)onAdImpression:(AdropPopupAd *)ad {
NSLog(@"팝업 광고 노출");
}
- (void)onAdClicked:(AdropPopupAd *)ad {
NSLog(@"팝업 광고 클릭");
}
- (void)onAdDidPresentFullScreen:(AdropPopupAd *)ad {
NSLog(@"팝업 광고 표시 완료");
}
- (void)onAdDidDismissFullScreen:(AdropPopupAd *)ad {
NSLog(@"팝업 광고 닫기 완료");
[self.popupAd load]; // 새로운 광고 로드
}
// AdropPopupAdCloseDelegate 메서드들
- (void)onClosed:(AdropPopupAd *)ad {
NSLog(@"팝업 광고 닫기 버튼 클릭");
}
- (void)onDimClicked:(AdropPopupAd *)ad {
NSLog(@"팝업 광고 배경 클릭");
}
- (void)onTodayOffClicked:(AdropPopupAd *)ad {
NSLog(@"오늘 하루 보지 않기 클릭");
}
@endimport SwiftUI
import AdropAds
class AdropPopupAdWrapper: ObservableObject, AdropPopupAdDelegate, AdropPopupAdCloseDelegate {
@Published var isLoaded = false
var popupAd: AdropPopupAd?
init() {
popupAd = AdropPopupAd(unitId: "PUBLIC_TEST_UNIT_ID_POPUP_CENTER")
popupAd?.delegate = self
popupAd?.closeDelegate = self
}
func loadAd() {
popupAd?.load()
}
func showAd() {
guard let viewController = UIApplication.shared.currentWindow?.topViewControllerAdrop else {
return
}
popupAd?.show(fromRootViewController: viewController)
}
// AdropPopupAdDelegate
func onAdReceived(_ ad: AdropPopupAd) {
DispatchQueue.main.async {
self.isLoaded = true
}
}
func onAdFailedToReceive(_ ad: AdropPopupAd, _ error: AdropErrorCode) {
print("팝업 광고 로드 실패")
}
func onAdImpression(_ ad: AdropPopupAd) {
print("팝업 광고 노출")
}
func onAdClicked(_ ad: AdropPopupAd) {
print("팝업 광고 클릭")
}
func onAdDidDismissFullScreen(_ ad: AdropPopupAd) {
print("팝업 광고 닫기 완료")
loadAd() // 새로운 광고 로드
}
// AdropPopupAdCloseDelegate
func onClosed(_ ad: AdropPopupAd) {
print("팝업 광고 닫기")
}
func onDimClicked(_ ad: AdropPopupAd) {
print("팝업 광고 배경 클릭")
}
func onTodayOffClicked(_ ad: AdropPopupAd) {
print("오늘 하루 보지 않기 클릭")
}
}
struct ContentView: View {
@StateObject var popupAdWrapper = AdropPopupAdWrapper()
var body: some View {
VStack(spacing: 20) {
Button("팝업 광고 로드") {
popupAdWrapper.loadAd()
}
Button("팝업 광고 표시") {
popupAdWrapper.showAd()
}
.disabled(!popupAdWrapper.isLoaded)
if popupAdWrapper.isLoaded {
Text("팝업 광고가 로드되었습니다")
.foregroundColor(.green)
}
}
.padding()
}
}커스텀 팝업 콜백
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가 한 번이라도 광고요청을 할 경우 성공적으로 연결됩니다.

Last updated