Adrop
Adrop SDK의 메인 클래스입니다. SDK 초기화 및 전역 설정을 담당합니다.
정적 메서드
| 메서드 | 설명 |
|---|
initialize(bool production, {List<String>? targetCountries, bool? useInAppBrowser}) | SDK를 초기화합니다 |
setUID(String uid) | 사용자 식별자를 설정합니다 (SHA-256으로 해시됨) |
setTheme(AdropTheme theme) | 광고 테마를 설정합니다 |
사용 예시
import 'package:adrop_ads_flutter/adrop_ads_flutter.dart';
// 기본 초기화 (테스트 모드)
await Adrop.initialize(false);
// 프로덕션 모드 + 타겟 국가 설정
await Adrop.initialize(
true,
targetCountries: ['KR', 'JP', 'US'],
);
// 사용자 ID 설정
await Adrop.setUID('user123');
// 테마 설정
await Adrop.setTheme(AdropTheme.dark);
AdropTheme
광고의 다크 모드 설정을 위한 열거형입니다.
| 값 | 설명 |
|---|
light | 라이트 모드 |
dark | 다크 모드 |
auto | 시스템 설정 자동 따르기 (기본값) |
사용 예시
await Adrop.setTheme(AdropTheme.dark);
AdropErrorCode
광고 로드 및 표시 시 발생할 수 있는 오류 코드입니다.
| 에러 코드 | 코드 문자열 | 설명 |
|---|
network | ERROR_CODE_NETWORK | 네트워크 오류 |
internal | ERROR_CODE_INTERNAL | 내부 오류 |
initialize | ERROR_CODE_INITIALIZE | SDK 초기화 오류 |
invalidUnit | ERROR_CODE_INVALID_UNIT | 잘못된 광고 유닛 ID |
notTargetCountry | ERROR_CODE_NOT_TARGET_COUNTRY | 타겟 국가가 아님 |
inactive | ERROR_CODE_AD_INACTIVE | 비활성화된 광고 |
adNoFill | ERROR_CODE_AD_NO_FILL | 노출 가능한 광고 없음 |
adLoadDuplicate | ERROR_CODE_AD_LOAD_DUPLICATED | 중복된 광고 로드 요청 |
adLoading | ERROR_CODE_AD_LOADING | 광고 로딩 중 |
adEmpty | ERROR_CODE_AD_EMPTY | 광고가 비어있음 |
adShown | ERROR_CODE_AD_SHOWN | 광고가 이미 표시됨 |
adHideForToday | ERROR_CODE_AD_HIDE_FOR_TODAY | 오늘 하루 보지 않기 설정됨 |
accountUsageLimitExceeded | ERROR_CODE_ACCOUNT_USAGE_LIMIT_EXCEEDED | 계정 사용 한도 초과 |
adLandscapeUnsupported | ERROR_CODE_LANDSCAPE_UNSUPPORTED | 가로 모드 미지원 |
backfillNoFill | ERROR_CODE_AD_BACKFILL_NO_FILL | 백필 광고도 없음 |
undefined | UNDEFINED | 정의되지 않은 오류 |
프로퍼티
| 프로퍼티 | 타입 | 설명 |
|---|
code | String | 에러 코드 문자열 |
팩토리 메서드
| 메서드 | 설명 |
|---|
AdropErrorCode.getByCode(String code) | 코드 문자열로 에러 코드 조회 |
AdropBannerView
배너 광고를 표시하는 위젯 클래스입니다.
생성자
AdropBannerView({
required String unitId,
AdropBannerListener? listener,
})
프로퍼티
| 프로퍼티 | 타입 | 설명 |
|---|
creativeSize | CreativeSize? | 크리에이티브 크기 |
adSize | Size? | 배너 뷰 크기 설정 |
메서드
| 메서드 | 반환 타입 | 설명 |
|---|
load() | Future<void> | 광고 로드 |
dispose() | Future<void> | 리소스 해제 |
사용 예시
late AdropBannerView bannerView;
@override
void initState() {
super.initState();
bannerView = AdropBannerView(
unitId: 'YOUR_UNIT_ID',
listener: AdropBannerListener(
onAdReceived: (unitId, metadata) {
setState(() => isLoaded = true);
},
onAdFailedToReceive: (unitId, errorCode) {
debugPrint('에러: ${errorCode.code}');
},
),
);
bannerView.load();
}
@override
void dispose() {
bannerView.dispose();
super.dispose();
}
AdropBannerListener
배너 광고 이벤트를 처리하는 리스너 클래스입니다.
생성자
AdropBannerListener({
void Function(String unitId, Map<String, dynamic>? metadata)? onAdReceived,
void Function(String unitId, Map<String, dynamic>? metadata)? onAdClicked,
void Function(String unitId, Map<String, dynamic>? metadata)? onAdImpression,
void Function(String unitId, AdropErrorCode errorCode)? onAdFailedToReceive,
})
| 콜백 | 파라미터 | 설명 |
|---|
onAdReceived | unitId, metadata | 광고 수신 성공 |
onAdClicked | unitId, metadata | 광고 클릭 |
onAdImpression | unitId, metadata | 광고 노출 |
onAdFailedToReceive | unitId, errorCode | 광고 수신 실패 |
메타데이터 필드
| 필드 | 타입 | 설명 |
|---|
creativeId | String | 크리에이티브 ID |
txId | String | 트랜잭션 ID |
campaignId | String | 캠페인 ID |
destinationURL | String | 목적지 URL |
creativeSizeWidth | double | 크리에이티브 너비 |
creativeSizeHeight | double | 크리에이티브 높이 |
AdropNativeAd
네이티브 광고를 요청하는 클래스입니다.
생성자
AdropNativeAd({
required String unitId,
bool useCustomClick = false,
AdropNativeListener? listener,
})
프로퍼티
| 프로퍼티 | 타입 | 설명 |
|---|
isLoaded | bool | 광고 로드 완료 여부 |
unitId | String | 광고 유닛 ID |
creativeId | String | 크리에이티브 ID |
txId | String | 트랜잭션 ID |
campaignId | String | 캠페인 ID |
destinationURL | String | 목적지 URL |
properties | AdropNativeProperties | 네이티브 광고 속성 |
creativeSize | CreativeSize | 크리에이티브 크기 |
isBackfilled | bool | 백필 광고 여부 |
메서드
| 메서드 | 반환 타입 | 설명 |
|---|
load() | Future<void> | 광고 로드 |
사용 예시
final nativeAd = AdropNativeAd(
unitId: 'YOUR_UNIT_ID',
useCustomClick: true,
listener: AdropNativeListener(
onAdReceived: (ad) {
debugPrint('광고 수신: ${ad.creativeId}');
},
onAdFailedToReceive: (ad, errorCode) {
debugPrint('에러: ${errorCode.code}');
},
),
);
await nativeAd.load();
AdropNativeAdView
네이티브 광고를 화면에 표시하는 위젯입니다.
생성자
AdropNativeAdView({
required AdropNativeAd? ad,
required Widget child,
})
사용 예시
AdropNativeAdView(
ad: nativeAd,
child: Container(
child: Column(
children: [
Text(nativeAd?.properties.headline ?? ''),
Text(nativeAd?.properties.body ?? ''),
],
),
),
)
AdropNativeListener
네이티브 광고 이벤트를 처리하는 리스너 클래스입니다.
생성자
AdropNativeListener({
void Function(AdropNativeAd ad)? onAdReceived,
void Function(AdropNativeAd ad)? onAdClicked,
void Function(AdropNativeAd ad)? onAdImpression,
void Function(AdropNativeAd ad, AdropErrorCode errorCode)? onAdFailedToReceive,
})
| 콜백 | 파라미터 | 설명 |
|---|
onAdReceived | ad | 광고 수신 성공 |
onAdClicked | ad | 광고 클릭 |
onAdImpression | ad | 광고 노출 |
onAdFailedToReceive | ad, errorCode | 광고 수신 실패 |
AdropNativeProperties
네이티브 광고의 콘텐츠 속성입니다.
프로퍼티
| 프로퍼티 | 타입 | 설명 |
|---|
headline | String? | 광고 제목 |
body | String? | 광고 본문 |
creative | String? | HTML 크리에이티브 콘텐츠 |
asset | String? | 이미지 에셋 URL |
destinationURL | String? | 클릭 시 이동할 URL |
callToAction | String? | CTA 버튼 텍스트 |
profile | AdropNativeProfile? | 광고주 프로필 정보 |
extra | Map<String, String> | 추가 커스텀 필드 |
isBackfilled | bool | 백필 광고 여부 |
AdropNativeProfile
네이티브 광고의 프로필 정보입니다.
프로퍼티
| 프로퍼티 | 타입 | 설명 |
|---|
displayName | String? | 광고주 이름 |
displayLogo | String? | 광고주 로고 이미지 URL |
AdropInterstitialAd
전면 광고를 표시하는 클래스입니다.
생성자
AdropInterstitialAd({
required String unitId,
AdropInterstitialListener? listener,
})
프로퍼티
| 프로퍼티 | 타입 | 설명 |
|---|
isLoaded | bool | 광고 로드 완료 여부 |
unitId | String | 광고 유닛 ID |
creativeId | String | 크리에이티브 ID |
txId | String | 트랜잭션 ID |
campaignId | String | 캠페인 ID |
destinationURL | String | 목적지 URL |
메서드
| 메서드 | 반환 타입 | 설명 |
|---|
load() | Future<void> | 광고 로드 |
show() | Future<void> | 광고 표시 |
dispose() | Future<void> | 리소스 해제 |
사용 예시
final interstitialAd = AdropInterstitialAd(
unitId: 'YOUR_UNIT_ID',
listener: AdropInterstitialListener(
onAdReceived: (ad) {
ad.show();
},
onAdFailedToReceive: (ad, errorCode) {
debugPrint('에러: ${errorCode.code}');
},
onAdDidDismissFullScreen: (ad) {
debugPrint('광고 닫힘');
},
),
);
await interstitialAd.load();
AdropInterstitialListener
전면 광고 이벤트를 처리하는 리스너 클래스입니다.
생성자
AdropInterstitialListener({
void Function(AdropAd ad)? onAdReceived,
void Function(AdropAd ad)? onAdClicked,
void Function(AdropAd ad)? onAdImpression,
void Function(AdropAd ad)? onAdWillPresentFullScreen,
void Function(AdropAd ad)? onAdDidPresentFullScreen,
void Function(AdropAd ad)? onAdWillDismissFullScreen,
void Function(AdropAd ad)? onAdDidDismissFullScreen,
void Function(AdropAd ad, AdropErrorCode errorCode)? onAdFailedToReceive,
void Function(AdropAd ad, AdropErrorCode errorCode)? onAdFailedToShowFullScreen,
})
| 콜백 | 설명 |
|---|
onAdReceived | 광고 수신 성공 |
onAdClicked | 광고 클릭 |
onAdImpression | 광고 노출 |
onAdWillPresentFullScreen | 광고 표시 시작 (iOS 전용) |
onAdDidPresentFullScreen | 광고 표시 완료 |
onAdWillDismissFullScreen | 광고 닫기 시작 (iOS 전용) |
onAdDidDismissFullScreen | 광고 닫기 완료 |
onAdFailedToReceive | 광고 수신 실패 |
onAdFailedToShowFullScreen | 광고 표시 실패 |
AdropRewardedAd
보상형 광고를 표시하는 클래스입니다.
생성자
AdropRewardedAd({
required String unitId,
AdropRewardedListener? listener,
})
프로퍼티
| 프로퍼티 | 타입 | 설명 |
|---|
isLoaded | bool | 광고 로드 완료 여부 |
unitId | String | 광고 유닛 ID |
creativeId | String | 크리에이티브 ID |
txId | String | 트랜잭션 ID |
campaignId | String | 캠페인 ID |
destinationURL | String | 목적지 URL |
메서드
| 메서드 | 반환 타입 | 설명 |
|---|
load() | Future<void> | 광고 로드 |
show() | Future<void> | 광고 표시 |
dispose() | Future<void> | 리소스 해제 |
사용 예시
final rewardedAd = AdropRewardedAd(
unitId: 'YOUR_UNIT_ID',
listener: AdropRewardedListener(
onAdReceived: (ad) {
ad.show();
},
onAdEarnRewardHandler: (ad, type, amount) {
// 보상 지급
debugPrint('보상: 타입=$type, 수량=$amount');
},
),
);
await rewardedAd.load();
AdropRewardedListener
보상형 광고 이벤트를 처리하는 리스너 클래스입니다.
생성자
AdropRewardedListener({
void Function(AdropAd ad)? onAdReceived,
void Function(AdropAd ad)? onAdClicked,
void Function(AdropAd ad)? onAdImpression,
void Function(AdropAd ad)? onAdWillPresentFullScreen,
void Function(AdropAd ad)? onAdDidPresentFullScreen,
void Function(AdropAd ad)? onAdWillDismissFullScreen,
void Function(AdropAd ad)? onAdDidDismissFullScreen,
void Function(AdropAd ad, AdropErrorCode errorCode)? onAdFailedToReceive,
void Function(AdropAd ad, AdropErrorCode errorCode)? onAdFailedToShowFullScreen,
void Function(AdropAd ad, int type, int amount)? onAdEarnRewardHandler,
})
| 콜백 | 설명 |
|---|
onAdReceived | 광고 수신 성공 |
onAdClicked | 광고 클릭 |
onAdImpression | 광고 노출 |
onAdWillPresentFullScreen | 광고 표시 시작 (iOS 전용) |
onAdDidPresentFullScreen | 광고 표시 완료 |
onAdWillDismissFullScreen | 광고 닫기 시작 (iOS 전용) |
onAdDidDismissFullScreen | 광고 닫기 완료 |
onAdFailedToReceive | 광고 수신 실패 |
onAdFailedToShowFullScreen | 광고 표시 실패 |
onAdEarnRewardHandler | 보상 획득 |
팝업 광고를 표시하는 클래스입니다.
생성자
AdropPopupAd({
required String unitId,
AdropPopupListener? listener,
Color? closeTextColor,
Color? hideForTodayTextColor,
Color? backgroundColor,
})
프로퍼티
| 프로퍼티 | 타입 | 설명 |
|---|
isLoaded | bool | 광고 로드 완료 여부 |
unitId | String | 광고 유닛 ID |
creativeId | String | 크리에이티브 ID |
txId | String | 트랜잭션 ID |
campaignId | String | 캠페인 ID |
destinationURL | String | 목적지 URL |
closeTextColor | Color? | 닫기 버튼 텍스트 색상 |
hideForTodayTextColor | Color? | ”오늘 하루 보지 않기” 텍스트 색상 |
backgroundColor | Color? | 버튼 배경 색상 |
메서드
| 메서드 | 반환 타입 | 설명 |
|---|
load() | Future<void> | 광고 로드 |
show() | Future<void> | 광고 표시 |
close() | Future<void> | 광고 닫기 |
dispose() | Future<void> | 리소스 해제 |
사용 예시
final popupAd = AdropPopupAd(
unitId: 'YOUR_UNIT_ID',
closeTextColor: Colors.white,
backgroundColor: Colors.black87,
listener: AdropPopupListener(
onAdReceived: (ad) {
ad.show();
},
),
);
await popupAd.load();
팝업 광고 이벤트를 처리하는 리스너 클래스입니다.
생성자
AdropPopupListener({
void Function(AdropAd ad)? onAdReceived,
void Function(AdropAd ad)? onAdClicked,
void Function(AdropAd ad)? onAdImpression,
void Function(AdropAd ad)? onAdWillPresentFullScreen,
void Function(AdropAd ad)? onAdDidPresentFullScreen,
void Function(AdropAd ad)? onAdWillDismissFullScreen,
void Function(AdropAd ad)? onAdDidDismissFullScreen,
void Function(AdropAd ad, AdropErrorCode errorCode)? onAdFailedToReceive,
void Function(AdropAd ad, AdropErrorCode errorCode)? onAdFailedToShowFullScreen,
})
AdropMetrics
사용자 속성 및 이벤트를 관리하는 클래스입니다.
정적 메서드
| 메서드 | 반환 타입 | 설명 |
|---|
setProperty(String key, dynamic value) | Future<void> | 사용자 속성 설정 |
logEvent(String name, [dynamic params]) | Future<void> | 이벤트 로깅 |
properties() | Future<Map<String, dynamic>> | 모든 속성 조회 |
사용 예시
import 'package:adrop_ads_flutter/adrop_ads_flutter.dart';
// 속성 설정
await AdropMetrics.setProperty('membership_level', 'premium');
await AdropMetrics.setProperty('age', 25);
await AdropMetrics.setProperty('is_subscriber', true);
// 속성 제거
await AdropMetrics.setProperty('membership_level', null);
// 이벤트 로깅
await AdropMetrics.logEvent('purchase', {
'item_id': 'SKU_001',
'price': 29900,
});
// 모든 속성 조회
final props = await AdropMetrics.properties();
debugPrint('속성: $props');
CreativeSize
크리에이티브의 크기를 나타내는 클래스입니다.
생성자
const CreativeSize({
required double width,
required double height,
})
프로퍼티
| 프로퍼티 | 타입 | 설명 |
|---|
width | double | 너비 |
height | double | 높이 |
테스트 유닛 ID
개발 및 테스트 시 사용할 수 있는 유닛 ID입니다.
| 포맷 | 테스트 유닛 ID |
|---|
| 배너 (320x50) | PUBLIC_TEST_UNIT_ID_320_50 |
| 배너 (320x100) | PUBLIC_TEST_UNIT_ID_320_100 |
| 네이티브 | PUBLIC_TEST_UNIT_ID_NATIVE |
| 전면 광고 | PUBLIC_TEST_UNIT_ID_INTERSTITIAL |
| 리워드 광고 | PUBLIC_TEST_UNIT_ID_REWARDED |
| 팝업 광고 (하단) | PUBLIC_TEST_UNIT_ID_POPUP_BOTTOM |
| 팝업 광고 (중앙) | PUBLIC_TEST_UNIT_ID_POPUP_CENTER |
| 스플래시 광고 | PUBLIC_TEST_UNIT_ID_SPLASH |
프로덕션 배포 전에 반드시 실제 유닛 ID로 교체하세요.