nestads_sdk_flutter_plugin 0.1.4-dev.1
nestads_sdk_flutter_plugin: ^0.1.4-dev.1 copied to clipboard
Official NestAds SDK for Flutter. Banner, popup, and splash ads with native Android and iOS integration.
nestads_sdk_flutter_plugin #
NestAds SDK의 공식 Flutter 플러그인. 네이티브 Android/iOS SDK를 기반으로 배너, 팝업, 스플래시 광고를 지원합니다.
주요 기능 #
- 배너(Banner) — FLUID / FILL / 고정 크기(FIXED) 이미지 배너 광고
- 팝업(Popup) — 좌/우 버튼을 구성할 수 있는 팝업 광고
- 스플래시(Splash) — 1~5초 동안 노출되는 이미지 또는 비디오 스플래시 광고
- 와이드 스플래시(Wide Splash) (Android 전용) — 비디오 지원 풀스크린 스플래시
- Imperative 컨트롤러 — 네이티브 뷰를 재생성하지 않고도 광고를 다시 로드
- 타입 안전한 옵션 — 포맷별 전용 옵션 클래스로 설정
요구 사항 #
| 플랫폼 | 버전 |
|---|---|
| iOS | 12.0 이상 (Xcode 16+, Swift 5.9+) |
| Android | minSdkVersion 21, compileSdkVersion 33+, Kotlin 1.9+ |
| Flutter | 3.3.0 이상 |
설치 #
dependencies:
nestads_sdk_flutter_plugin: ^0.1.0
Android 설정 #
프로젝트 레벨 android/settings.gradle에 NestAds Maven 저장소를 추가하세요:
dependencyResolutionManagement {
repositories {
google()
mavenCentral()
maven { url 'https://nexus.wisebirds.ai/repository/releases/' }
}
}
iOS 설정 #
ios/Runner/Info.plist에 ATT 권한을 추가하세요:
<key>NSUserTrackingUsageDescription</key>
<string>사용자 트래킹 사용 목적을 기재해주세요.</string>
앱 실행 시 트래킹 권한을 요청합니다:
import AppTrackingTransparency
ATTrackingManager.requestTrackingAuthorization { _ in }
빠른 시작 #
배너 (Banner) #
import 'package:nestads_sdk_flutter_plugin/nestads_sdk_flutter_plugin.dart';
final controller = NestAdsBannerController();
NestAdsBanner(
placementCode: 'SAMPLE_IMAGE_BANNER/320/50',
adSize: NestAdsAdSize(320, 50),
// 배너 옵션 — 웹 SDK의 setConfig({ banner: { ... } })와 동일한 키 사용
options: {
'backgroundColor': '#FFFFFF',
// 'radius': 4, 'backgroundOpacity': 0.8, ...
},
// 타겟팅 파라미터 — appVersion(iOS only)/country/language/gender/age/
// publisherProvidedID/customTargeting/audienceParameters/
// httpTimeoutMillis(Android only)
targeting: {
'country': 'KR',
'age': 25,
},
controller: controller,
onAdLoaded: () => print('로드 완료'),
onAdImpression: (isLogSent) => print('노출 $isLogSent'),
onAdClicked: (isLogSent) => print('클릭 $isLogSent'),
);
// 위젯을 재빌드하지 않고 다시 로드
controller.loadAd();
팝업 (Popup) #
final controller = NestAdsPopupController();
NestAdsPopup(
placementCode: 'SAMPLE_POPUP_BANNER_APP',
options: NestAdsPopupOptions(maxNumberOfAds: 5),
controller: controller,
onLeftButtonClicked: () => controller.dismissPopup(),
onRightButtonClicked: () => controller.dismissPopup(),
);
스플래시 (Splash) #
NestAdsSplash(
placementCode: 'SAMPLE_SPLASH',
duration: 3,
options: NestAdsSplashOptions(
backgroundDurationPolicy: BackgroundBehaviorPolicy.continue_,
videoPlayCondition: VideoPlayCondition.autoStart,
),
onAdReachedDuration: () => Navigator.pushReplacement(
context, MaterialPageRoute(builder: (_) => HomePage()),
),
);
와이드 스플래시 (Wide Splash, Android 전용) #
NestAdsWideSplash(
placementCode: 'SAMPLE_SPLASH_WIDE_VIDEO',
duration: 3,
options: NestAdsWideSplashOptions(
fallbackLogoResId: R.mipmap.ic_launcher,
),
onAdReachedDuration: () => navigateToMain(),
);
광고 크기 지정 #
NestAdsAdSize(320, 50) // FIXED — 지정한 크기로 고정
NestAdsAdSize.fluid // FLUID — 부모 너비에 맞춰 확장
NestAdsAdSize.fill // FILL — 전체 화면
호환성 매트릭스 #
| Plugin | Android SDK | iOS SDK |
|---|---|---|
| 0.1.x | 2.13.0 | 2.13.0 |
라이선스 #
MIT