{"_id":"@empower-nokta/react-native-empower-mobile-ads","_rev":"3-c88de23708b5aff2c713b09c4a33fe52","name":"@empower-nokta/react-native-empower-mobile-ads","dist-tags":{"latest":"0.4.0"},"versions":{"0.4.0":{"name":"@empower-nokta/react-native-empower-mobile-ads","version":"0.4.0","keywords":["react-native","ads","empower","banner","interstitial","rewarded","app-open","preroll"],"license":"MIT","_id":"@empower-nokta/react-native-empower-mobile-ads@0.4.0","maintainers":[{"name":"senaaltun","email":"senaaltun@nokta.com"}],"homepage":"https://github.com/empowernet/react-native-empower-mobile-ads#readme","bugs":{"url":"https://github.com/empowernet/react-native-empower-mobile-ads/issues"},"dist":{"shasum":"13f5f3f9ac13baf47b86583470a2e53e941590e3","tarball":"https://registry.npmjs.org/@empower-nokta/react-native-empower-mobile-ads/-/react-native-empower-mobile-ads-0.4.0.tgz","fileCount":16,"integrity":"sha512-PDoK0rRlJICLisN5TgqerUPgADiDpS51WrX0285hh+VfM6z0iLQrC8GrEoYVM9pdOrND3BAzRvs3izC6d1rJkQ==","signatures":[{"sig":"MEYCIQDiedYLMcQiaYtV0zz2gINziflxy3FDB5EtWHT0EgaQvQIhAPpAWk3twm5SwmTRGoLuNy7dsxjRu8uJmuYpQep6uQLG","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":66883},"main":"src/index.js","types":"src/index.d.ts","gitHead":"d8d4b35fbbf408ca76aeda9b9abac42e49523c8b","scripts":{"postinstall":"echo '\n  @empower-nokta/react-native-empower-mobile-ads installed.\n\n  Android setup:\n    1. Add maven { url \"https://maven.empower.net/release\" } to android/build.gradle\n    2. Add Kotlin version resolution to android/build.gradle\n    3. Add AD_MANAGER_APP meta-data to AndroidManifest.xml\n    4. Add kotlin.suppressKotlinVersionCompatibilityCheck=2.3.0 to gradle.properties\n\n  iOS setup:\n    1. Add source https://github.com/empowernet/specs.git to your Podfile\n    2. Run: cd ios && pod install\n\n  See README.md for copy-paste snippets.\n'","prepublishOnly":"echo 'Ready to publish @empower-nokta/react-native-empower-mobile-ads'"},"_npmUser":{"name":"senaaltun","email":"senaaltun@nokta.com"},"repository":{"url":"git+https://github.com/empowernet/react-native-empower-mobile-ads.git","type":"git"},"_npmVersion":"11.6.2","description":"React Native bridge for Empower Mobile Ads SDK","directories":{},"_nodeVersion":"25.2.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"react":">=17.0.0","react-native":">=0.70.0"},"_npmOperationalInternal":{"tmp":"tmp/react-native-empower-mobile-ads_0.4.0_1772707462092_0.20066997896975813","host":"s3://npm-registry-packages-npm-production"}}},"time":{"created":"2026-03-05T10:44:21.978Z","modified":"2026-07-07T11:15:14.242Z","0.4.0":"2026-03-05T10:44:22.285Z"},"bugs":{"url":"https://github.com/empowernet/react-native-empower-mobile-ads/issues"},"license":"MIT","homepage":"https://github.com/empowernet/react-native-empower-mobile-ads#readme","keywords":["react-native","ads","empower","banner","interstitial","rewarded","app-open","preroll"],"repository":{"url":"git+https://github.com/empowernet/react-native-empower-mobile-ads.git","type":"git"},"description":"React Native bridge for Empower Mobile Ads SDK","maintainers":[{"email":"senaaltun@nokta.com","name":"senaaltun"},{"email":"muhsinetki@nokta.com","name":"muhsinetki"},{"email":"mertkaradeniz@nokta.com","name":"mertkaradeniz"}],"readme":"# @empower-nokta/react-native-mobile-ads\n\nReact Native bridge for the Empower Mobile Ads SDK (Android).\n\nSupports banner, interstitial, rewarded, app open, and preroll ad formats.\n\n## Requirements\n\n- React Native 0.70+\n- Android minSdkVersion 21 (Android 5.0)\n- New Architecture: supported via React Native interop layer (0.74+)\n\n## Installation\n\n```bash\nnpm install @empower-nokta/react-native-mobile-ads\n```\n\nThe package supports **auto-linking** — no manual linking required for React Native 0.60+.\n\n## Android Setup\n\nAfter installing, you need to configure 4 things in your Android project:\n\n### Step 1: Add Maven Repository\n\nIn `android/build.gradle` (project-level), add the Empower Maven repository:\n\n```groovy\nallprojects {\n    repositories {\n        google()\n        mavenCentral()\n        maven { url \"https://maven.empower.net/release\" }\n    }\n}\n```\n\n> If your project uses `dependencyResolutionManagement` in `settings.gradle` instead of `allprojects`, add the Maven repository there:\n> ```groovy\n> dependencyResolutionManagement {\n>     repositories {\n>         google()\n>         mavenCentral()\n>         maven { url \"https://maven.empower.net/release\" }\n>     }\n> }\n> ```\n\n### Step 2: Resolve Kotlin Version Conflict\n\nThe Empower SDK uses Kotlin 2.3.0, which may conflict with React Native's Kotlin version. Add these to your `android/build.gradle` (project-level):\n\n```groovy\nallprojects {\n    configurations.all {\n        resolutionStrategy {\n            force \"org.jetbrains.kotlin:kotlin-stdlib:${rootProject.ext.kotlinVersion}\"\n            force \"org.jetbrains.kotlin:kotlin-stdlib-jdk7:${rootProject.ext.kotlinVersion}\"\n            force \"org.jetbrains.kotlin:kotlin-stdlib-jdk8:${rootProject.ext.kotlinVersion}\"\n        }\n    }\n}\n```\n\nAnd in `android/gradle.properties`, add:\n\n```properties\nkotlin.suppressKotlinVersionCompatibilityCheck=2.3.0\n```\n\n### Step 3: Add Google Ad Manager Meta-Data\n\nIn `android/app/src/main/AndroidManifest.xml`, inside the `<application>` tag:\n\n```xml\n<meta-data\n    android:name=\"com.google.android.gms.ads.APPLICATION_ID\"\n    android:value=\"YOUR_ADMOB_APP_ID\"/>\n\n<meta-data\n    android:name=\"com.google.android.gms.ads.AD_MANAGER_APP\"\n    android:value=\"true\"/>\n```\n\nReplace `YOUR_ADMOB_APP_ID` with your Google Ad Manager app ID (e.g., `ca-app-pub-XXXXXXXX~XXXXXXXX`).\n\n### Step 4: Build and Run\n\n```bash\ncd android && ./gradlew clean && cd ..\nnpx react-native run-android\n```\n\n## Usage\n\n### Initialize the SDK\n\n```jsx\nimport { init, setDebugMode, setLogLevel } from '@empower-nokta/react-native-mobile-ads';\n\n// Call early in your app (e.g., App.tsx useEffect)\nasync function initAds() {\n  setDebugMode(__DEV__);\n  setLogLevel(__DEV__ ? 'all' : 'none');\n\n  await init({\n    appAdIdentifier: 'YOUR_APP_IDENTIFIER',\n  });\n}\n```\n\n### Banner Ads\n\n```jsx\nimport { EmpowerBannerAd } from '@empower-nokta/react-native-mobile-ads';\n\nfunction MyScreen() {\n  return (\n    <EmpowerBannerAd\n      zoneId=\"YOUR_BANNER_ZONE_ID\"\n      onAdStatusChanged={(e) => console.log('Banner:', e.nativeEvent)}\n      style={{ width: '100%', minHeight: 50 }}\n    />\n  );\n}\n```\n\n### Interstitial Ads\n\n```jsx\nimport {\n  loadInterstitialAd,\n  showInterstitial,\n  addEventListener,\n  EmpowerAdsEvents,\n} from '@empower-nokta/react-native-mobile-ads';\n\n// Listen for status changes\nconst unsubscribe = addEventListener(EmpowerAdsEvents.INTERSTITIAL_STATUS, (event) => {\n  console.log('Interstitial status:', event.status, event.zoneId);\n});\n\n// Preload\nawait loadInterstitialAd('YOUR_INTERSTITIAL_ZONE_ID');\n\n// Show when ready\nawait showInterstitial('YOUR_INTERSTITIAL_ZONE_ID');\n\n// Cleanup\nunsubscribe();\n```\n\n### Rewarded Ads\n\n```jsx\nimport {\n  loadRewardedAd,\n  showRewarded,\n  addEventListener,\n  EmpowerAdsEvents,\n} from '@empower-nokta/react-native-mobile-ads';\n\nconst unsubscribe = addEventListener(EmpowerAdsEvents.REWARDED_STATUS, (event) => {\n  if (event.status === 'REWARDED') {\n    // Grant reward to user\n  }\n});\n\nawait loadRewardedAd('YOUR_REWARDED_ZONE_ID');\nawait showRewarded('YOUR_REWARDED_ZONE_ID');\n\nunsubscribe();\n```\n\n### App Open Ads\n\n```jsx\nimport { loadAppOpenAd, showAppOpen } from '@empower-nokta/react-native-mobile-ads';\n\nawait loadAppOpenAd('YOUR_APP_OPEN_ZONE_ID');\nawait showAppOpen('YOUR_APP_OPEN_ZONE_ID');\n```\n\n### Settings\n\n```jsx\nimport {\n  setAdsDisabled,\n  setNonPersonalizedAds,\n  setDebugMode,\n  setLogLevel,\n} from '@empower-nokta/react-native-mobile-ads';\n\nsetAdsDisabled(false);\nsetNonPersonalizedAds(true); // GDPR compliance\nsetDebugMode(true);\nsetLogLevel('all'); // 'all' | 'default' | 'error' | 'warning' | 'none'\n```\n\n### Shutdown\n\n```jsx\nimport { shutdown } from '@empower-nokta/react-native-mobile-ads';\n\nshutdown();\n```\n\n## API Reference\n\n| Function | Returns | Description |\n|---|---|---|\n| `init(config)` | `Promise<boolean>` | Initialize the SDK |\n| `isSdkInitialized()` | `Promise<boolean>` | Check if SDK is ready |\n| `setAdsDisabled(bool)` | `void` | Disable/enable all ads |\n| `setNonPersonalizedAds(bool)` | `void` | GDPR non-personalized mode |\n| `setDebugMode(bool)` | `void` | Toggle debug logging |\n| `setLogLevel(level)` | `void` | Set log verbosity |\n| `loadInterstitialAd(zoneId)` | `Promise<boolean>` | Preload interstitial |\n| `showInterstitial(zoneId)` | `Promise<boolean>` | Show interstitial |\n| `loadRewardedAd(zoneId)` | `Promise<boolean>` | Preload rewarded ad |\n| `showRewarded(zoneId)` | `Promise<boolean>` | Show rewarded ad |\n| `loadAppOpenAd(zoneId)` | `Promise<boolean>` | Preload app open ad |\n| `showAppOpen(zoneId)` | `Promise<boolean>` | Show app open ad |\n| `pausePreroll(zoneId)` | `void` | Pause preroll playback |\n| `resumePreroll(zoneId)` | `void` | Resume preroll playback |\n| `destroyPreroll(zoneId)` | `void` | Destroy preroll ad |\n| `shutdown()` | `void` | Shutdown SDK |\n| `addEventListener(event, cb)` | `() => void` | Subscribe to events |\n\n## Events\n\n| Event | Payload |\n|---|---|\n| `EmpowerAds_onSdkReady` | `{}` |\n| `EmpowerAds_onSdkFailed` | `{ error: string }` |\n| `EmpowerAds_onBannerStatusChanged` | `{ status, zoneId, adUnitId }` |\n| `EmpowerAds_onInterstitialStatusChanged` | `{ status, zoneId }` |\n| `EmpowerAds_onRewardedStatusChanged` | `{ status, zoneId }` |\n| `EmpowerAds_onAppOpenStatusChanged` | `{ status, zoneId }` |\n| `EmpowerAds_onPrerollStatusChanged` | `{ status, zoneId }` |\n\n## Troubleshooting\n\n### \"Could not resolve net.empower.mobile.ads:empower-mobile-ads\"\n\nYou need to add the Empower Maven repository to your project-level `android/build.gradle`. See [Step 1](#step-1-add-maven-repository).\n\n### \"Module compiled with an incompatible version of Kotlin\"\n\nAdd the Kotlin version resolution strategy and `suppressKotlinVersionCompatibilityCheck` property. See [Step 2](#step-2-resolve-kotlin-version-conflict).\n\n### TurboModuleRegistry.getEnforcing crash\n\nThis usually means Metro is serving a JS bundle from a different project. Make sure Metro is running from your project root:\n\n```bash\nnpx react-native start --reset-cache\n```\n\nThe module is compatible with New Architecture via React Native's interop layer (RN 0.74+).\n\n### Banner ad loads but is not visible\n\nEnsure the `EmpowerBannerAd` component has explicit dimensions:\n\n```jsx\n<EmpowerBannerAd\n  zoneId=\"YOUR_ZONE_ID\"\n  style={{ width: '100%', minHeight: 50 }}\n/>\n```\n\n### \"No fill\" from Google Ad Manager\n\nThis means no ad is available for your ad unit. Check that your `applicationId` in `build.gradle` matches the package name configured in your Google Ad Manager account.\n\n### SDK initializes but init() Promise never resolves\n\nThe `init()` Promise resolves when the SDK is fully ready (including Google Mobile Ads initialization). This can take a few seconds. If it never resolves, check logcat for errors:\n\n```bash\nadb logcat | grep EmpowerAds\n```\n\n## Notes\n\n- **Android only**: iOS support is not included in this bridge.\n- **Preroll Ads**: Preroll ads require a native `PlayerView` and are not yet bridged as a React component. Use `pausePreroll`/`resumePreroll`/`destroyPreroll` for lifecycle management.\n- **Min SDK**: Android API 21+ (Android 5.0)\n\n## License\n\nMIT\n","readmeFilename":"README.md"}