메인 콘텐츠로 건너뛰기

클래스

Adrop

SDK의 메인 클래스입니다. SDK 초기화 및 전역 설정을 관리합니다.

정적 메서드

메서드반환 타입설명
initialize(production:useInAppBrowser:targetCountries:)voidSDK 초기화
setUID(_:)void사용자 식별자 설정
setTheme(_:)void앱 테마 설정
handleDeepLink(url:)Bool딥링크 처리
openQuest(channel:path:)voidQuest 화면 열기

정적 속성

속성타입설명
sdkVersionStringSDK 버전 (읽기 전용)

초기화 메서드

static func initialize(
    production: String,
    useInAppBrowser: Bool = true,
    targetCountries: [String]? = nil
)
production
String
required
애드컨트롤 콘솔에서 발급받은 프로덕션 키
useInAppBrowser
Bool
default:"true"
인앱 브라우저 사용 여부. true일 경우 광고 클릭 시 앱 내에서 열림
targetCountries
[String]?
default:"nil"
타겟 국가 코드 배열 (예: [“KR”, “US”]). nil일 경우 모든 국가
사용 예시:
// AppDelegate.swift
func application(
    _ application: UIApplication,
    didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
) -> Bool {
    Adrop.initialize(production: "YOUR_PRODUCTION_KEY")
    return true
}

사용자 식별자 설정

static func setUID(_ uid: String)
uid
String
required
사용자를 식별할 수 있는 고유 ID (최대 100자)
사용 예시:
Adrop.setUID("user_12345")

테마 설정

static func setTheme(_ theme: AdropTheme)
theme
AdropTheme
required
앱 테마 (light, dark, auto)
사용 예시:
Adrop.setTheme(.dark)

AdropBanner

배너 광고를 표시하는 클래스입니다. UIView를 상속받습니다.

초기화

init(unitId: String)
unitId
String
required
애드컨트롤 콘솔에서 생성한 배너 광고 유닛 ID

메서드

메서드반환 타입설명
load()void광고 요청 및 로드

속성

속성타입설명
unitIdString유닛 ID (읽기 전용)
contextIdString?문맥 타겟팅 ID (읽기/쓰기)
creativeSizeCGSize?광고 크리에이티브 크기 (읽기 전용)
destinationURLString?광고 목적지 URL (읽기 전용)
delegateAdropBannerDelegate?델리게이트 (읽기/쓰기)
사용 예시:
let banner = AdropBanner(unitId: "YOUR_UNIT_ID")
banner.contextId = "article_123"
banner.delegate = self
banner.load()

AdropNativeAd

네이티브 광고 데이터를 관리하는 클래스입니다.

초기화

init(unitId: String)
unitId
String
required
애드컨트롤 콘솔에서 생성한 네이티브 광고 유닛 ID

메서드

메서드반환 타입설명
load()void광고 요청 및 로드

속성

속성타입설명
headlineString?광고 제목 (읽기 전용)
bodyString?광고 본문 (읽기 전용)
callToActionString?행동 유도 버튼 텍스트 (읽기 전용)
assetString?메인 이미지 URL (읽기 전용)
profileAdropProfile?광고주 프로필 (읽기 전용)
extra[String: String]?추가 텍스트 필드 (읽기 전용)
contextIdString?문맥 타겟팅 ID (읽기/쓰기)
delegateAdropNativeAdDelegate?델리게이트 (읽기/쓰기)
사용 예시:
let nativeAd = AdropNativeAd(unitId: "YOUR_UNIT_ID")
nativeAd.delegate = self
nativeAd.load()

// 광고 로드 후
titleLabel.text = nativeAd.headline
bodyLabel.text = nativeAd.body
ctaButton.setTitle(nativeAd.callToAction, for: .normal)

AdropInterstitialAd

전면 광고를 표시하는 클래스입니다.

초기화

init(unitId: String)
unitId
String
required
애드컨트롤 콘솔에서 생성한 전면 광고 유닛 ID

