클래스
Adrop
SDK의 메인 클래스입니다. SDK 초기화 및 전역 설정을 관리합니다.
정적 메서드
| 메서드 | 반환 타입 | 설명 |
|---|
initialize(production:useInAppBrowser:targetCountries:) | void | SDK 초기화 |
setUID(_:) | void | 사용자 식별자 설정 |
setTheme(_:) | void | 앱 테마 설정 |
handleDeepLink(url:) | Bool | 딥링크 처리 |
openQuest(channel:path:) | void | Quest 화면 열기 |
정적 속성
| 속성 | 타입 | 설명 |
|---|
sdkVersion | String | SDK 버전 (읽기 전용) |
초기화 메서드
static func initialize(
production: String,
useInAppBrowser: Bool = true,
targetCountries: [String]? = nil
)
인앱 브라우저 사용 여부. true일 경우 광고 클릭 시 앱 내에서 열림
타겟 국가 코드 배열 (예: [“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)
사용자를 식별할 수 있는 고유 ID (최대 100자)
사용 예시:
Adrop.setUID("user_12345")
테마 설정
static func setTheme(_ theme: AdropTheme)
사용 예시:
AdropBanner
배너 광고를 표시하는 클래스입니다. UIView를 상속받습니다.
초기화
애드컨트롤 콘솔에서 생성한 배너 광고 유닛 ID
메서드
| 메서드 | 반환 타입 | 설명 |
|---|
load() | void | 광고 요청 및 로드 |
| 속성 | 타입 | 설명 |
|---|
unitId | String | 유닛 ID (읽기 전용) |
contextId | String? | 문맥 타겟팅 ID (읽기/쓰기) |
creativeSize | CGSize? | 광고 크리에이티브 크기 (읽기 전용) |
destinationURL | String? | 광고 목적지 URL (읽기 전용) |
delegate | AdropBannerDelegate? | 델리게이트 (읽기/쓰기) |
사용 예시:
let banner = AdropBanner(unitId: "YOUR_UNIT_ID")
banner.contextId = "article_123"
banner.delegate = self
banner.load()
AdropNativeAd
네이티브 광고 데이터를 관리하는 클래스입니다.
초기화
애드컨트롤 콘솔에서 생성한 네이티브 광고 유닛 ID
메서드
| 메서드 | 반환 타입 | 설명 |
|---|
load() | void | 광고 요청 및 로드 |
| 속성 | 타입 | 설명 |
|---|
headline | String? | 광고 제목 (읽기 전용) |
body | String? | 광고 본문 (읽기 전용) |
callToAction | String? | 행동 유도 버튼 텍스트 (읽기 전용) |
asset | String? | 메인 이미지 URL (읽기 전용) |
profile | AdropProfile? | 광고주 프로필 (읽기 전용) |
extra | [String: String]? | 추가 텍스트 필드 (읽기 전용) |
contextId | String? | 문맥 타겟팅 ID (읽기/쓰기) |
delegate | AdropNativeAdDelegate? | 델리게이트 (읽기/쓰기) |
사용 예시:
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
전면 광고를 표시하는 클래스입니다.
초기화
애드컨트롤 콘솔에서 생성한 전면 광고 유닛 ID
메서드
| 메서드 | 반환 타입 | 설명 |
|---|
load() | void | 광고 사전 로드 |
show(fromRootViewController:) | void | 광고 표시 |
show 메서드
func show(fromRootViewController viewController: UIViewController)
| 속성 | 타입 | 설명 |
|---|
delegate | AdropInterstitialAdDelegate? | 델리게이트 (읽기/쓰기) |
isLoaded | Bool | 광고가 로드되었는지 여부 (읽기 전용) |
contextId | String? | 문맥 타겟팅 ID (읽기/쓰기) |
사용 예시:
let interstitial = AdropInterstitialAd(unitId: "YOUR_UNIT_ID")
interstitial.delegate = self
interstitial.load()
// 광고가 로드된 후
if interstitial.isLoaded {
interstitial.show(fromRootViewController: self)
}
AdropRewardedAd
리워드 광고를 표시하는 클래스입니다.
초기화
애드컨트롤 콘솔에서 생성한 리워드 광고 유닛 ID
메서드
| 메서드 | 반환 타입 | 설명 |
|---|
load() | void | 광고 사전 로드 |
show(fromRootViewController:userDidEarnRewardHandler:) | void | 광고 표시 및 리워드 핸들러 설정 |
show 메서드
func show(
fromRootViewController viewController: UIViewController,
userDidEarnRewardHandler: @escaping () -> Void
)
| 속성 | 타입 | 설명 |
|---|
delegate | AdropRewardedAdDelegate? | 델리게이트 (읽기/쓰기) |
isLoaded | Bool | 광고가 로드되었는지 여부 (읽기 전용) |
contextId | String? | 문맥 타겟팅 ID (읽기/쓰기) |
사용 예시:
let rewardedAd = AdropRewardedAd(unitId: "YOUR_UNIT_ID")
rewardedAd.delegate = self
rewardedAd.load()
// 광고가 로드된 후
if rewardedAd.isLoaded {
rewardedAd.show(fromRootViewController: self) {
print("사용자가 리워드를 획득했습니다!")
// 리워드 지급 로직
}
}
팝업 광고를 표시하는 클래스입니다.
초기화
애드컨트롤 콘솔에서 생성한 팝업 광고 유닛 ID
메서드
| 메서드 | 반환 타입 | 설명 |
|---|
load() | void | 광고 사전 로드 |
show(fromRootViewController:) | void | 광고 표시 |
show 메서드
func show(fromRootViewController viewController: UIViewController)
| 속성 | 타입 | 설명 |
|---|
delegate | AdropPopupAdDelegate? | 광고 이벤트 델리게이트 (읽기/쓰기) |
closeDelegate | AdropPopupAdCloseDelegate? | 닫기 이벤트 델리게이트 (읽기/쓰기) |
isLoaded | Bool | 광고가 로드되었는지 여부 (읽기 전용) |
contextId | String? | 문맥 타겟팅 ID (읽기/쓰기) |
사용 예시:
let popupAd = AdropPopupAd(unitId: "YOUR_UNIT_ID")
popupAd.delegate = self
popupAd.closeDelegate = self
popupAd.load()
// 광고가 로드된 후
if popupAd.isLoaded {
popupAd.show(fromRootViewController: self)
}
AdropSplashAd
스플래시 광고를 관리하는 클래스입니다.
초기화
애드컨트롤 콘솔에서 생성한 스플래시 광고 유닛 ID
메서드
| 메서드 | 반환 타입 | 설명 |
|---|
load() | void | 광고 사전 로드 |
AdropSplashAdViewController
스플래시 광고를 전체 화면으로 표시하는 뷰 컨트롤러입니다.
초기화
init(unitId: String, backgroundColor: UIColor? = nil)
애드컨트롤 콘솔에서 생성한 스플래시 광고 유닛 ID
| 속성 | 타입 | 설명 |
|---|
delegate | AdropSplashAdDelegate? | 델리게이트 (읽기/쓰기) |
displayDuration | TimeInterval | 광고 표시 시간 (기본값: 5초, 읽기/쓰기) |
logoImage | UIImage? | 하단에 표시할 로고 이미지 (읽기/쓰기) |
사용 예시:
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를 상속받습니다.
초기화
애드컨트롤 콘솔에서 생성한 스플래시 광고 유닛 ID
메서드
| 메서드 | 반환 타입 | 설명 |
|---|
load() | void | 광고 요청 및 로드 |
| 속성 | 타입 | 설명 |
|---|
delegate | AdropSplashAdDelegate? | 델리게이트 (읽기/쓰기) |
AdropMetrics
사용자 속성 및 이벤트를 관리하는 클래스입니다.
정적 메서드
| 메서드 | 반환 타입 | 설명 |
|---|
setProperty(key:value:) | void | 사용자 속성 설정 |
logEvent(name:params:) | void | 커스텀 이벤트 로깅 |
사용자 속성 설정
static func setProperty(key: String, value: Any)
속성 값 (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)
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)
광고가 닫혔을 때 호출됩니다.
팝업 광고의 생명주기 이벤트를 처리하는 프로토콜입니다.
필수 메서드
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)
광고가 닫혔을 때 호출됩니다.
팝업 광고의 닫기 관련 이벤트를 처리하는 프로토콜입니다.
선택 메서드
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
광고 로드 및 표시 중 발생할 수 있는 에러 코드입니다.
| 케이스 | 코드 값 | 설명 |
|---|
ERROR_CODE_NETWORK | 1000 | 네트워크 오류 |
ERROR_CODE_INTERNAL | 2000 | 내부 오류 |
ERROR_CODE_INITIALIZE | 3000 | SDK 초기화 실패 |
ERROR_CODE_INVALID_UNIT | 4000 | 잘못된 유닛 ID |
ERROR_CODE_NOT_TARGET_COUNTRY | 4010 | 타겟 국가가 아님 |
ERROR_CODE_AD_INACTIVE | 4100 | 활성 캠페인 없음 |
ERROR_CODE_AD_NO_FILL | 4200 | 노출 가능한 광고 없음 |
ERROR_CODE_AD_LOAD_DUPLICATED | 5000 | 중복된 광고 로드 요청 |
ERROR_CODE_AD_LOADING | 5001 | 광고 로딩 중 |
ERROR_CODE_AD_EMPTY | 5002 | 광고가 로드되지 않음 |
ERROR_CODE_AD_SHOWN | 5003 | 광고가 이미 표시됨 |
ERROR_CODE_AD_HIDE_FOR_TODAY | 5100 | 오늘 하루 보지 않기 설정됨 |
ERROR_CODE_ACCOUNT_USAGE_LIMIT_EXCEEDED | 6000 | 계정 사용량 한도 초과 |
ERROR_CODE_LANDSCAPE_UNSUPPORTED | 7000 | 가로 모드 미지원 |
ERROR_CODE_AD_BACKFILL_NO_FILL | 8000 | 백필 광고 없음 |
에러 코드별 설명
네트워크 관련
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
앱의 테마 설정을 나타내는 열거형입니다.
| 케이스 | 설명 |
|---|
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를 사용해야 합니다.
추가 리소스