Integration
This guide explains how to install the React Native bridge and configure both Android and iOS native projects.
Step 1: Install the Package
npm install @empower-nokta/react-native-mobile-ads
The package supports autolinking — no manual native linking is needed.
Step 2: Android Configuration
Add the Maven Repository
Add the Empower Maven repository to your project-level android/build.gradle:
// android/build.gradleallprojects {repositories {google()mavenCentral()maven { url 'https://maven.empower.net/release' }}}
Or if your project uses settings.gradle (newer RN versions):
// android/settings.gradledependencyResolutionManagement {repositories {google()mavenCentral()maven { url 'https://maven.empower.net/release' }}}
Configure AndroidManifest
Add the following <meta-data> tags inside the <application> block of android/app/src/main/AndroidManifest.xml:
<application><!-- Existing configuration --><meta-dataandroid:name="com.google.android.gms.ads.AD_MANAGER_APP"android:value="true"/><meta-dataandroid:name="com.google.android.gms.ads.APPLICATION_ID"android:value="ca-app-pub-xxxxxxxxxxxxxxxx~yyyyyyyyyy"/></application>
Note: Replace the
APPLICATION_IDvalue with your actual Google Ads Application ID. Contact Empower support if you need assistance obtaining this ID.
Kotlin Version Compatibility
The Empower native SDK is compiled with Kotlin 2.2.0. If your project uses an older Kotlin compiler (1.9.x), you may see a version compatibility warning. Add this line to android/gradle.properties:
# Empower Mobile Ads SDK — Kotlin compatibilitykotlin.suppressKotlinVersionCompatibilityCheck=2.2.0
That's it — the SDK automatically injects the -Xskip-metadata-version-check compiler flag into all Kotlin compile tasks, so no additional Gradle configuration is needed.
⚠️ Important: Do not use
resolutionStrategy.forceto downgradekotlin-stdlibto 1.9.x. The Empower SDK depends on Kotlin 2.x coroutine classes (such asSpillingKt) at runtime. Forcing a stdlib downgrade will cause aNoClassDefFoundErrorcrash.
New Architecture (React Native 0.76+)
If your app uses the New Architecture (Fabric / TurboModules), update MainApplication.kt to use OpenSourceMergedSoMapping for SoLoader initialization:
// android/app/src/main/java/.../MainApplication.ktimport com.facebook.react.soloader.OpenSourceMergedSoMappingimport com.facebook.soloader.SoLoader// In onCreate():SoLoader.init(this, OpenSourceMergedSoMapping)
React Native 0.76+ merges several native libraries into libreactnative.so. Without this mapping, SoLoader cannot find the merged libraries and the app will crash on startup with a libreact_featureflagsjni.so not-found error.
Note: This change is only required for New Architecture. Old Architecture apps should keep the default
SoLoader.init(this, false).
Core Library Desugaring (SDK 5.7.10+)
The Empower SDK uses Java 8+ APIs that are not available on older Android versions without desugaring. Enable core library desugaring in your android/app/build.gradle:
// android/app/build.gradleandroid {compileOptions {coreLibraryDesugaringEnabled truesourceCompatibility JavaVersion.VERSION_17targetCompatibility JavaVersion.VERSION_17}}dependencies {coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:2.1.5'}
Note: Without core library desugaring, builds targeting
minSdk < 26may fail with missing class errors at runtime.
Step 3: iOS Configuration
Install CocoaPods Dependencies
cd ios && pod install && cd ..
Update Your Podfile
Add the Empower specs source to the top of your ios/Podfile:
source 'https://github.com/empowernet/specs.git'source 'https://cdn.cocoapods.org/'
Ensure use_frameworks! is present in your target block:
target 'YourApp' douse_frameworks!# ...existing pods...end
Then run:
cd ios && pod install --repo-update && cd ..
Update Info.plist
Add your Google Ads Application ID to ios/YourApp/Info.plist:
<key>GADApplicationIdentifier</key><string>ca-app-pub-xxxxxxxxxxxxxxxx~yyyyyyyyyy</string>
Update Build Settings
Add ${inherited} to Other Linker Flags in your Xcode project:
Target → Build Settings → Other Linker Flags
Step 4: Build and Run
# Androidnpx react-native run-android# iOSnpx react-native run-ios
Mediation Adapters
Android
Configure Repositories
Pick the path that matches your build policy. The settings plugin is the default and stays in sync with the SDK automatically. Use the manual setup only when third-party Gradle plugins are restricted in your project.
Standard setup (settings plugin)
Add the Empower maven to pluginManagement.repositories, then apply the settings plugin. The plugin registers every Maven repo the SDK and its mediation adapters need (Empower, AppLovin, Pangle, IronSource, Ogury). Bumping the plugin version is enough when networks change in a future release.
pluginManagement {repositories {google()mavenCentral()gradlePluginPortal()maven { url = uri("https://maven.empower.net/release") }}}plugins {id("net.empower.mobile.ads.settings") version "5.7.16"}
pluginManagement {repositories {google()mavenCentral()gradlePluginPortal()maven { url 'https://maven.empower.net/release' }}}plugins {id 'net.empower.mobile.ads.settings' version '5.7.16'}
If your project already declares dependencyResolutionManagement (including with repositoriesMode = FAIL_ON_PROJECT_REPOS), the plugin appends to it without conflict.
Without the settings plugin
Declare every Maven repository the SDK needs yourself. You will need to add new repositories manually when the SDK adds networks in future releases.
//settings.gradle.ktsdependencyResolutionManagement {repositories {google()mavenCentral()// Empower Mobile Ads SDKmaven {url = uri("https://maven.empower.net/release")content { includeGroup("net.empower.mobile.ads") }}// AppLovin SDK & mediation adaptersmaven {url = uri("https://artifacts.applovin.com/android")content { includeGroupByRegex("com\\.applovin.*") }}// Pangle / ByteDancemaven {url = uri("https://artifact.bytedance.com/repository/pangle/")content { includeGroupByRegex("com\\.(bytedance|pangle).*") }}// IronSource / Fyber / DT Exchangemaven {url = uri("https://android-sdk.is.com/")content { includeGroupByRegex("com\\.(ironsource|fyber).*") }}// Ogurymaven {url = uri("https://maven.ogury.co")content { includeGroupByRegex("co\\.ogury.*") }}}}
//settings.gradledependencyResolutionManagement {repositories {google()mavenCentral()// Empower Mobile Ads SDKmaven {url 'https://maven.empower.net/release'content { includeGroup 'net.empower.mobile.ads' }}// AppLovin SDK & mediation adaptersmaven {url 'https://artifacts.applovin.com/android'content { includeGroupByRegex 'com\\.applovin.*' }}// Pangle / ByteDancemaven {url 'https://artifact.bytedance.com/repository/pangle/'content { includeGroupByRegex 'com\\.(bytedance|pangle).*' }}// IronSource / Fyber / DT Exchangemaven {url 'https://android-sdk.is.com/'content { includeGroupByRegex 'com\\.(ironsource|fyber).*' }}// Ogurymaven {url 'https://maven.ogury.co'content { includeGroupByRegex 'co\\.ogury.*' }}}}
iOS
Add the mediation adapter pods to your ios/Podfile:
target 'YourApp' douse_frameworks!# Mediation Adapterspod 'AppLovinMediationGoogleAdManagerAdapter'pod 'AppLovinMediationGoogleAdapter'pod 'AppLovinMediationInMobiAdapter'pod 'AppLovinMediationVungleAdapter'pod 'AppLovinMediationByteDanceAdapter'pod 'AppLovinMediationUnityAdsAdapter'pod 'AppLovinMediationYandexAdapter'pod 'GoogleMobileAdsMediationInMobi'pod 'GoogleMobileAdsMediationPangle'pod 'GoogleMobileAdsMediationUnity'end
Then run cd ios && pod install --repo-update.
Note: Contact your Empower account manager for the recommended adapter configuration based on your target markets and revenue goals.
Troubleshooting
Native Module Not Found
If you see @empower-nokta/react-native-mobile-ads: Native module not found:
Android:
1. Run: cd android && ./gradlew clean && cd .. && npx react-native run-android
2. Ensure maven { url 'https://maven.empower.net/release' } is in android/build.gradle
iOS:
1. Run: cd ios && pod install && cd .. && npx react-native run-ios
2. Ensure source 'https://github.com/empowernet/specs.git' is in your Podfile
3. Ensure use_frameworks! is in your Podfile
Kotlin Version Mismatch
If you see errors about Kotlin version incompatibility, add kotlin.suppressKotlinVersionCompatibilityCheck=2.2.0 to android/gradle.properties as described in the Android Configuration section above. Do not force-downgrade kotlin-stdlib — this causes runtime crashes.
App Crashes on Startup (New Architecture)
If you see libreact_featureflagsjni.so not found or similar SO loading errors, make sure you're using SoLoader.init(this, OpenSourceMergedSoMapping) in MainApplication.kt. See the New Architecture section above.
Build Fails After Adding Mediation Adapters
Run a clean build:
# Androidcd android && ./gradlew clean && cd ..# iOScd ios && pod deintegrate && pod install --repo-update && cd ..