메서드

메서드반환 타입설명
load()void광고 사전 로드
show(fromRootViewController:)void광고 표시
show 메서드
func show(fromRootViewController viewController: UIViewController)
viewController
UIViewController
required
광고를 표시할 기준 뷰 컨트롤러

속성

속성타입설명
delegateAdropInterstitialAdDelegate?델리게이트 (읽기/쓰기)
isLoadedBool광고가 로드되었는지 여부 (읽기 전용)
contextIdString?문맥 타겟팅 ID (읽기/쓰기)
사용 예시:
let interstitial = AdropInterstitialAd(unitId: "YOUR_UNIT_ID")
interstitial.delegate = self
interstitial.load()

// 광고가 로드된 후
if interstitial.isLoaded {
    interstitial.show(fromRootViewController: self)
}

AdropRewardedAd

리워드 광고를 표시하는 클래스입니다.

초기화

init(unitId: String)
unitId
String
required
애드컨트롤 콘솔에서 생성한 리워드 광고 유닛 ID

메서드

메서드반환 타입설명
load()void광고 사전 로드
show(fromRootViewController:userDidEarnRewardHandler:)void광고 표시 및 리워드 핸들러 설정
show 메서드
func show(
    fromRootViewController viewController: UIViewController,
    userDidEarnRewardHandler: @escaping () -> Void
)
viewController
UIViewController
required
광고를 표시할 기준 뷰 컨트롤러
userDidEarnRewardHandler
() -> Void
required
사용자가 리워드를 획득했을 때 호출될 클로저

속성

속성타입설명
delegateAdropRewardedAdDelegate?델리게이트 (읽기/쓰기)
isLoadedBool광고가 로드되었는지 여부 (읽기 전용)
contextIdString?문맥 타겟팅 ID (읽기/쓰기)
사용 예시:
let rewardedAd = AdropRewardedAd(unitId: "YOUR_UNIT_ID")
rewardedAd.delegate = self
rewardedAd.load()

// 광고가 로드된 후
if rewardedAd.isLoaded {
    rewardedAd.show(fromRootViewController: self) {
        print("사용자가 리워드를 획득했습니다!")
        // 리워드 지급 로직
    }
}

AdropPopupAd

팝업 광고를 표시하는 클래스입니다.

초기화

init(unitId: String)
unitId
String
required
애드컨트롤 콘솔에서 생성한 팝업 광고 유닛 ID

메서드

메서드반환 타입설명
load()void광고 사전 로드
show(fromRootViewController:)void광고 표시
show 메서드
func show(fromRootViewController viewController: UIViewController)
viewController
UIViewController
required
광고를 표시할 기준 뷰 컨트롤러

속성

속성타입설명
delegateAdropPopupAdDelegate?광고 이벤트 델리게이트 (읽기/쓰기)
closeDelegateAdropPopupAdCloseDelegate?닫기 이벤트 델리게이트 (읽기/쓰기)
isLoadedBool광고가 로드되었는지 여부 (읽기 전용)
contextIdString?문맥 타겟팅 ID (읽기/쓰기)
사용 예시:
let popupAd = AdropPopupAd(unitId: "YOUR_UNIT_ID")
popupAd.delegate = self
popupAd.closeDelegate = self
popupAd.load()

// 광고가 로드된 후
if popupAd.isLoaded {
    popupAd.show(fromRootViewController: self)
}

AdropSplashAd

스플래시 광고를 관리하는 클래스입니다.

초기화

init(unitId: String)
unitId
String
required
애드컨트롤 콘솔에서 생성한 스플래시 광고 유닛 ID

메서드

메서드반환 타입설명
load()void광고 사전 로드

AdropSplashAdViewController

스플래시 광고를 전체 화면으로 표시하는 뷰 컨트롤러입니다.

초기화

init(unitId: String, backgroundColor: UIColor? = nil)
unitId
String
required
애드컨트롤 콘솔에서 생성한 스플래시 광고 유닛 ID
backgroundColor
UIColor?
default:"nil"
배경색

