Before You Begin
SDK Initialization RequiredLoad or render all ad formats only after SDK initialization completes. Rendering before initialization causes:
AdBannerView | NativeAdView is mounted before the initialization of the DaroM React Native moduleApplies to all formats: banner, native, interstitial, rewarded.Requirements
- Android minSdkVersion: 23
- iOS 15.1 or higher
Verify app-ads.txt settings before proceeding.
App Setup
Follow setup steps for your ad type (Non-Reward or Reward) confirmed in Before Integration.If using daro-m, select Reward tab.
Add npm Package
Install appropriate package:- Non-Reward
- Reward
npm i react-native-daro
npm i react-native-daro-m
Android Project Setup
- Android minSdkVersion: 23
Desugaring required: Configure desugaring if minSdk is below 26.
Copy
Ask AI
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")
...
}
Android Project Setup
Android Project Setup
Project-level Build Configuration
- Add maven repositories to the
settings.gradlefile.
- Non-Reward
- Reward
Copy
Ask AI
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
...
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") }
}
}
Copy
Ask AI
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
...
maven { url = uri("https://android-sdk.is.com") }
maven { url = uri("https://dl-maven-android.mintegral.com/repository/mbridge_android_sdk_oversea") }
maven { url = uri("https://maven.ogury.co") }
maven { url = uri("https://artifact.bytedance.com/repository/pangle") }
maven { url = uri("https://s3.amazonaws.com/smaato-sdk-releases/") }
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://artifacts.applovin.com/android") }
}
}
Add the DARO plugin to build.gradle(root)
- Add the DARO plugin to the
build.gradle(root)file.
Latest version
- daro-plugin: androidPlguinLatestVersion
- Non-Reward
- Reward
Copy
Ask AI
buildscript {
repositories {
google()
mavenCentral()
}
dependencies {
classpath("so.daro:daro-plugin:{version}")
}
}
Copy
Ask AI
buildscript {
repositories {
google()
mavenCentral()
maven { url = uri("https://artifacts.applovin.com/android") }
}
dependencies {
classpath("so.daro:daro-plugin:{version}")
classpath("com.applovin.quality:AppLovinQualityServiceGradlePlugin:5.5.2")
}
}
Add Daro SDK
- Add the Daro SDK.
- Non-Reward
- Reward
Latest version
- daro-a: androidDaroLatestVersion
Copy
Ask AI
dependencies {
...
implementation("so.daro:daro-a:{version}")
...
}
Latest version
- daro-m: androidDaroMLatestVersion
Copy
Ask AI
dependencies {
...
implementation("so.daro:daro-m:{version}")
...
}
Add android-daro-key.txt file
- Add the
android-daro-key.txtfile.
- General
- If you need flavor/buildType separation
Copy
Ask AI
app/
└── android-daro-key.txt
Copy
Ask AI
app/
└── src/
├── EnvA/
│ └── android-daro-key.txt
└── EnvB/
└── android-daro-key.txt
android-daro-key.txt can be downloaded from the DARO dashboard.Configure daroAppKey
- Configure the daroAppKey.
- General
- If you need flavor/buildType separation
Show Configure in gradle.properties
Show Configure in gradle.properties
Copy
Ask AI
android.useAndroidX=true
android.enableJetifier=true
daroAppKey={APP_KEY}
Show Configure directly in app module gradle
Show Configure directly in app module gradle
Configure the following in the app module build.gradle.
Copy
Ask AI
buildscript{
extra["daroAppKey"] = "APP_KEY"
}
Show Configure in gradle.properties
Show Configure in gradle.properties
Copy
Ask AI
android.useAndroidX=true
android.enableJetifier=true
daroAppKey.EnvA={APP_KEY}
daroAppKey.EnvB={APP_KEY}
Show Configure directly in app module gradle
Show Configure directly in app module gradle
Configure the following in the app module build.gradle.
Copy
Ask AI
buildscript{
extra["daroAppKey.EnvA"] = "APP_KEY"
extra["daroAppKey.EnvB"] = "APP_KEY"
}
Please capitalize the first letter of Flavor
The daroAppKey can be found in the DARO dashboard.

