Skip to main content
애드유닛은 앱에서 광고를 표시할 지면과 광고 포맷을 설정한 단위입니다. DARO 2.0 SDK에는 업데이트된 대시보드의 Ad Unit Key를 복사해 입력하세요. 앱 설정에 쓰는 Integration Key와는 다른 값입니다. API 인자 adUnitId, unitId, key와 예제의 YOUR_AD_UNIT_ID는 이름을 그대로 사용하지만, 입력할 값은 해당 애드유닛의 Ad Unit Key입니다. 기존 애드유닛 ID를 사용한 연동도 계속 지원합니다. 리포트·콜백의 식별자를 새 연동용 키와 혼동하지 마세요.

시작하기 전에

중요: SDK 초기화 필수배너 광고와 네이티브 광고는 반드시 SDK 초기화가 완료된 후에 렌더링되어야 합니다. 초기화 전에 광고 컴포넌트를 렌더링하면 초기화 오류가 발생할 수 있습니다.인터스티셜 광고, 리워드 비디오 광고 등 다른 광고 형식도 SDK 초기화 이후에 로드해야 합니다.

요구사항

  • 안드로이드 minSdkVersion : 23
  • iOS 15.1 이상
Android 앱의 minSdkVersion이 26 미만이면 앱 모듈(android/app/build.gradle 또는 build.gradle.kts)에 core library desugaring을 설정하세요. 설정 방법은 Android 시작하기를 참고하세요.설정하지 않으면 API 26 미만 기기에서 광고 ID 조회 중 클래스 로딩 오류가 발생할 수 있습니다.Expo config plugin은 이 설정을 적용하지 않으므로 Expo 프로젝트도 직접 적용해야 합니다.
[email protected]은 Android so.daro:daro-sdk 2.0.2, iOS DaroAds 2.0.1을 사용합니다.래퍼와 네이티브 SDK 버전은 독립적으로 관리됩니다.
app-ads.txt 파일 설정(링크)이 잘 되었는지 다시 한 번 확인해주세요.

지원 광고 포맷

  • 배너/MREC
  • 네이티브
  • 인터스티셜
  • 리워드
  • 라이트 팝업

패키지 설치하기

SDK 업데이트 후에는 Android·iOS 앱을 다시 빌드하세요. iOS는 ios/에서 pod install을 실행하고, Expo 프로젝트는 prebuild 또는 EAS Build로 네이티브 변경을 반영하세요.

Expo 프로젝트 설정하기

통합 SDK는 Expo config plugin을 제공합니다. 앱 설정에 INTEGRATION KEY만 넣으면 prebuild 시 Android·iOS 프로젝트 설정을 자동으로 적용합니다.
Expo Go에서는 DARO 네이티브 모듈을 사용할 수 없습니다. development build 또는 prebuild된 앱에서 사용해야 합니다.
1

Expo config에 plugin 추가

기존 Expo config는 유지하고 expo.plugins에 DARO 설정을 추가합니다. 플랫폼마다 발급받은 Integration Key 하나만 넣으면 됩니다.
app.json
iOS는 attUsageDescription으로 App Tracking Transparency 안내 문구를 바꿀 수 있습니다. 넣지 않으면 기본 문구가 들어갑니다.
2

prebuild 또는 EAS Build 실행

동적 Expo config를 사용하는 프로젝트에서는 앱 식별자 설정을 기존 Expo/EAS 설정 방식에 맞게 관리하세요.
1.x의 키 파일과 이전 Expo 키 설정을 제거하고 플랫폼별 daroIntegrationKey를 사용하세요. 기존 앱은 마이그레이션 가이드의 순서대로 전환하세요.
Expo config plugin 설정을 마쳤다면 SDK 초기화하기로 이동하세요.

SafeDK 빌드 오류 해결

Android Release 빌드가 safedk* 또는 process...Manifest 태스크에서 Configuration Cache 오류로 실패하면 [email protected] 이상으로 업데이트하세요. Expo 프로젝트는 기존 expo.plugins의 react-native-daro 항목에서 Android 설정에 다음 옵션을 추가합니다. 기존 Integration Key와 iOS 설정은 유지하세요.
설정 후 npx expo prebuild를 실행해 네이티브 설정을 다시 반영하고 Release 빌드를 실행하세요. 생성된 프로젝트에는 Android SDK 2.0.2, Gradle 플러그인 2.0.3과 daro.safedkConfigurationCacheWorkaround=true가 적용됩니다. EAS Build는 빌드 입력에 android/·ios/ 디렉터리가 없는 경우 prebuild를 자동 실행합니다. 기존 네이티브 디렉터리를 포함해 빌드한다면 빌드 전에 npx expo prebuild를 직접 실행하세요. 자세한 동작은 Expo의 EAS Build 안내를 참고하세요. false를 지정하면 우회 옵션을 끕니다. 옵션을 생략하면 기존 Gradle 값을 유지하며, 기존에 켠 옵션이 자동으로 꺼지지는 않습니다. 값은 문자열 "true"가 아닌 Boolean true 또는 false로 입력하세요. Expo config plugin을 사용하지 않는 React Native CLI 프로젝트는 Gradle 플러그인을 2.0.3으로 업데이트하고 android/gradle.properties에 daro.safedkConfigurationCacheWorkaround=true를 추가하세요. 자세한 위치와 설정은 Android 시작하기의 SafeDK 오류 해결을 참고하세요.