속성

속성타입설명
delegateAdropSplashAdDelegate?델리게이트 (읽기/쓰기)
displayDurationTimeInterval광고 표시 시간 (기본값: 5초, 읽기/쓰기)
logoImageUIImage?하단에 표시할 로고 이미지 (읽기/쓰기)
사용 예시:
let splashVC = AdropSplashAdViewController(unitId: "YOUR_UNIT_ID")
splashVC.delegate = self
splashVC.displayDuration = 3.0  // 3초 동안 표시
splashVC.logoImage = UIImage(named: "app_logo")  // 로고 이미지 설정
splashVC.modalPresentationStyle = .fullScreen
present(splashVC, animated: false)

AdropSplashAdView

스플래시 광고를 표시하는 뷰입니다. UIView를 상속받습니다.

초기화

init(unitId: String)
unitId
String
required
애드컨트롤 콘솔에서 생성한 스플래시 광고 유닛 ID

메서드

메서드반환 타입설명
load()void광고 요청 및 로드

속성

속성타입설명
delegateAdropSplashAdDelegate?델리게이트 (읽기/쓰기)

AdropMetrics

사용자 속성 및 이벤트를 관리하는 클래스입니다.

정적 메서드

메서드반환 타입설명
setProperty(key:value:)void사용자 속성 설정
logEvent(name:params:)void커스텀 이벤트 로깅

사용자 속성 설정

static func setProperty(key: String, value: Any)
key
String
required
속성 키 (최대 40자)
value
Any
required
속성 값 (String, Int, Double, Bool 지원)
사용 예시:
AdropMetrics.setProperty(key: "age", value: 25)
AdropMetrics.setProperty(key: "gender", value: "male")
AdropMetrics.setProperty(key: "isPremium", value: true)

이벤트 로깅

static func logEvent(name: String, params: [String: Any]? = nil)
name
String
required
이벤트 이름 (최대 40자)
params
[String: Any]?
default:"nil"
이벤트 파라미터 (최대 25개)
사용 예시:
AdropMetrics.logEvent(name: "purchase_completed", params: [
    "item_id": "product_123",
    "amount": 9.99,
    "currency": "USD"
])

프로토콜 (Delegates)

AdropBannerDelegate

배너 광고의 생명주기 이벤트를 처리하는 프로토콜입니다.

필수 메서드

func onAdReceived(_ banner: AdropBanner)
광고 수신이 성공했을 때 호출됩니다.
func onAdFailedToReceive(_ banner: AdropBanner, _ errorCode: AdropErrorCode)
광고 수신이 실패했을 때 호출됩니다.

선택 메서드

optional func onAdImpression(_ banner: AdropBanner)
광고가 화면에 노출되었을 때 호출됩니다.
optional func onAdClicked(_ banner: AdropBanner)
사용자가 광고를 클릭했을 때 호출됩니다. 구현 예시:
extension ViewController: AdropBannerDelegate {
    func onAdReceived(_ banner: AdropBanner) {
        print("배너 광고 수신")
    }

    func onAdFailedToReceive(_ banner: AdropBanner, _ errorCode: AdropErrorCode) {
        print("배너 광고 실패: \(errorCode)")
    }

    func onAdImpression(_ banner: AdropBanner) {
        print("배너 광고 노출")
    }

    func onAdClicked(_ banner: AdropBanner) {
        print("배너 광고 클릭")
    }
}

AdropNativeAdDelegate

네이티브 광고의 생명주기 이벤트를 처리하는 프로토콜입니다.

필수 메서드

func onAdReceived(_ nativeAd: AdropNativeAd)
광고 수신이 성공했을 때 호출됩니다.
func onAdFailedToReceive(_ nativeAd: AdropNativeAd, _ errorCode: AdropErrorCode)
광고 수신이 실패했을 때 호출됩니다.

선택 메서드

