@react-native-google-mobile-ads/yandex 16.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/LICENSE ADDED
@@ -0,0 +1,32 @@
1
+ Apache-2.0 License
2
+ ------------------
3
+
4
+ Copyright (c) 2021-present Invertase Limited <oss@invertase.io>
5
+
6
+ Licensed under the Apache License, Version 2.0 (the "License");
7
+ you may not use this library except in compliance with the License.
8
+
9
+ You may obtain a copy of the Apache-2.0 License at
10
+
11
+ http://www.apache.org/licenses/LICENSE-2.0
12
+
13
+ Unless required by applicable law or agreed to in writing, software
14
+ distributed under the License is distributed on an "AS IS" BASIS,
15
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
+ See the License for the specific language governing permissions and
17
+ limitations under the License.
18
+
19
+
20
+ Creative Commons Attribution 3.0 License
21
+ ----------------------------------------
22
+
23
+ Copyright (c) 2016-present Invertase Limited <oss@invertase.io>
24
+
25
+ Documentation and other instructional materials provided for this project
26
+ (including on a separate documentation repository or it's documentation website) are
27
+ licensed under the Creative Commons Attribution 3.0 License. Code samples/blocks
28
+ contained therein are licensed under the Apache License, Version 2.0 (the "License"), as above.
29
+
30
+ You may obtain a copy of the Creative Commons Attribution 3.0 License at
31
+
32
+ https://creativecommons.org/licenses/by/3.0/
package/README.md ADDED
@@ -0,0 +1,98 @@
1
+ # `@react-native-google-mobile-ads/yandex`
2
+
3
+ Yandex **Google Ad Manager / AdMob mediation** adapter package for [`react-native-google-mobile-ads`](https://github.com/invertase/react-native-google-mobile-ads).
4
+
5
+ ## Platform disposition: iOS-only
6
+
7
+ Google does **not** publish an open-source / versioned Yandex mediation adapter:
8
+
9
+ - No CocoaPods `GoogleMobileAdsMediationYandex` ([CocoaPods 404](https://cocoapods.org/pods/GoogleMobileAdsMediationYandex))
10
+ - No Maven `com.google.ads.mediation:yandex` (Google Maven 404)
11
+ - Yandex is absent from AdMob / GAM [choose ad sources](https://developers.google.com/admob/ios/choose-networks) lists
12
+ - Google’s `/mediation/yandex` guide URLs return 404 (AdMob + GAM, Android + iOS)
13
+
14
+ Character inventory treats the **Yandex GAM adapter as iOS-focused** (Android none), consistent with the Google publication gaps above.
15
+
16
+ This package therefore ships **iOS only**, linking Yandex’s own published AdMob custom-event adapters — **not** Yandex Mobile Mediation as a host (`GoogleYandexMobileAdsAdapters` / MAX / CloudX are out of scope).
17
+
18
+ Yandex does publish an Android AdMob adapter (`com.yandex.ads.adapter:admob-mobileads` on Maven Central). It is **not** linked here because Google has no official Android Yandex GAM mediation artifact and Character lists Android coverage for this network as none.
19
+
20
+ ## Install
21
+
22
+ ```bash
23
+ yarn add @react-native-google-mobile-ads/yandex
24
+ # peer: react-native-google-mobile-ads
25
+ ```
26
+
27
+ Autolinking pulls in the iOS mediation pod. Rebuild the app after install. Android autolinking is disabled for this package.
28
+
29
+ ## Native adapter class names (AdMob / GAM UI — custom events)
30
+
31
+ Yandex is added to AdMob / GAM mediation as a **custom event** (not a single `GADMediationAdapter*` class). Paste the class name for the ad format:
32
+
33
+ | Platform | Format | Class name |
34
+ | -------- | ------ | ---------- |
35
+ | iOS | Banner | `YMAAdMobCustomEventBanner` |
36
+ | iOS | Interstitial | `YMAAdMobCustomEventInterstitial` |
37
+ | iOS | Rewarded | `YMAAdMobCustomEventRewarded` |
38
+ | iOS | Native | `YMAAdMobCustomEventNative` |
39
+ | Android | — | **not shipped** |
40
+
41
+ Also exported from JS:
42
+
43
+ ```ts
44
+ import {
45
+ nativeAdapterClassName,
46
+ networkSlug,
47
+ } from '@react-native-google-mobile-ads/yandex';
48
+
49
+ // nativeAdapterClassName.android === null
50
+ // nativeAdapterClassName.ios.banner === 'YMAAdMobCustomEventBanner'
51
+ ```
52
+
53
+ Custom-event parameter JSON (Yandex Ad Unit ID) must still be configured in the AdMob / GAM UI per Yandex’s guide, e.g. `{"adUnitId": "R-M-XXXXXX-X"}`.
54
+
55
+ ## Mediation dependencies (pinned in this package)
56
+
57
+ | Platform | Coordinate | Version pin |
58
+ | -------- | ---------- | ----------- |
59
+ | iOS | CocoaPods `YandexMobileAdsAdMobAdapters` | `8.4.0.0` |
60
+ | Android | — | **not linked** |
61
+
62
+ Citations (verify at upgrade time):
63
+
64
+ - iOS AdMob (Yandex → Google mediation): https://ads.yandex.com/helpcenter/en/dev/ios/admob-third (`pod 'YandexMobileAdsAdMobAdapters', '8.0.0.0'` example; pin uses current CocoaPods Trunk latest)
65
+ - CocoaPods: https://cocoapods.org/pods/YandexMobileAdsAdMobAdapters (Trunk latest `8.4.0.0` as of 2026-09-04)
66
+ - CocoaPods Specs podspec `8.4.0.0`: depends on `YandexMobileAds ~> 8.4.0`, `Google-Mobile-Ads-SDK ~> 13.6.0`, `platforms.ios` `13.0`
67
+ - Android AdMob adapter exists at Maven Central but is **not** used here: https://central.sonatype.com/artifact/com.yandex.ads.adapter/admob-mobileads (`8.4.0.0`); Yandex guide: https://ads.yandex.com/helpcenter/en/dev/android/admob-third
68
+ - Do **not** use `GoogleYandexMobileAdsAdapters` — that enables Google **inside Yandex Mobile Mediation** (Yandex-as-host), which is out of RNGMA adapter scope
69
+
70
+ Core continues to own `play-services-ads` / `Google-Mobile-Ads-SDK`. This package does not re-pin the GMA SDK.
71
+
72
+ `YandexMobileAdsAdMobAdapters@8.4.0.0` requires `Google-Mobile-Ads-SDK ~> 13.6.0`, which matches the core package's iOS GMA pin.
73
+
74
+ Platform floors align with core: iOS **15.1** and Android minSdk **24**. The mediation integration remains iOS-only.
75
+
76
+ > Google’s mediation guides permit Android minSdk 23 upstream; this product advertises 24 to match core.
77
+
78
+ ## Expo (optional)
79
+
80
+ ```js
81
+ // app.json / app.config.js plugins
82
+ [
83
+ '@react-native-google-mobile-ads/yandex',
84
+ {
85
+ // Pass Yandex SKAdNetwork IDs from Yandex’s current docs
86
+ skAdNetworkItems: [/* ... */],
87
+ },
88
+ ]
89
+ ```
90
+
91
+ App IDs stay in the core Expo plugin.
92
+
93
+ ## Out of scope
94
+
95
+ - Yandex Mobile Mediation **host** SDK (`YandexMobileAdsMediation`, `GoogleYandexMobileAdsAdapters`)
96
+ - AppLovin MAX host SDK
97
+ - CloudX / other non-GAM hosts
98
+ - Inventing a Google-published Android Yandex GAM artifact
@@ -0,0 +1,37 @@
1
+ require 'json'
2
+
3
+ package = JSON.parse(File.read(File.join(__dir__, 'package.json')))
4
+ gam_adapter = package['gamAdapter']
5
+ mediation_pod = gam_adapter['iosPod']
6
+ mediation_version = package['sdkVersions']['ios']['googleMobileAdsMediation']
7
+
8
+ Pod::Spec.new do |s|
9
+ s.name = "RNGoogleMobileAdsAdapterYandex"
10
+ s.version = package["version"]
11
+ s.summary = package["description"]
12
+ s.description = package["description"]
13
+ s.homepage = "https://github.com/invertase/react-native-google-mobile-ads"
14
+ s.license = package["license"]
15
+ s.authors = "Invertase Limited"
16
+ s.source = {
17
+ :git => "#{package["repository"]["url"]}.git",
18
+ :tag => "v#{s.version}"
19
+ }
20
+ # Yandex AdMob adapters require iOS 13.0+ (CocoaPods podspec platforms.ios).
21
+ # https://ads.yandex.com/helpcenter/en/dev/ios/admob-third
22
+ # https://cocoapods.org/pods/YandexMobileAdsAdMobAdapters
23
+ s.platforms = { :ios => "15.1" }
24
+ s.source_files = "ios/**/*.{h,m,mm,swift}"
25
+
26
+ if respond_to?(:install_modules_dependencies, true)
27
+ install_modules_dependencies(s)
28
+ else
29
+ s.dependency "React-Core"
30
+ end
31
+
32
+ # Yandex-published AdMob custom-event adapters (Google does not publish
33
+ # GoogleMobileAdsMediationYandex). Not GoogleYandexMobileAdsAdapters (Yandex-as-host).
34
+ # https://ads.yandex.com/helpcenter/en/dev/ios/admob-third
35
+ # https://cocoapods.org/pods/YandexMobileAdsAdMobAdapters
36
+ s.dependency mediation_pod, mediation_version
37
+ end
@@ -0,0 +1,66 @@
1
+ import groovy.json.JsonSlurper
2
+
3
+ buildscript {
4
+ ext.getExtOrDefault = { name, fallback ->
5
+ return rootProject.ext.has(name) ? rootProject.ext.get(name) : fallback
6
+ }
7
+
8
+ // AGP is only required when opening this android/ folder stand-alone.
9
+ if (project == rootProject) {
10
+ repositories {
11
+ google()
12
+ mavenCentral()
13
+ }
14
+ dependencies {
15
+ classpath("com.android.tools.build:gradle:8.6.0")
16
+ }
17
+ }
18
+ }
19
+
20
+ apply plugin: "com.android.library"
21
+
22
+ def packageJson = new JsonSlurper().parseText(file("${projectDir}/../package.json").text)
23
+ def gamAdapter = packageJson.gamAdapter
24
+ def sdkVersions = packageJson.sdkVersions.android
25
+
26
+ android {
27
+ // A-0 layout stub only: this package is iOS-only (see package.json gamAdapter.platforms).
28
+ // Google publishes no com.google.ads.mediation:yandex; Android autolinking is disabled.
29
+ namespace "io.invertase.googlemobileads.adapters.yandex"
30
+
31
+ compileSdkVersion sdkVersions.compileSdk as Integer
32
+ buildToolsVersion sdkVersions.buildTools
33
+
34
+ defaultConfig {
35
+ minSdkVersion sdkVersions.minSdk as Integer
36
+ targetSdkVersion sdkVersions.targetSdk as Integer
37
+ buildConfigField "String", "GAM_ADAPTER_NETWORK", "\"${gamAdapter.network}\""
38
+ buildConfigField "String", "GAM_ADAPTER_ANDROID_SHIPPED", "\"false\""
39
+ }
40
+
41
+ compileOptions {
42
+ sourceCompatibility JavaVersion.VERSION_1_8
43
+ targetCompatibility JavaVersion.VERSION_1_8
44
+ }
45
+
46
+ buildFeatures {
47
+ buildConfig true
48
+ }
49
+
50
+ sourceSets {
51
+ main {
52
+ java.srcDirs = ["src/main/java"]
53
+ }
54
+ }
55
+ }
56
+
57
+ repositories {
58
+ google()
59
+ mavenCentral()
60
+ }
61
+
62
+ dependencies {
63
+ // Intentionally empty: no Android Yandex GAM mediation artifact is linked.
64
+ // Yandex publishes com.yandex.ads.adapter:admob-mobileads, but Google has no
65
+ // official Android Yandex GAM adapter and Character inventory is iOS-only.
66
+ }
@@ -0,0 +1,6 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <!--
3
+ iOS-only Yandex GAM/AdMob adapter package. Android module is an A-0 layout stub;
4
+ autolinking is disabled (react-native.config.js). No mediation artifact linked.
5
+ -->
6
+ <manifest xmlns:android="http://schemas.android.com/apk/res/android" />
@@ -0,0 +1,10 @@
1
+ package io.invertase.googlemobileads.adapters.yandex;
2
+
3
+ /**
4
+ * Package marker so the Android library module has a compilable source root.
5
+ * This package does not expose a TurboModule and does <strong>not</strong> link
6
+ * an Android mediation artifact (iOS-only Yandex AdMob adapters).
7
+ */
8
+ public final class AdapterPackageMarker {
9
+ private AdapterPackageMarker() {}
10
+ }
package/app.plugin.js ADDED
@@ -0,0 +1 @@
1
+ module.exports = require('./plugin/build');
@@ -0,0 +1,12 @@
1
+ #import <Foundation/Foundation.h>
2
+
3
+ /**
4
+ * Package marker so the podspec has a compilable source file.
5
+ * Mediation is linked via the YandexMobileAdsAdMobAdapters pod dependency
6
+ * (Yandex-published AdMob custom-event adapters; iOS-only).
7
+ */
8
+ @interface RNGoogleMobileAdsAdapterYandexMarker : NSObject
9
+ @end
10
+
11
+ @implementation RNGoogleMobileAdsAdapterYandexMarker
12
+ @end
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.networkSlug = exports.nativeAdapterClassName = void 0;
7
+ /**
8
+ * Yandex GAM / AdMob mediation adapter package public surface.
9
+ *
10
+ * Exports adapter class-name constants for AdMob / GAM UI paste / docs only.
11
+ * Does **not** add JS ad APIs — core `initialize()` adapter statuses remain the
12
+ * discovery signal (API design §5.3).
13
+ *
14
+ * **iOS-only:** Google does not publish `GoogleMobileAdsMediationYandex` /
15
+ * `com.google.ads.mediation:yandex`. Character’s GAM adapter inventory is
16
+ * iOS-focused. This package links Yandex’s published AdMob custom-event pod
17
+ * `YandexMobileAdsAdMobAdapters` (not Yandex-as-host / `GoogleYandexMobileAdsAdapters`).
18
+ *
19
+ * @see https://ads.yandex.com/helpcenter/en/dev/ios/admob-third
20
+ * @see https://cocoapods.org/pods/YandexMobileAdsAdMobAdapters
21
+ */
22
+
23
+ /** Per-format iOS custom-event class names for AdMob / GAM console paste. */
24
+
25
+ /**
26
+ * Native adapter class names for this package.
27
+ * `android` is `null` — no Android mediation artifact is linked (see README).
28
+ */
29
+
30
+ /** Network slug for this Character GAM adapter package. */
31
+ const networkSlug = exports.networkSlug = 'yandex';
32
+
33
+ /**
34
+ * Fully-qualified native mediation adapter class names for AdMob / GAM console.
35
+ * Yandex integrates as **custom events** (not a single `GADMediationAdapter*` class).
36
+ *
37
+ * @see https://ads.yandex.com/helpcenter/en/dev/ios/admob-third
38
+ */
39
+ const nativeAdapterClassName = exports.nativeAdapterClassName = {
40
+ android: null,
41
+ ios: {
42
+ banner: 'YMAAdMobCustomEventBanner',
43
+ interstitial: 'YMAAdMobCustomEventInterstitial',
44
+ rewarded: 'YMAAdMobCustomEventRewarded',
45
+ native: 'YMAAdMobCustomEventNative'
46
+ }
47
+ };
48
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["networkSlug","exports","nativeAdapterClassName","android","ios","banner","interstitial","rewarded","native"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAQA;AACA;AACA;AACA;;AAMA;AACO,MAAMA,WAAW,GAAAC,OAAA,CAAAD,WAAA,GAAG,QAAiB;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACO,MAAME,sBAA8C,GAAAD,OAAA,CAAAC,sBAAA,GAAG;EAC5DC,OAAO,EAAE,IAAI;EACbC,GAAG,EAAE;IACHC,MAAM,EAAE,2BAA2B;IACnCC,YAAY,EAAE,iCAAiC;IAC/CC,QAAQ,EAAE,6BAA6B;IACvCC,MAAM,EAAE;EACV;AACF,CAAC","ignoreList":[]}
@@ -0,0 +1 @@
1
+ {"type":"commonjs"}
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * Yandex GAM / AdMob mediation adapter package public surface.
5
+ *
6
+ * Exports adapter class-name constants for AdMob / GAM UI paste / docs only.
7
+ * Does **not** add JS ad APIs — core `initialize()` adapter statuses remain the
8
+ * discovery signal (API design §5.3).
9
+ *
10
+ * **iOS-only:** Google does not publish `GoogleMobileAdsMediationYandex` /
11
+ * `com.google.ads.mediation:yandex`. Character’s GAM adapter inventory is
12
+ * iOS-focused. This package links Yandex’s published AdMob custom-event pod
13
+ * `YandexMobileAdsAdMobAdapters` (not Yandex-as-host / `GoogleYandexMobileAdsAdapters`).
14
+ *
15
+ * @see https://ads.yandex.com/helpcenter/en/dev/ios/admob-third
16
+ * @see https://cocoapods.org/pods/YandexMobileAdsAdMobAdapters
17
+ */
18
+
19
+ /** Per-format iOS custom-event class names for AdMob / GAM console paste. */
20
+
21
+ /**
22
+ * Native adapter class names for this package.
23
+ * `android` is `null` — no Android mediation artifact is linked (see README).
24
+ */
25
+
26
+ /** Network slug for this Character GAM adapter package. */
27
+ export const networkSlug = 'yandex';
28
+
29
+ /**
30
+ * Fully-qualified native mediation adapter class names for AdMob / GAM console.
31
+ * Yandex integrates as **custom events** (not a single `GADMediationAdapter*` class).
32
+ *
33
+ * @see https://ads.yandex.com/helpcenter/en/dev/ios/admob-third
34
+ */
35
+ export const nativeAdapterClassName = {
36
+ android: null,
37
+ ios: {
38
+ banner: 'YMAAdMobCustomEventBanner',
39
+ interstitial: 'YMAAdMobCustomEventInterstitial',
40
+ rewarded: 'YMAAdMobCustomEventRewarded',
41
+ native: 'YMAAdMobCustomEventNative'
42
+ }
43
+ };
44
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["networkSlug","nativeAdapterClassName","android","ios","banner","interstitial","rewarded","native"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAQA;AACA;AACA;AACA;;AAMA;AACA,OAAO,MAAMA,WAAW,GAAG,QAAiB;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,sBAA8C,GAAG;EAC5DC,OAAO,EAAE,IAAI;EACbC,GAAG,EAAE;IACHC,MAAM,EAAE,2BAA2B;IACnCC,YAAY,EAAE,iCAAiC;IAC/CC,QAAQ,EAAE,6BAA6B;IACvCC,MAAM,EAAE;EACV;AACF,CAAC","ignoreList":[]}
@@ -0,0 +1 @@
1
+ {"type":"module"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Yandex GAM / AdMob mediation adapter package public surface.
3
+ *
4
+ * Exports adapter class-name constants for AdMob / GAM UI paste / docs only.
5
+ * Does **not** add JS ad APIs — core `initialize()` adapter statuses remain the
6
+ * discovery signal (API design §5.3).
7
+ *
8
+ * **iOS-only:** Google does not publish `GoogleMobileAdsMediationYandex` /
9
+ * `com.google.ads.mediation:yandex`. Character’s GAM adapter inventory is
10
+ * iOS-focused. This package links Yandex’s published AdMob custom-event pod
11
+ * `YandexMobileAdsAdMobAdapters` (not Yandex-as-host / `GoogleYandexMobileAdsAdapters`).
12
+ *
13
+ * @see https://ads.yandex.com/helpcenter/en/dev/ios/admob-third
14
+ * @see https://cocoapods.org/pods/YandexMobileAdsAdMobAdapters
15
+ */
16
+ /** Per-format iOS custom-event class names for AdMob / GAM console paste. */
17
+ export type YandexIosCustomEventClassNames = {
18
+ banner: string;
19
+ interstitial: string;
20
+ rewarded: string;
21
+ native: string;
22
+ };
23
+ /**
24
+ * Native adapter class names for this package.
25
+ * `android` is `null` — no Android mediation artifact is linked (see README).
26
+ */
27
+ export type NativeAdapterClassName = {
28
+ android: null;
29
+ ios: YandexIosCustomEventClassNames;
30
+ };
31
+ /** Network slug for this Character GAM adapter package. */
32
+ export declare const networkSlug: "yandex";
33
+ /**
34
+ * Fully-qualified native mediation adapter class names for AdMob / GAM console.
35
+ * Yandex integrates as **custom events** (not a single `GADMediationAdapter*` class).
36
+ *
37
+ * @see https://ads.yandex.com/helpcenter/en/dev/ios/admob-third
38
+ */
39
+ export declare const nativeAdapterClassName: NativeAdapterClassName;
40
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,6EAA6E;AAC7E,MAAM,MAAM,8BAA8B,GAAG;IAC3C,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,sBAAsB,GAAG;IACnC,OAAO,EAAE,IAAI,CAAC;IACd,GAAG,EAAE,8BAA8B,CAAC;CACrC,CAAC;AAEF,2DAA2D;AAC3D,eAAO,MAAM,WAAW,EAAG,QAAiB,CAAC;AAE7C;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB,EAAE,sBAQpC,CAAC"}
@@ -0,0 +1 @@
1
+ {"type":"commonjs"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Yandex GAM / AdMob mediation adapter package public surface.
3
+ *
4
+ * Exports adapter class-name constants for AdMob / GAM UI paste / docs only.
5
+ * Does **not** add JS ad APIs — core `initialize()` adapter statuses remain the
6
+ * discovery signal (API design §5.3).
7
+ *
8
+ * **iOS-only:** Google does not publish `GoogleMobileAdsMediationYandex` /
9
+ * `com.google.ads.mediation:yandex`. Character’s GAM adapter inventory is
10
+ * iOS-focused. This package links Yandex’s published AdMob custom-event pod
11
+ * `YandexMobileAdsAdMobAdapters` (not Yandex-as-host / `GoogleYandexMobileAdsAdapters`).
12
+ *
13
+ * @see https://ads.yandex.com/helpcenter/en/dev/ios/admob-third
14
+ * @see https://cocoapods.org/pods/YandexMobileAdsAdMobAdapters
15
+ */
16
+ /** Per-format iOS custom-event class names for AdMob / GAM console paste. */
17
+ export type YandexIosCustomEventClassNames = {
18
+ banner: string;
19
+ interstitial: string;
20
+ rewarded: string;
21
+ native: string;
22
+ };
23
+ /**
24
+ * Native adapter class names for this package.
25
+ * `android` is `null` — no Android mediation artifact is linked (see README).
26
+ */
27
+ export type NativeAdapterClassName = {
28
+ android: null;
29
+ ios: YandexIosCustomEventClassNames;
30
+ };
31
+ /** Network slug for this Character GAM adapter package. */
32
+ export declare const networkSlug: "yandex";
33
+ /**
34
+ * Fully-qualified native mediation adapter class names for AdMob / GAM console.
35
+ * Yandex integrates as **custom events** (not a single `GADMediationAdapter*` class).
36
+ *
37
+ * @see https://ads.yandex.com/helpcenter/en/dev/ios/admob-third
38
+ */
39
+ export declare const nativeAdapterClassName: NativeAdapterClassName;
40
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,6EAA6E;AAC7E,MAAM,MAAM,8BAA8B,GAAG;IAC3C,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,sBAAsB,GAAG;IACnC,OAAO,EAAE,IAAI,CAAC;IACd,GAAG,EAAE,8BAA8B,CAAC;CACrC,CAAC;AAEF,2DAA2D;AAC3D,eAAO,MAAM,WAAW,EAAG,QAAiB,CAAC;AAE7C;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB,EAAE,sBAQpC,CAAC"}
@@ -0,0 +1 @@
1
+ {"type":"module"}
package/package.json ADDED
@@ -0,0 +1,138 @@
1
+ {
2
+ "name": "@react-native-google-mobile-ads/yandex",
3
+ "version": "16.5.0",
4
+ "description": "Yandex Google Mobile Ads (GAM/AdMob) mediation adapter for react-native-google-mobile-ads. Links Yandex’s published AdMob custom-event adapters on iOS only; does not add JS ad APIs. Not Yandex-as-host / MAX / CloudX.",
5
+ "author": "Invertase <oss@invertase.io> (http://invertase.io)",
6
+ "license": "Apache-2.0",
7
+ "repository": {
8
+ "type": "git",
9
+ "url": "https://github.com/invertase/react-native-google-mobile-ads",
10
+ "directory": "packages/yandex"
11
+ },
12
+ "keywords": [
13
+ "react-native",
14
+ "google-mobile-ads",
15
+ "admob",
16
+ "mediation",
17
+ "gam",
18
+ "yandex"
19
+ ],
20
+ "main": "lib/commonjs/index.js",
21
+ "module": "lib/module/index.js",
22
+ "react-native": "src/index.ts",
23
+ "types": "lib/typescript/commonjs/index.d.ts",
24
+ "exports": {
25
+ ".": {
26
+ "react-native": {
27
+ "types": "./lib/typescript/module/index.d.ts",
28
+ "default": "./src/index.ts"
29
+ },
30
+ "source": {
31
+ "types": "./lib/typescript/module/index.d.ts",
32
+ "default": "./src/index.ts"
33
+ },
34
+ "import": {
35
+ "types": "./lib/typescript/module/index.d.ts",
36
+ "default": "./lib/module/index.js"
37
+ },
38
+ "require": {
39
+ "types": "./lib/typescript/commonjs/index.d.ts",
40
+ "default": "./lib/commonjs/index.js"
41
+ },
42
+ "default": "./lib/commonjs/index.js"
43
+ },
44
+ "./app.plugin": "./app.plugin.js",
45
+ "./app.plugin.js": "./app.plugin.js",
46
+ "./package.json": "./package.json"
47
+ },
48
+ "files": [
49
+ "/android/",
50
+ "/ios/",
51
+ "/lib/",
52
+ "/plugin/",
53
+ "/src/",
54
+ "/LICENSE",
55
+ "/RNGoogleMobileAdsAdapterYandex.podspec",
56
+ "/app.plugin.js",
57
+ "/react-native.config.js"
58
+ ],
59
+ "publishConfig": {
60
+ "access": "public"
61
+ },
62
+ "gamAdapter": {
63
+ "network": "yandex",
64
+ "platforms": [
65
+ "ios"
66
+ ],
67
+ "androidArtifact": null,
68
+ "androidAdapterClassName": null,
69
+ "iosPod": "YandexMobileAdsAdMobAdapters",
70
+ "iosAdapterClassNames": {
71
+ "banner": "YMAAdMobCustomEventBanner",
72
+ "interstitial": "YMAAdMobCustomEventInterstitial",
73
+ "rewarded": "YMAAdMobCustomEventRewarded",
74
+ "native": "YMAAdMobCustomEventNative"
75
+ },
76
+ "publisher": "yandex",
77
+ "integration": "custom-event"
78
+ },
79
+ "sdkVersions": {
80
+ "ios": {
81
+ "googleMobileAdsMediation": "8.4.0.0"
82
+ },
83
+ "android": {
84
+ "minSdk": 24,
85
+ "targetSdk": 36,
86
+ "compileSdk": 36,
87
+ "buildTools": "36.0.0"
88
+ }
89
+ },
90
+ "react-native-builder-bob": {
91
+ "source": "src",
92
+ "output": "lib",
93
+ "targets": [
94
+ [
95
+ "commonjs",
96
+ {
97
+ "esm": true
98
+ }
99
+ ],
100
+ [
101
+ "module",
102
+ {
103
+ "esm": true
104
+ }
105
+ ],
106
+ "typescript"
107
+ ]
108
+ },
109
+ "scripts": {
110
+ "prepare": "yarn build && yarn build:plugin",
111
+ "build": "bob build",
112
+ "build:clean": "rimraf android/build && rimraf ios/build && rimraf lib && rimraf plugin/build",
113
+ "build:plugin": "yarn tsc --build plugin"
114
+ },
115
+ "peerDependencies": {
116
+ "@expo/config-plugins": ">=5.0.0",
117
+ "expo": ">=47.0.0",
118
+ "react": "*",
119
+ "react-native": ">=0.76",
120
+ "react-native-google-mobile-ads": ">=17.0.0"
121
+ },
122
+ "peerDependenciesMeta": {
123
+ "@expo/config-plugins": {
124
+ "optional": true
125
+ },
126
+ "expo": {
127
+ "optional": true
128
+ }
129
+ },
130
+ "devDependencies": {
131
+ "@expo/config-plugins": "^54.0.4",
132
+ "react-native-builder-bob": "^0.40.13",
133
+ "react-native-google-mobile-ads": "16.5.0",
134
+ "rimraf": "^6.0.1",
135
+ "typescript": "^5.9.3"
136
+ },
137
+ "gitHead": "5229e2daf94d943a9aa6c8501dd31bf9c554cd0b"
138
+ }
@@ -0,0 +1,15 @@
1
+ import { ConfigPlugin } from '@expo/config-plugins';
2
+ type PluginParameters = {
3
+ /**
4
+ * Yandex SKAdNetwork identifiers to merge into Info.plist.
5
+ * Core's Expo plugin owns app IDs; this adapter only merges mediation network rows.
6
+ * Pass identifiers from Yandex’s current SKAdNetwork documentation at integrate time.
7
+ */
8
+ skAdNetworkItems?: string[];
9
+ };
10
+ /**
11
+ * Optional Expo config plugin for `@react-native-google-mobile-ads/yandex`.
12
+ * Does not set GMA app IDs (core plugin).
13
+ */
14
+ declare const withRNGoogleMobileAdsAdapterYandex: ConfigPlugin<PluginParameters>;
15
+ export default withRNGoogleMobileAdsAdapterYandex;
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const config_plugins_1 = require("@expo/config-plugins");
4
+ const withAdapterSkAdNetworkItems = (config, skAdNetworkItems) => {
5
+ if (skAdNetworkItems === undefined || skAdNetworkItems.length === 0) {
6
+ return config;
7
+ }
8
+ return (0, config_plugins_1.withInfoPlist)(config, config => {
9
+ config.modResults.SKAdNetworkItems = config.modResults.SKAdNetworkItems ?? [];
10
+ const existingIdentifiers = config.modResults.SKAdNetworkItems.map((item) => item.SKAdNetworkIdentifier);
11
+ const missingIdentifiers = skAdNetworkItems.filter(identifier => !existingIdentifiers.includes(identifier));
12
+ config.modResults.SKAdNetworkItems.push(...missingIdentifiers.map(identifier => ({
13
+ SKAdNetworkIdentifier: identifier,
14
+ })));
15
+ return config;
16
+ });
17
+ };
18
+ /**
19
+ * Optional Expo config plugin for `@react-native-google-mobile-ads/yandex`.
20
+ * Does not set GMA app IDs (core plugin).
21
+ */
22
+ const withRNGoogleMobileAdsAdapterYandex = (config, { skAdNetworkItems } = {}) => {
23
+ return (0, config_plugins_1.withPlugins)(config, [[withAdapterSkAdNetworkItems, skAdNetworkItems]]);
24
+ };
25
+ exports.default = withRNGoogleMobileAdsAdapterYandex;
@@ -0,0 +1,52 @@
1
+ import { ConfigPlugin, withInfoPlist, withPlugins } from '@expo/config-plugins';
2
+
3
+ type PluginParameters = {
4
+ /**
5
+ * Yandex SKAdNetwork identifiers to merge into Info.plist.
6
+ * Core's Expo plugin owns app IDs; this adapter only merges mediation network rows.
7
+ * Pass identifiers from Yandex’s current SKAdNetwork documentation at integrate time.
8
+ */
9
+ skAdNetworkItems?: string[];
10
+ };
11
+
12
+ const withAdapterSkAdNetworkItems: ConfigPlugin<PluginParameters['skAdNetworkItems']> = (
13
+ config,
14
+ skAdNetworkItems,
15
+ ) => {
16
+ if (skAdNetworkItems === undefined || skAdNetworkItems.length === 0) {
17
+ return config;
18
+ }
19
+
20
+ return withInfoPlist(config, config => {
21
+ config.modResults.SKAdNetworkItems = config.modResults.SKAdNetworkItems ?? [];
22
+
23
+ const existingIdentifiers = config.modResults.SKAdNetworkItems.map(
24
+ (item: { SKAdNetworkIdentifier: string }) => item.SKAdNetworkIdentifier,
25
+ );
26
+
27
+ const missingIdentifiers = skAdNetworkItems.filter(
28
+ identifier => !existingIdentifiers.includes(identifier),
29
+ );
30
+
31
+ config.modResults.SKAdNetworkItems.push(
32
+ ...missingIdentifiers.map(identifier => ({
33
+ SKAdNetworkIdentifier: identifier,
34
+ })),
35
+ );
36
+
37
+ return config;
38
+ });
39
+ };
40
+
41
+ /**
42
+ * Optional Expo config plugin for `@react-native-google-mobile-ads/yandex`.
43
+ * Does not set GMA app IDs (core plugin).
44
+ */
45
+ const withRNGoogleMobileAdsAdapterYandex: ConfigPlugin<PluginParameters> = (
46
+ config,
47
+ { skAdNetworkItems } = {},
48
+ ) => {
49
+ return withPlugins(config, [[withAdapterSkAdNetworkItems, skAdNetworkItems]]);
50
+ };
51
+
52
+ export default withRNGoogleMobileAdsAdapterYandex;
@@ -0,0 +1,9 @@
1
+ {
2
+ "extends": "expo-module-scripts/tsconfig.plugin",
3
+ "compilerOptions": {
4
+ "outDir": "build",
5
+ "rootDir": "src"
6
+ },
7
+ "include": ["./src"],
8
+ "exclude": ["**/__mocks__/*", "**/__tests__/*"]
9
+ }
@@ -0,0 +1 @@
1
+ {"root":["./src/index.ts"],"version":"5.9.3"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Autolinking entry for the Yandex GAM adapter package.
3
+ * iOS-only: Android is disabled (Google has no official Android Yandex GAM artifact;
4
+ * Character inventory is iOS-focused). No TurboModule / Fabric view.
5
+ */
6
+ module.exports = {
7
+ dependency: {
8
+ platforms: {
9
+ android: null,
10
+ ios: {},
11
+ },
12
+ },
13
+ };
package/src/index.ts ADDED
@@ -0,0 +1,51 @@
1
+ /**
2
+ * Yandex GAM / AdMob mediation adapter package public surface.
3
+ *
4
+ * Exports adapter class-name constants for AdMob / GAM UI paste / docs only.
5
+ * Does **not** add JS ad APIs — core `initialize()` adapter statuses remain the
6
+ * discovery signal (API design §5.3).
7
+ *
8
+ * **iOS-only:** Google does not publish `GoogleMobileAdsMediationYandex` /
9
+ * `com.google.ads.mediation:yandex`. Character’s GAM adapter inventory is
10
+ * iOS-focused. This package links Yandex’s published AdMob custom-event pod
11
+ * `YandexMobileAdsAdMobAdapters` (not Yandex-as-host / `GoogleYandexMobileAdsAdapters`).
12
+ *
13
+ * @see https://ads.yandex.com/helpcenter/en/dev/ios/admob-third
14
+ * @see https://cocoapods.org/pods/YandexMobileAdsAdMobAdapters
15
+ */
16
+
17
+ /** Per-format iOS custom-event class names for AdMob / GAM console paste. */
18
+ export type YandexIosCustomEventClassNames = {
19
+ banner: string;
20
+ interstitial: string;
21
+ rewarded: string;
22
+ native: string;
23
+ };
24
+
25
+ /**
26
+ * Native adapter class names for this package.
27
+ * `android` is `null` — no Android mediation artifact is linked (see README).
28
+ */
29
+ export type NativeAdapterClassName = {
30
+ android: null;
31
+ ios: YandexIosCustomEventClassNames;
32
+ };
33
+
34
+ /** Network slug for this Character GAM adapter package. */
35
+ export const networkSlug = 'yandex' as const;
36
+
37
+ /**
38
+ * Fully-qualified native mediation adapter class names for AdMob / GAM console.
39
+ * Yandex integrates as **custom events** (not a single `GADMediationAdapter*` class).
40
+ *
41
+ * @see https://ads.yandex.com/helpcenter/en/dev/ios/admob-third
42
+ */
43
+ export const nativeAdapterClassName: NativeAdapterClassName = {
44
+ android: null,
45
+ ios: {
46
+ banner: 'YMAAdMobCustomEventBanner',
47
+ interstitial: 'YMAAdMobCustomEventInterstitial',
48
+ rewarded: 'YMAAdMobCustomEventRewarded',
49
+ native: 'YMAAdMobCustomEventNative',
50
+ },
51
+ };