React Native CLI 프로젝트 설정하기

Expo config plugin을 사용하지 않는 프로젝트는 Android 시작하기와 iOS 시작하기의 빌드 도구 및 Integration Key 설정을 적용하세요. Android에서는 앱 모듈에 so.daro 플러그인과 so.daro:daro-sdk 의존성을 추가해야 합니다. 이 페이지에서 안내하는 React Native 패키지의 Android SDK 버전과 맞춰주세요. android/gradle.properties에 다음 React Native 설정도 추가합니다. 기존 제외 목록이 있다면 항목을 합칩니다.
Kotlin Gradle plugin은 2.2.20 이상을 사용하세요. iOS에서는 패키지의 CocoaPods 의존성을 사용합니다. iOS 시작하기에 따라 DaroIntegrationKey, SKAdNetworkItems, 추적 권한 안내 문구와 post_install 훅을 설정한 뒤 ios/ 디렉토리에서 pod install을 실행하세요. 기존 React Native post_install 설정은 유지하고 훅을 같은 블록에 추가합니다.

SDK 초기화하기

initialize()는 실제 네이티브 SDK 초기화가 끝나고 최신 음소거 설정이 적용된 뒤 완료됩니다. await initialize()가 성공한 뒤 첫 광고를 로드하거나 광고 컴포넌트를 렌더링하세요. 초기화에 실패하면 Promise가 reject되므로 광고를 로드하지 말고 실패를 처리한 뒤 재시도하세요. 초기화 전에 앱의 동의 수집 흐름을 완료하고 사용자 선택과 앱의 적용 대상 판단을 전달하세요. 아래 privacy는 앱이 제공하는 값이며, 예제에서 옵트인을 기본값으로 정하지 않습니다. GDPR은 optIn · optOut · notApplicable · unknown, CCPA는 optIn · optOut · notApplicable, COPPA는 child · notChild를 사용합니다. COPPA 상태는 반드시 초기화 전에 설정하세요. 이미 전달한 동의 문자열이 있다면 상태를 갱신할 때도 함께 전달합니다. 아래 코드를 참고하여 SDK를 초기화합니다. privacy는 동의 수집이 끝난 뒤 한 번 전달하는 안정된 객체로 유지하세요. 매 렌더링마다 새 객체를 만들면 초기화 흐름을 반복 실행하게 됩니다.

광고 음소거 설정하기

2.0.1부터 React Native SDK의 광고 음소거 기본값은 true입니다. 기본 음소거를 유지하려면 별도 설정이 필요하지 않습니다. 소리가 필요한 앱은 첫 광고를 로드하기 전에 setAppMuted(false)를 호출하세요.
초기화가 끝난 뒤에도 설정을 변경할 수 있습니다. 이후 로드할 광고를 다시 음소거하려면 다음 코드를 호출하세요.
setAppMuted(muted: boolean): Promise<void>는 초기화 전·진행 중·완료 후에 호출할 수 있습니다. 초기화 전·진행 중에는 마지막 값을 보관하고 초기화 완료 전에 적용합니다. 앱 프로세스가 유지되는 동안에는 JavaScript 리로드 후에도 마지막 값이 유지됩니다. setAppMuted()의 완료는 설정이 저장되었거나 초기화된 SDK에 전달되었음을 뜻합니다. 첫 광고를 로드하기 전에는 initialize()의 성공을 기다리세요.
실제 소리 재생은 광고 소재와 디맨드의 지원에 따라 달라집니다. false를 전달해도 자체 음소거 옵션이 있는 광고나 소리가 없는 소재는 소리가 나지 않을 수 있습니다. 이미 로드된 광고의 오디오가 즉시 바뀐다고 보장하지 않습니다.

베스트 프랙티스

SDK 초기화 관리

SDK를 효율적으로 관리하고 에러를 방지하기 위한 권장 사항입니다.
  1. 앱 시작 시 initialize() 호출
    • 앱의 진입점(App.js 또는 index.js)에서 SDK를 초기화하세요
  2. 초기화 상태를 state로 관리
    • 초기화 완료 여부를 추적하여 광고 렌더링 시점을 제어하세요
  3. 모든 배너 및 네이티브 광고 컴포넌트를 조건부 렌더링으로 보호
    • 초기화가 완료되지 않은 상태에서 광고 컴포넌트가 렌더링되지 않도록 하세요

다음 단계

연동과 초기화를 완료했다면 사용할 광고 포맷의 구현 문서로 이동하세요.