optional func onAdImpression(_ nativeAd: AdropNativeAd)
광고가 화면에 노출되었을 때 호출됩니다.
optional func onAdClicked(_ nativeAd: AdropNativeAd)
사용자가 광고를 클릭했을 때 호출됩니다.

AdropInterstitialAdDelegate

전면 광고의 생명주기 이벤트를 처리하는 프로토콜입니다.

필수 메서드

func onAdReceived(_ ad: AdropInterstitialAd)
광고 수신이 성공했을 때 호출됩니다.
func onAdFailedToReceive(_ ad: AdropInterstitialAd, _ errorCode: AdropErrorCode)
광고 수신이 실패했을 때 호출됩니다.
func onAdFailedToShow(_ ad: AdropInterstitialAd, _ errorCode: AdropErrorCode)
광고 표시가 실패했을 때 호출됩니다.

선택 메서드

optional func onAdImpression(_ ad: AdropInterstitialAd)
광고가 화면에 노출되었을 때 호출됩니다.
optional func onAdClicked(_ ad: AdropInterstitialAd)
사용자가 광고를 클릭했을 때 호출됩니다.
optional func onAdDidDismissFullScreenContent(_ ad: AdropInterstitialAd)
광고가 닫혔을 때 호출됩니다.

AdropRewardedAdDelegate

리워드 광고의 생명주기 이벤트를 처리하는 프로토콜입니다.

필수 메서드

func onAdReceived(_ ad: AdropRewardedAd)
광고 수신이 성공했을 때 호출됩니다.
func onAdFailedToReceive(_ ad: AdropRewardedAd, _ errorCode: AdropErrorCode)
광고 수신이 실패했을 때 호출됩니다.
func onAdFailedToShow(_ ad: AdropRewardedAd, _ errorCode: AdropErrorCode)
광고 표시가 실패했을 때 호출됩니다.

선택 메서드

optional func onAdImpression(_ ad: AdropRewardedAd)
광고가 화면에 노출되었을 때 호출됩니다.
optional func onAdClicked(_ ad: AdropRewardedAd)
사용자가 광고를 클릭했을 때 호출됩니다.
optional func onAdDidDismissFullScreenContent(_ ad: AdropRewardedAd)
광고가 닫혔을 때 호출됩니다.

AdropPopupAdDelegate

팝업 광고의 생명주기 이벤트를 처리하는 프로토콜입니다.

필수 메서드

func onAdReceived(_ ad: AdropPopupAd)
광고 수신이 성공했을 때 호출됩니다.
func onAdFailedToReceive(_ ad: AdropPopupAd, _ errorCode: AdropErrorCode)
광고 수신이 실패했을 때 호출됩니다.
func onAdFailedToShow(_ ad: AdropPopupAd, _ errorCode: AdropErrorCode)
광고 표시가 실패했을 때 호출됩니다.

선택 메서드

optional func onAdImpression(_ ad: AdropPopupAd)
광고가 화면에 노출되었을 때 호출됩니다.
optional func onAdClicked(_ ad: AdropPopupAd)
사용자가 광고를 클릭했을 때 호출됩니다.
optional func onAdDidDismissFullScreenContent(_ ad: AdropPopupAd)
광고가 닫혔을 때 호출됩니다.

AdropPopupAdCloseDelegate

팝업 광고의 닫기 관련 이벤트를 처리하는 프로토콜입니다.

선택 메서드

optional func onAdHidedForToday(_ ad: AdropPopupAd)
사용자가 “오늘 하루 보지 않기”를 선택했을 때 호출됩니다.
optional func onAdClosed(_ ad: AdropPopupAd)
사용자가 광고를 닫았을 때 호출됩니다.

AdropSplashAdDelegate

스플래시 광고의 생명주기 이벤트를 처리하는 프로토콜입니다.

필수 메서드

func onAdReceived(_ ad: AdropSplashAd)
광고 수신이 성공했을 때 호출됩니다.
func onAdFailedToReceive(_ ad: AdropSplashAd, _ errorCode: AdropErrorCode)
광고 수신이 실패했을 때 호출됩니다.

