메인 콘텐츠로 건너뛰기

개요

Adrop Flutter SDK를 사용하면 Flutter 앱에서 다양한 광고 포맷을 쉽게 연동할 수 있습니다.

지원 광고 포맷

포맷설명
배너 광고화면 일부에 표시되는 직사각형 광고
네이티브 광고앱 콘텐츠와 자연스럽게 어우러지는 광고
전면 광고전체 화면을 덮는 광고
리워드 광고보상을 제공하는 전체 화면 광고
팝업 광고팝업 형태로 표시되는 광고

요구 사항

Flutter

  • Flutter SDK 3.3.0 이상
  • Dart SDK 2.18.0 이상

Android

  • API 레벨 23 (Android 6.0) 이상
  • compileSdkVersion 34
  • Kotlin 2.1.0 이상
  • Gradle 7.6.3 이상
  • Jetpack (AndroidX) 사용

iOS

  • iOS 13.0 이상
  • Swift 5.0 이상

설치

1. 패키지 설치

프로젝트 디렉토리에서 다음 명령어를 실행합니다.
flutter pub add adrop_ads_flutter

2. iOS 설정

ios/Podfile을 수정합니다.
ios/Podfile
use_frameworks!
Pod을 설치합니다.
cd ios && pod install --repo-update && cd ..

3. 설정 파일 추가

Android

  1. 애드컨트롤 콘솔에서 adrop_service.json 파일을 다운로드합니다.
  2. 파일을 android/app/src/main/assets/ 디렉토리에 복사합니다.
android/app/src/main/assets/adrop_service.json

iOS

  1. 애드컨트롤 콘솔에서 adrop_service.json 파일을 다운로드합니다.
  2. Xcode에서 프로젝트 루트에 파일을 추가합니다.
  3. 모든 타겟에 파일을 추가하도록 선택합니다.

초기화

앱 시작 시 SDK를 초기화합니다. 일반적으로 main.dart에서 호출합니다.
main.dart
import 'package:adrop_ads_flutter/adrop_ads_flutter.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatefulWidget {
  const MyApp({super.key});

  @override
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  @override
  void initState() {
    super.initState();
    _initializeAdrop();
  }

  Future<void> _initializeAdrop() async {
    // false: 테스트 모드, true: 프로덕션 모드
    await Adrop.initialize(false);
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: HomeScreen(),
    );
  }
}

초기화 옵션

await Adrop.initialize(
  production,        // bool: 프로덕션 모드 여부
  targetCountries: targetCountries,   // List<String>?: 타겟 국가 코드 배열 (선택)
  useInAppBrowser: useInAppBrowser    // bool?: iOS 인앱 브라우저 사용 여부 (선택)
);
파라미터
파라미터타입필수설명
productionboolYtrue: 프로덕션 모드, false: 테스트 모드
targetCountriesList<String>N광고를 표시할 국가 코드 (예: ['KR', 'US'])
useInAppBrowserboolNiOS에서 인앱 브라우저 사용 여부 (기본값: false)
예제
// 기본 초기화 (테스트 모드)
await Adrop.initialize(false);

// 프로덕션 모드 + 특정 국가 타겟팅
await Adrop.initialize(true, targetCountries: ['KR', 'JP', 'US']);

// 프로덕션 모드 + iOS 인앱 브라우저 사용
await Adrop.initialize(true, useInAppBrowser: true);

테마 설정

광고 UI 테마를 설정합니다.
import 'package:adrop_ads_flutter/adrop_ads_flutter.dart';

// 테마 설정
await Adrop.setTheme(AdropTheme.auto);  // 시스템 설정 따름
await Adrop.setTheme(AdropTheme.light); // 라이트 모드
await Adrop.setTheme(AdropTheme.dark);  // 다크 모드
테마설명
AdropTheme.auto시스템 설정에 따라 자동 전환
AdropTheme.light라이트 모드
AdropTheme.dark다크 모드

사용자 식별자 설정

타겟팅 광고를 위해 사용자 식별자(UID)를 설정합니다.
import 'package:adrop_ads_flutter/adrop_ads_flutter.dart';

// 사용자 로그인 후
await Adrop.setUID('user_123');

// 로그아웃 시
await Adrop.setUID('');
UID는 SHA-256으로 해시되어 전송됩니다. 이메일, 전화번호 등 개인정보를 직접 전달하지 마세요.

테스트 유닛 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로 교체하세요.

에러 코드

SDK에서 발생할 수 있는 에러 코드입니다.
에러 코드설명
network네트워크 오류
internal내부 오류
initializeSDK 초기화 오류
invalidUnit유효하지 않은 유닛 ID
notTargetCountry타겟 국가가 아님
inactive비활성화된 광고
adNoFill노출할 광고 없음
adLoadDuplicate중복 로드 요청
adLoading로드 진행 중
adEmpty빈 광고
adShown이미 표시된 광고
adHideForToday오늘 숨김 처리된 광고
adLandscapeUnsupported가로 모드 미지원
backfillNoFill백필 광고 없음
import 'package:adrop_ads_flutter/adrop_ads_flutter.dart';

// 에러 처리 예시
if (errorCode == AdropErrorCode.adNoFill) {
  debugPrint('노출할 광고가 없습니다.');
}

문제 해결

iOS 빌드 오류

Swift 버전 호환성 문제가 발생할 경우, ios/Podfilepost_install 블록에 다음을 추가하세요.
ios/Podfile
post_install do |installer|
  installer.pods_project.targets.each do |target|
    target.build_configurations.each do |config|
      config.build_settings['BUILD_LIBRARY_FOR_DISTRIBUTION'] = 'YES'
    end
  end
end

Android 빌드 오류

Kotlin 버전이 맞지 않는 경우, android/build.gradle에서 Kotlin 버전을 확인하세요.
android/build.gradle
buildscript {
    ext.kotlin_version = '2.1.0'
}

다음 단계