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

Or with Yarn:

yarn add @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.gradle
allprojects {
repositories {
google()
mavenCentral()
maven { url 'https://maven.empower.net/release' }
}
}

Or if your project uses settings.gradle (newer RN versions):

// android/settings.gradle
dependencyResolutionManagement {
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-data
android:name="com.google.android.gms.ads.AD_MANAGER_APP"
android:value="true"/>
<meta-data
android:name="com.google.android.gms.ads.APPLICATION_ID"
android:value="ca-app-pub-xxxxxxxxxxxxxxxx~yyyyyyyyyy"/>
</application>

Note: Replace the APPLICATION_ID value 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 compatibility
kotlin.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.force to downgrade kotlin-stdlib to 1.9.x. The Empower SDK depends on Kotlin 2.x coroutine classes (such as SpillingKt) at runtime. Forcing a stdlib downgrade will cause a NoClassDefFoundError crash.

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.kt
import com.facebook.react.soloader.OpenSourceMergedSoMapping
import 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).


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' do
use_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

# Android
npx react-native run-android
# iOS
npx react-native run-ios

Optional: Mediation Adapters

Android

The SDK includes built-in mediation support. For additional ad networks, add these repositories to android/build.gradle:

// settings.gradle.kts
dependencyResolutionManagement {
repositories {
// ... existing repositories
// For additional mediation networks
maven { url = uri("https://dl-maven-android.mintegral.com/repository/mbridge_android_sdk_oversea") }
maven { url = uri("https://artifact.bytedance.com/repository/pangle") }
maven { url = uri("https://android-sdk.is.com/") }
maven { url = uri("https://cboost.jfrog.io/artifactory/chartboost-ads/") }
}
}
// build.gradle (project-level)
allprojects {
repositories {
// ... existing repositories
// For additional mediation networks
maven { url 'https://dl-maven-android.mintegral.com/repository/mbridge_android_sdk_oversea' }
maven { url 'https://artifact.bytedance.com/repository/pangle' }
maven { url 'https://android-sdk.is.com/' }
maven { url 'https://cboost.jfrog.io/artifactory/chartboost-ads/' }
}
}

Mediation Adapter Dependencies

Add any required mediation adapters based on your monetization strategy:

// app/build.gradle.kts
dependencies {
// AppLovin Mediation
implementation("com.applovin.mediation:google-adapter:24.9.0.0")
implementation("com.applovin.mediation:google-ad-manager-adapter:24.9.0.0")
implementation("com.applovin.mediation:inmobi-adapter:11.1.1.0")
implementation("com.applovin.mediation:vungle-adapter:7.7.0.0")
implementation("com.applovin.mediation:bytedance-adapter:7.8.6.0.0")
implementation("com.applovin.mediation:unityads-adapter:4.16.6.0")
// Google AdMob Mediation
implementation("com.google.ads.mediation:inmobi:11.1.0.1")
implementation("com.google.ads.mediation:pangle:7.8.5.9.0")
implementation("com.google.ads.mediation:unity:4.16.6.0")
implementation("com.unity3d.ads:unity-ads:4.16.6")
}
// app/build.gradle
dependencies {
// AppLovin Mediation
implementation 'com.applovin.mediation:google-adapter:24.9.0.0'
implementation 'com.applovin.mediation:google-ad-manager-adapter:24.9.0.0'
implementation 'com.applovin.mediation:inmobi-adapter:11.1.1.0'
implementation 'com.applovin.mediation:vungle-adapter:7.7.0.0'
implementation 'com.applovin.mediation:bytedance-adapter:7.8.6.0.0'
implementation 'com.applovin.mediation:unityads-adapter:4.16.6.0'
// Google AdMob Mediation
implementation 'com.google.ads.mediation:inmobi:11.1.0.1'
implementation 'com.google.ads.mediation:pangle:7.8.5.9.0'
implementation 'com.google.ads.mediation:unity:4.16.6.0'
implementation 'com.unity3d.ads:unity-ads:4.16.6'
}

iOS

Add the mediation adapter pods to your ios/Podfile:

target 'YourApp' do
use_frameworks!
# Mediation Adapters
pod '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:

# Android
cd android && ./gradlew clean && cd ..
# iOS
cd ios && pod deintegrate && pod install --repo-update && cd ..