선택 메서드

optional func onAdImpression(_ ad: AdropSplashAd)
광고가 화면에 노출되었을 때 호출됩니다.
optional func onAdClicked(_ ad: AdropSplashAd)
사용자가 광고를 클릭했을 때 호출됩니다.

열거형 (Enums)

AdropErrorCode

광고 로드 및 표시 중 발생할 수 있는 에러 코드입니다.
enum AdropErrorCode: Int
케이스코드 값설명
ERROR_CODE_NETWORK1000네트워크 오류
ERROR_CODE_INTERNAL2000내부 오류
ERROR_CODE_INITIALIZE3000SDK 초기화 실패
ERROR_CODE_INVALID_UNIT4000잘못된 유닛 ID
ERROR_CODE_NOT_TARGET_COUNTRY4010타겟 국가가 아님
ERROR_CODE_AD_INACTIVE4100활성 캠페인 없음
ERROR_CODE_AD_NO_FILL4200노출 가능한 광고 없음
ERROR_CODE_AD_LOAD_DUPLICATED5000중복된 광고 로드 요청
ERROR_CODE_AD_LOADING5001광고 로딩 중
ERROR_CODE_AD_EMPTY5002광고가 로드되지 않음
ERROR_CODE_AD_SHOWN5003광고가 이미 표시됨
ERROR_CODE_AD_HIDE_FOR_TODAY5100오늘 하루 보지 않기 설정됨
ERROR_CODE_ACCOUNT_USAGE_LIMIT_EXCEEDED6000계정 사용량 한도 초과
ERROR_CODE_LANDSCAPE_UNSUPPORTED7000가로 모드 미지원
ERROR_CODE_AD_BACKFILL_NO_FILL8000백필 광고 없음

에러 코드별 설명

네트워크 관련
  • ERROR_CODE_NETWORK: 네트워크 연결 오류가 발생했습니다. 인터넷 연결을 확인하세요.
초기화 관련
  • ERROR_CODE_INITIALIZE: SDK가 초기화되지 않았습니다. Adrop.initialize()를 먼저 호출하세요.
유닛 관련
  • ERROR_CODE_INVALID_UNIT: 잘못된 유닛 ID입니다. 콘솔에서 확인하세요.
  • ERROR_CODE_NOT_TARGET_COUNTRY: 현재 사용자의 국가가 타겟 국가가 아닙니다.
광고 관련
  • ERROR_CODE_AD_INACTIVE: 해당 유닛에 활성화된 캠페인이 없습니다.
  • ERROR_CODE_AD_NO_FILL: 현재 노출 가능한 광고가 없습니다.
  • ERROR_CODE_AD_BACKFILL_NO_FILL: 백필 광고도 없습니다.
광고 상태 관련
  • ERROR_CODE_AD_LOAD_DUPLICATED: 이미 광고를 로드하는 중입니다.
  • ERROR_CODE_AD_LOADING: 광고가 아직 로딩 중입니다.
  • ERROR_CODE_AD_EMPTY: 광고를 표시하기 전에 로드해야 합니다.
  • ERROR_CODE_AD_SHOWN: 광고가 이미 표시되었습니다. 새로운 광고를 로드하세요.
  • ERROR_CODE_AD_HIDE_FOR_TODAY: 사용자가 “오늘 하루 보지 않기”를 선택했습니다.
기타
  • ERROR_CODE_INTERNAL: 내부 오류가 발생했습니다.
  • ERROR_CODE_ACCOUNT_USAGE_LIMIT_EXCEEDED: 계정의 광고 사용량 한도를 초과했습니다.
  • ERROR_CODE_LANDSCAPE_UNSUPPORTED: 해당 광고는 가로 모드를 지원하지 않습니다.