Apply the DARO plugin in build.gradle(app)
- Apply the DARO plugin in
build.gradle(app).
- Non-Reward
- Reward
Copy
Ask AI
plugins {
...
id("so.daro.a")
...
}
Copy
Ask AI
plugins {
...
id("so.daro.m")
...
}
Add proguard rules
- Add proguard rules.
- Non-Reward
- Reward
Copy
Ask AI
-keep class com.bytedance.sdk.** { *; }
-keepattributes Signature
-keep class net.pubnative.** { *; }
-keep class com.iab.omid.library.pubnativenet.** { *; }
-keep class com.amazon.** { *; }
-keep public class com.google.android.gms.ads.** {
public *;
}
-keep class com.iabtcf.** {*;}
-keep public class com.smaato.sdk.** { *; }
-keep public interface com.smaato.sdk.** { *; }
-keepclassmembers class * implements android.os.Parcelable {
public static final android.os.Parcelable$Creator *;
}
-keep class com.ironsource.adapters.** { *; }
-dontwarn com.ironsource.**
-dontwarn com.ironsource.adapters.**
-keepclassmembers class com.ironsource.** { public *; }
-keep public class com.ironsource.**
-keep class com.ironsource.adapters.** { *;
}
-keepclassmembers class com.applovin.sdk.AppLovinSdk {
static *;
}
-keep public interface com.applovin.sdk** {*; }
-keep public interface com.applovin.adview** {*; }
-keep public interface com.applovin.mediation** {*; }
-keep public interface com.applovin.communicator** {*; }
-keep class androidx.localbroadcastmanager.content.LocalBroadcastManager { *;}
-keep class androidx.recyclerview.widget.RecyclerView { *;}
-keep class androidx.recyclerview.widget.RecyclerView$OnScrollListener { *;}
-keep class * extends android.app.Activity
-flattenpackagehierarchy droom.daro.a
-keep public class droom.daro.** {
public protected *;
}
-keep interface droom.daro.** {
public protected *;
}
-keep,allowobfuscation,allowshrinking class kotlin.coroutines.Continuation
For Reward Apps, you don’t need to configure proguard separately.
iOS Project Setup
- iOS 15.1 or higher
- Xcode 14.0 or higher
iOS Project Setup
iOS Project Setup
-
Open
ios/PROJECT_NAME.xcworkspaceand add theios-daro-key.txtfile by drag and drop. ⚠️ Theios-daro-key.txtfile must be included in the project to initialize the SDK.GADApplicationIdentifier,DaroAppKeycan be found in the DARO dashboard (AdMob Key, App Key).❗ Please copy theSKAdNetworkItemsfrom Info.plist to your app’s Info.plist. If not registered, ad networks cannot receive conversion performance reports, which will reduce advertising efficiency. This has a significant impact on ad performance, so please add it! -
Add the following IDs to
Info.plist.CopyAsk AI<key>GADApplicationIdentifier</key> <string> /* Add the Admob Key issued from the DARO dashboard */ </string> <key>DaroAppKey</key> <string> /* Add the Daro App Key issued from the DARO dashboard */ </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> <key>SKAdNetworkIdentifier</key> <string>252b5q8x7y.skadnetwork</string> </dict> <dict> <key>SKAdNetworkIdentifier</key> <string>4mn522wn87.skadnetwork</string> </dict> <dict> <key>SKAdNetworkIdentifier</key> <string>7fmhfwg9en.skadnetwork</string> </dict> <dict> <key>SKAdNetworkIdentifier</key> <string>8r8llnkz5a.skadnetwork</string> </dict> <dict> <key>SKAdNetworkIdentifier</key> <string>dbu4b84rxf.skadnetwork</string> </dict> <dict> <key>SKAdNetworkIdentifier</key> <string>dkc879ngq3.skadnetwork</string> </dict> <dict> <key>SKAdNetworkIdentifier</key> <string>eh6m2bh4zr.skadnetwork</string> </dict> <dict> <key>SKAdNetworkIdentifier</key> <string>f7s53z58qe.skadnetwork</string> </dict> <dict> <key>SKAdNetworkIdentifier</key> <string>g6gcrrvk4p.skadnetwork</string> </dict> <dict> <key>SKAdNetworkIdentifier</key> <string>gta8lk7p23.skadnetwork</string> </dict> <dict> <key>SKAdNetworkIdentifier</key> <string>krvm3zuq6h.skadnetwork</string> </dict> <dict> <key>SKAdNetworkIdentifier</key> <string>lr83yxwka7.skadnetwork</string> </dict> <dict> <key>SKAdNetworkIdentifier</key> <string>mj797d8u6f.skadnetwork</string> </dict> <dict> <key>SKAdNetworkIdentifier</key> <string>qu637u8glc.skadnetwork</string> </dict> <dict> <key>SKAdNetworkIdentifier</key> <string>s69wq72ugq.skadnetwork</string> </dict> <dict> <key>SKAdNetworkIdentifier</key> <string>v79kvwwj4g.skadnetwork</string> </dict> <dict> <key>SKAdNetworkIdentifier</key> <string>vhf287vqwu.skadnetwork</string> </dict> <dict> <key>SKAdNetworkIdentifier</key> <string>vutu7akeur.skadnetwork</string> </dict> <dict> <key>SKAdNetworkIdentifier</key> <string>x5l83yy675.skadnetwork</string> </dict> <dict> <key>SKAdNetworkIdentifier</key> <string>x8jxxk4ff5.skadnetwork</string> </dict> <dict> <key>SKAdNetworkIdentifier</key> <string>x8uqf25wch.skadnetwork</string> </dict> <dict> <key>SKAdNetworkIdentifier</key> <string>xga6mpmplv.skadnetwork</string> </dict> <dict> <key>SKAdNetworkIdentifier</key> <string>ln5gz23vtd.skadnetwork</string> </dict> <dict> <key>SKAdNetworkIdentifier</key> <string>z959bm4gru.skadnetwork</string> </dict> </dict> </array>
Initialize SDK
Initialize SDK using code below:- Non-Reward
- Reward
Copy
Ask AI
import { useState, useEffect } from "react";
import { initialize } from "react-native-daro";
Copy
Ask AI
import { useState, useEffect } from "react";
import { initialize } from "react-native-daro-m";
Copy
Ask AI
function App() {
const [isInitialized, setIsInitialized] = useState(false);
useEffect(() => {
initialize()
.then(() => setIsInitialized(true))
.catch(console.error);
}, []);
// Render ad components after initialization is complete
return <View>{isInitialized && <BannerAdView adUnitId={adUnitId} />}</View>;
}
Best Practices
SDK Initialization Management
Recommended practices to manage SDK efficiently and prevent errors.- Call initialize() at app startup
- Initialize at app entry point (App.js or index.js)
- Manage initialization state
- Track initialization completion to control ad rendering timing
- Protect banner and native ad components with conditional rendering
- Ensure components don’t render before initialization completes

