시작하기 전에
중요: SDK 초기화 필수 배너 광고와 네이티브 광고는 반드시 SDK 초기화가 완료된 후에 렌더링되어야 합니다. 초기화 전 광고 위젯을 렌더링하면 광고가 정상적으로 표시되지 않습니다. 전면 광고, 보상형 광고 등 다른 광고 형식도 SDK 초기화 이후에 로드해야 합니다.
Daro Flutter SDK는 현재 Non-reward 앱만 지원 합니다.
Flutter 프로젝트에 Daro SDK를 통합하기 전에 필요한 사항들을 확인하세요.
요구사항
Flutter SDK ^3.24.0
Dart ^3.5.0
Android minSdkVersion : 23
iOS 13.0 이상
앱 설정하기
패키지 추가하기
pubspec.yaml에 daro_flutter 패키지를 추가합니다.
dependencies :
daro_flutter : ^1.0.0
터미널에서 패키지를 설치합니다.
Android 프로젝트 설정하기
Android minSdkVersion : 23
minSdk 26 미만일 경우 Desugaring 설정을 필요로 합니다. android {
.. .
compileOptions {
isCoreLibraryDesugaringEnabled = true
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
}
.. .
}
.. .
dependencies {
.. .
coreLibraryDesugaring ( "com.android.tools:desugar_jdk_libs:2.0.4" )
.. .
}
프로젝트 단위 빌드 설정
build.gradle(root) 파일의 allprojects 블록에 maven repository 들을 추가합니다.
allprojects {
repositories {
google ()
mavenCentral ()
maven { url = uri ( "https://artifact.bytedance.com/repository/pangle" ) }
maven { url = uri ( "https://verve.jfrog.io/artifactory/verve-gradle-release" ) }
maven { url = uri ( "https://cboost.jfrog.io/artifactory/chartboost-ads/" ) }
maven { url = uri ( "https://repo.premiumads.net/artifactory/mobile-ads-sdk/" ) }
maven { url = uri ( "https://repo.pubmatic.com/artifactory/public-repos" ) }
maven { url = uri ( "https://s3.amazonaws.com/smaato-sdk-releases/" ) }
maven { url = uri ( "https://android-sdk.is.com/" ) }
maven { url = uri ( "https://dl-maven-android.mintegral.com/repository/mbridge_android_sdk_oversea" ) }
}
}
build.gradle(root)에 daro 플러그인 추가
build.gradle(root) 파일에 daro 관련 플러그인을 추가합니다.
buildscript {
repositories {
google ()
mavenCentral ()
}
dependencies {
classpath ( "so.daro:daro-plugin:1.0.13" )
}
}
Daro SDK 추가
android/app/build.gradle에 Daro SDK를 추가합니다.
dependencies {
.. .
implementation ( "so.daro:daro-a:1.4.2" )
.. .
}
android-daro-key.txt 파일 추가
android-daro-key.txt 파일을 추가합니다.
android/app/
└── android-daro-key.txt
android/app/
└── src/
├── EnvA/
│ └── android-daro-key.txt
└── EnvB/
└── android-daro-key.txt
android-daro-key.txt는 DARO 대시보드에서 다운받을 수 있습니다.
daroAppKey 설정
daroAppKey 를 설정합니다.
표시 gradle.properties 에 설정하기
android.useAndroidX =true
android.enableJetifier =true
daroAppKey ={APP_KEY}
표시 app 모듈 gradle에 직접 설정하기
app 모듈 build.gradle에 아래와 같이 설정합니다. buildscript {
extra[ "daroAppKey" ] = "APP_KEY"
}
표시 gradle.properties 에 설정하기
android.useAndroidX =true
android.enableJetifier =true
daroAppKey.EnvA ={APP_KEY}
daroAppKey.EnvB ={APP_KEY}
표시 app 모듈 gradle에 직접 설정하기
app 모듈 build.gradle에 아래와 같이 설정합니다. buildscript {
extra[ "daroAppKey.EnvA" ] = "APP_KEY"
extra[ "daroAppKey.EnvB" ] = "APP_KEY"
}
Flavor 첫 글자를 반드시 대문자로 입력해주세요
daroAppKey는 DARO 대시보드에서 확인할 수 있습니다.
build.gradle(app)에 daro plugin 적용
build.gradle(app)에 daro plugin을 적용합니다.
plugins {
.. .
id ( "so.daro.a" )
.. .
}
iOS 프로젝트 설정하기
iOS 13.0 이상
Xcode 14.0 이상
Pod 설치
Flutter 프로젝트의 ios/ 디렉토리에서 pod install을 실행합니다.
ios-daro-key.txt 파일 추가
ios/Runner.xcworkspace를 열고 ios-daro-key.txt 파일을 드래그 앤 드롭으로 추가합니다.
SDK를 초기화하기 위해서는 ios-daro-key.txt 파일이 프로젝트에 반드시 포함되어야 합니다.
ios-daro-key.txt는 DARO 대시보드에서 다운받을 수 있습니다.
Info.plist 설정
Info.plist에 다음 ID들을 추가합니다.
GADApplicationIdentifier, DaroAppKey 는 DARO 대시보드에서 ( AdMob Key, App Key ) 확인할 수 있습니다.
❗ Info.plist 의 SKAdNetworkItems 들을 앱의 Info.plist 에 복사해 넣어주세요. 등록하지 않으면 광고 네트워크가 전환 성과를 보고 받지 못해 광고 효율이 낮아집니다. 광고 퍼포먼스에 큰 영향을 주기때문에 꼭! 넣어주세요.
< key > GADApplicationIdentifier </ key >
< string > /* Daro 대시보드에서 발급받은 Admob Key 추가 */ </ string >
< key > DaroAppKey </ key >
< string > /* Daro 대시보드에서 발급받은 Daro App Key 추가 */ </ string >
< key > SKAdNetworkItems </ key >
< array >
< dict >
< key > SKAdNetworkIdentifier </ key >
< string > cstr6suwn9.skadnetwork </ string >
</ dict >
< dict >
< key > SKAdNetworkIdentifier </ key >
< string > 4fzdc2evr5.skadnetwork </ string >
</ dict >
< dict >
< key > SKAdNetworkIdentifier </ key >
< string > 4pfyvq9l8r.skadnetwork </ string >
</ dict >
< dict >
< key > SKAdNetworkIdentifier </ key >
< string > 2fnua5tdw4.skadnetwork </ string >
</ dict >
< dict >
< key > SKAdNetworkIdentifier </ key >
< string > ydx93a7ass.skadnetwork </ string >
</ dict >
< dict >
< key > SKAdNetworkIdentifier </ key >
< string > 5a6flpkh64.skadnetwork </ string >
</ dict >
< dict >
< key > SKAdNetworkIdentifier </ key >
< string > p78axxw29g.skadnetwork </ string >
</ dict >
< dict >
< key > SKAdNetworkIdentifier </ key >
< string > v72qych5uu.skadnetwork </ string >
</ dict >
< dict >
< key > SKAdNetworkIdentifier </ key >
< string > ludvb6z3bs.skadnetwork </ string >
</ dict >
< dict >
< key > SKAdNetworkIdentifier </ key >
< string > cp8zw746q7.skadnetwork </ string >
</ dict >
< dict >
< key > SKAdNetworkIdentifier </ key >
< string > 3sh42y64q3.skadnetwork </ string >
</ dict >
< dict >
< key > SKAdNetworkIdentifier </ key >
< string > c6k4g5qg8m.skadnetwork </ string >
</ dict >
< dict >
< key > SKAdNetworkIdentifier </ key >
< string > s39g8k73mm.skadnetwork </ string >
</ dict >
< dict >
< key > SKAdNetworkIdentifier </ key >
< string > 3qy4746246.skadnetwork </ string >
</ dict >
< dict >
< key > SKAdNetworkIdentifier </ key >
< string > f38h382jlk.skadnetwork </ string >
</ dict >
< dict >
< key > SKAdNetworkIdentifier </ key >
< string > hs6bdukanm.skadnetwork </ string >
</ dict >
< dict >
< key > SKAdNetworkIdentifier </ key >
< string > v4nxqhlyqp.skadnetwork </ string >
</ dict >
< dict >
< key > SKAdNetworkIdentifier </ key >
< string > wzmmz9fp6w.skadnetwork </ string >
</ dict >
< dict >
< key > SKAdNetworkIdentifier </ key >
< string > yclnxrl5pm.skadnetwork </ string >
</ dict >
< dict >
< key > SKAdNetworkIdentifier </ key >
< string > t38b2kh725.skadnetwork </ string >
</ dict >
< dict >
< key > SKAdNetworkIdentifier </ key >
< string > 7ug5zh24hu.skadnetwork </ string >
</ dict >
< dict >
< key > SKAdNetworkIdentifier </ key >
< string > gta9lk7p23.skadnetwork </ string >
</ dict >
< dict >
< key > SKAdNetworkIdentifier </ key >
< string > vutu7akeur.skadnetwork </ string >
</ dict >
< dict >
< key > SKAdNetworkIdentifier </ key >
< string > y5ghdn5j9k.skadnetwork </ string >
</ dict >
< dict >
< key > SKAdNetworkIdentifier </ key >
< string > n6fk4nfna4.skadnetwork </ string >
</ dict >
< dict >
< key > SKAdNetworkIdentifier </ key >
< string > v9wttpbfk9.skadnetwork </ string >
</ dict >
< dict >
< key > SKAdNetworkIdentifier </ key >
< string > n38lu8286q.skadnetwork </ string >
</ dict >
< dict >
< key > SKAdNetworkIdentifier </ key >
< string > 47vhws6wlr.skadnetwork </ string >
</ dict >
< dict >
< key > SKAdNetworkIdentifier </ key >
< string > kbd757ywx3.skadnetwork </ string >
</ dict >
< dict >
< key > SKAdNetworkIdentifier </ key >
< string > 9t245vhmpl.skadnetwork </ string >
</ dict >
< dict >
< key > SKAdNetworkIdentifier </ key >
< string > eh6m2bh4zr.skadnetwork </ string >
</ dict >
< dict >
< key > SKAdNetworkIdentifier </ key >
< string > a2p9lx4jpn.skadnetwork </ string >
</ dict >
< dict >
< key > SKAdNetworkIdentifier </ key >
< string > 22mmun2rn5.skadnetwork </ string >
</ dict >
< dict >
< key > SKAdNetworkIdentifier </ key >
< string > 4468km3ulz.skadnetwork </ string >
</ dict >
< dict >
< key > SKAdNetworkIdentifier </ key >
< string > 2u9pt9hc89.skadnetwork </ string >
</ dict >
< dict >
< key > SKAdNetworkIdentifier </ key >
< string > 8s468mfl3y.skadnetwork </ string >
</ dict >
< dict >
< key > SKAdNetworkIdentifier </ key >
< string > klf5c3l5u5.skadnetwork </ string >
</ dict >
< dict >
< key > SKAdNetworkIdentifier </ key >
< string > ppxm28t8ap.skadnetwork </ string >
</ dict >
< dict >
< key > SKAdNetworkIdentifier </ key >
< string > ecpz2srf59.skadnetwork </ string >
</ dict >
< dict >
< key > SKAdNetworkIdentifier </ key >
< string > uw77j35x4d.skadnetwork </ string >
</ dict >
< dict >
< key > SKAdNetworkIdentifier </ key >
< string > pwa73g5rt2.skadnetwork </ string >
</ dict >
< dict >
< key > SKAdNetworkIdentifier </ key >
< string > mlmmfzh3r3.skadnetwork </ string >
</ dict >
< dict >
< key > SKAdNetworkIdentifier </ key >
< string > 578prtvx9j.skadnetwork </ string >
</ dict >
< dict >
< key > SKAdNetworkIdentifier </ key >
< string > 4dzt52r2t5.skadnetwork </ string >
</ dict >
< dict >
< key > SKAdNetworkIdentifier </ key >
< string > e5fvkxwrpn.skadnetwork </ string >
</ dict >
< dict >
< key > SKAdNetworkIdentifier </ key >
< string > 8c4e2ghe7u.skadnetwork </ string >
</ dict >
< dict >
< key > SKAdNetworkIdentifier </ key >
< string > zq492l623r.skadnetwork </ string >
</ dict >
< dict >
< key > SKAdNetworkIdentifier </ key >
< string > 3rd42ekr43.skadnetwork </ string >
</ dict >
< dict >
< key > SKAdNetworkIdentifier </ key >
< string > 3qcr597p9d.skadnetwork </ string >
</ dict >
< dict >
< key > SKAdNetworkIdentifier </ key >
< string > mj797d8u6f.skadnetwork </ string >
</ dict >
< dict >
< key > SKAdNetworkIdentifier </ key >
< string > 55644vm79v.skadnetwork </ string >
</ dict >
< dict >
< key > SKAdNetworkIdentifier </ key >
< string > 6yxyv74ff7.skadnetwork </ string >
</ dict >
< dict >
< key > SKAdNetworkIdentifier </ key >
< string > 55y65gfgn7.skadnetwork </ string >
</ dict >
< dict >
< key > SKAdNetworkIdentifier </ key >
< string > cwn433xbcr.skadnetwork </ string >
</ dict >
< dict >
< key > SKAdNetworkIdentifier </ key >
< string > nu4557a4je.skadnetwork </ string >
</ dict >
< dict >
< key > SKAdNetworkIdentifier </ key >
< string > w7jznl3r6g.skadnetwork </ string >
</ dict >
< dict >
< key > SKAdNetworkIdentifier </ key >
< string > 577p5t736z.skadnetwork </ string >
</ dict >
< dict >
< key > SKAdNetworkIdentifier </ key >
< string > 6rd35atwn8.skadnetwork </ string >
</ dict >
< dict >
< key > SKAdNetworkIdentifier </ key >
< string > 7bxrt786m8.skadnetwork </ string >
</ dict >
< dict >
< key > SKAdNetworkIdentifier </ key >
< string > 7fbxrn65az.skadnetwork </ string >
</ dict >
< dict >
< key > SKAdNetworkIdentifier </ key >
< string > dt3cjx1a9i.skadnetwork </ string >
</ dict >
< dict >
< key > SKAdNetworkIdentifier </ key >
< string > fz2k2k5tej.skadnetwork </ string >
</ dict >
< dict >
< key > SKAdNetworkIdentifier </ key >
< string > jk2fsx2rgz.skadnetwork </ string >
</ dict >
< dict >
< key > SKAdNetworkIdentifier </ key >
< string > r8lj5b58b5.skadnetwork </ string >
</ dict >
< dict >
< key > SKAdNetworkIdentifier </ key >
< string > tmhh9296z4.skadnetwork </ string >
</ dict >
< dict >
< key > SKAdNetworkIdentifier </ key >
< string > k6y4y55b64.skadnetwork </ string >
</ dict >
< dict >
< key > SKAdNetworkIdentifier </ key >
< string > qwpu75vrh2.skadnetwork </ string >
</ dict >
</ array >
SDK 초기화하기
아래 코드를 참고하여 SDK를 초기화합니다.
import 'package:daro_flutter/daro_flutter.dart' ;
void main () async {
WidgetsFlutterBinding . ensureInitialized ();
// 디버그 모드 설정 (출시 전 테스트 시 사용)
DaroFlutter .isDebugMode = true ;
// SDK 초기화
await DaroFlutter . initialize ();
runApp ( const MyApp ());
}
베스트 프랙티스
SDK 초기화 관리
SDK를 효율적으로 관리하고 에러를 방지하기 위한 권장 사항입니다.
main() 함수에서 initialize() 호출
앱의 진입점인 main() 함수에서 SDK를 초기화하세요
초기화 완료 후 광고 렌더링
await DaroFlutter.initialize() 완료 후 광고 위젯을 렌더링하세요
모든 배너 및 네이티브 광고 위젯을 초기화 완료 후 표시
초기화가 완료되지 않은 상태에서 광고 위젯이 렌더링되지 않도록 하세요