사용 예시:
func onAdFailedToReceive(_ banner: AdropBanner, _ errorCode: AdropErrorCode) {
    switch errorCode {
    case .ERROR_CODE_NETWORK:
        print("네트워크 오류: 연결을 확인하세요")
    case .ERROR_CODE_AD_NO_FILL:
        print("노출 가능한 광고가 없습니다")
    case .ERROR_CODE_INVALID_UNIT:
        print("잘못된 유닛 ID입니다")
    default:
        print("광고 로드 실패: \(errorCode.rawValue)")
    }
}

AdropTheme

앱의 테마 설정을 나타내는 열거형입니다.
enum AdropTheme
케이스설명
light라이트 모드
dark다크 모드
auto시스템 설정 따르기 (기본값)
사용 예시:
// 라이트 모드 설정
Adrop.setTheme(.light)

// 다크 모드 설정
Adrop.setTheme(.dark)

// 시스템 설정 따르기
Adrop.setTheme(.auto)

구조체 및 타입

AdropProfile

광고주의 프로필 정보를 담는 구조체입니다.
struct AdropProfile {
    let displayLogo: String?    // 광고주 로고 URL
    let displayName: String?    // 광고주 이름
    let link: String?           // 광고주 프로필 링크
}
사용 예시:
if let profile = nativeAd.profile {
    profileNameLabel.text = profile.displayName
    if let logoURL = profile.displayLogo {
        // 로고 이미지 로드
        loadImage(from: logoURL, into: profileImageView)
    }
}

상수

AdropUnitId

테스트용 유닛 ID 상수입니다.
struct AdropUnitId {
    // 배너 광고
    static let PUBLIC_TEST_UNIT_ID_320_50: String
    static let PUBLIC_TEST_UNIT_ID_320_100: String
    static let PUBLIC_TEST_UNIT_ID_CAROUSEL: String
    static let PUBLIC_TEST_UNIT_ID_BANNER_VIDEO_16_9: String
    static let PUBLIC_TEST_UNIT_ID_BANNER_VIDEO_9_16: String

    // 네이티브 광고
    static let PUBLIC_TEST_UNIT_ID_NATIVE_SMALL: String
    static let PUBLIC_TEST_UNIT_ID_NATIVE_MEDIUM: String
    static let PUBLIC_TEST_UNIT_ID_NATIVE_LARGE: String

    // 전면 광고
    static let PUBLIC_TEST_UNIT_ID_INTERSTITIAL: String

    // 리워드 광고
    static let PUBLIC_TEST_UNIT_ID_REWARDED: String

    // 팝업 광고
    static let PUBLIC_TEST_UNIT_ID_POPUP: String
    static let PUBLIC_TEST_UNIT_ID_POPUP_BOTTOM: String
    static let PUBLIC_TEST_UNIT_ID_POPUP_CENTER: String
    static let PUBLIC_TEST_UNIT_ID_POPUP_BOTTOM_VIDEO_9_16: String
    static let PUBLIC_TEST_UNIT_ID_POPUP_CENTER_VIDEO_9_16: String

    // 스플래시 광고
    static let PUBLIC_TEST_UNIT_ID_SPLASH: String
}
사용 예시:
let banner = AdropBanner(unitId: AdropUnitId.PUBLIC_TEST_UNIT_ID_320_100)
let carouselBanner = AdropBanner(unitId: AdropUnitId.PUBLIC_TEST_UNIT_ID_CAROUSEL)
let nativeAd = AdropNativeAd(unitId: AdropUnitId.PUBLIC_TEST_UNIT_ID_NATIVE_SMALL)
let interstitial = AdropInterstitialAd(unitId: AdropUnitId.PUBLIC_TEST_UNIT_ID_INTERSTITIAL)
let popup = AdropPopupAd(unitId: AdropUnitId.PUBLIC_TEST_UNIT_ID_POPUP_CENTER)
테스트 유닛 ID는 개발 환경에서만 사용하세요. 프로덕션에서는 반드시 콘솔에서 생성한 실제 유닛 ID를 사용해야 합니다.

추가 리소스