Integrating the Mobile Ads React Native plugin
System: Yandex Advertising Network
React Native is a popular cross-platform framework for mobile app development. Developers can use it to write shared code that runs on multiple operating systems, including both Android and iOS.
Integrating the Yandex Mobile Ads React Native SDK into your app is the first step toward serving ads and generating revenue. After integrating the SDK, you can select an ad format for your app monetization (for example, banner or rewarded ads) and perform its setup.
App requirements
- Use Android Studio 2021 or higher.
- Check that your app's build file uses the following values:
- minSdkVersion 23 or higher.
- compileSdkVersion 34 or higher.
- Use iOS 13 or higher.
- Use Xcode 16.1 or higher.
Setting up the app in your Yandex Advertising Network account
Here's how to register your app in the Yandex Advertising Network:
- Log in or register your account in the Yandex Advertising Network.
- Register your app in the Yandex Advertising Network.
Integration
Integration of the Yandex Mobile Ads SDK involves the following steps:
- Integrating the Yandex Mobile Ads React Native plugin.
- Performing platform-specific setup.
- Initializing the library.
- Testing the integration.
Integrating the Yandex Mobile Ads React Native plugin
To integrate the Yandex Mobile Ads SDK into a React Native app, use the Yandex Mobile Ads React Native plugin.
Install the Yandex Mobile Ads React Native plugin in your project. Run the following command from the project's root folder:
npm install yandex-mobile-ads
Once the plugin is added, a string with the following dependency appears in the package.json file:
"dependencies": {
"yandex-mobile-ads": "^7.18.0"
}
Platform-specific setup
Permission to use the advertising ID
Advertising IDs are unique IDs provided by Google Play services. They're used to serve ads to users who consent to personalized ads. Users can opt out of personalized ads or reset the ID in the settings. In this case, ad networks can't use it to serve relevant ads.
You can remove the permission, if necessary. For example, you may need to do this if a policy, such as the Families Policy, doesn't allow using the ID to serve ads.
To prevent the permission from being added to your app's main manifest, add the following to the AndroidManifest.xml file:
<manifest>
<uses-permission android:name="com.google.android.gms.permission.AD_ID" tools:node="remove"/>
</manifest>
Warning
Lack of permission and access to the ID may impact your revenue, because your app may serve less relevant ads.
COPPA setup
You can set up these policies using the AndroidManifest.file or right before initializing the SDK manually.
If you've chosen automatic initialization, add the following code to the AndroidManifest.xml file to notify the Yandex Mobile Ads SDK when the app user is a child:
<manifest>
<application>
<!-- Disable the use of child's personal data for app monetization. -->
<meta-data
android:name="@string/yandex_mobileads_age_restricted_user"
android:value="true" />
</application>
</manifest>
SKAdNetwork support
What is SKAdNetwork?
With release of iOS 14, Apple restricted access to IDFA identifier, which was previously used to attribute app installations to advertising campaigns. Ad networks can no longer fully rely on IDFA for complete conversion attribution in advertising campaigns. SKAdNetwork solves this problem by providing aggregated attribution data without revealing users' personal information.
Mobile Ads SDK is integrated with SKAdNetwork and provides installation tracking across all devices, including those where IDFA is unavailable.
For more information, see Configuring a Source App of Apple documentation.
Why implement SKAdNetwork?
To correctly track all conversions when displaying ads, your app needs to declare ad network IDs in its Info.plist. Otherwise, some conversions made in the app will be lost, which can negatively impact ad revenue.
Implementing SKAdNetwork
Direct list embedding
List for manual addition of identifiers to Info.plist:
SKAdNetwork identifier list
<key>SKAdNetworkItems</key>
<array>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>zq492l623r.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>cstr6suwn9.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>n9x2a789qt.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>r26jy69rpl.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>5l3tpt7t6e.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>gta9lk7p23.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>4dzt52r2t5.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>su67r6k2v3.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>ludvb6z3bs.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>kbd757ywx3.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>633vhxswh4.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>tmhh9296z4.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>vcra2ehyfk.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>zh3b7bxvad.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>xmn954pzmp.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>79w64w269u.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>488r3q3dtq.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>d7g9azk84q.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>nzq8sh4pbs.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>866k9ut3g3.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>2q884k2j68.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>x8jxxk4ff5.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>gfat3222tu.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>pd25vrrwzn.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>lr83yxwka7.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>cp8zw746q7.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>pwdxu55a5a.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>wg4vff78zm.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>g28c52eehv.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>523jb4fst2.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>294l99pt4k.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>3qy4746246.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>a8cz6cu7e5.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>ggvn48r87g.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>y755zyxw56.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>qlbq5gtkt8.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>mls7yz5dvl.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>67369282zy.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>899vrgt9g8.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>mj797d8u6f.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>3sh42y64q3.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>f38h382jlk.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>24t9a8vw3c.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>mp6xlyr22a.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>x44k69ngh6.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>88k8774x49.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>hs6bdukanm.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>t3b3f7n3x8.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>prcb7njmu6.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>c7g47wypnu.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>52fl2v3hgk.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>9vvzujtq5s.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>m8dbw4sv7c.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>9g2aggbj52.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>m5mvw97r93.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>z5b3gh5ugf.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>dd3a75yxkv.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>9nlqeag3gk.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>cj5566h2ga.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>h5jmj969g5.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>dr774724x4.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>t7ky8fmwkd.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>fz2k2k5tej.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>u679fj5vs4.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>cs644xg564.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>9b89h5y424.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>w28pnjg2k4.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>2rq3zucswp.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>a7xqa6mtl2.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>g2y4y55b64.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>vc83br9sjg.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>eqhxz8m8av.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>7k3cvf297u.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>w9q455wk68.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>nu4557a4je.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>7fmhfwg9en.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>yclnxrl5pm.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>7tnzynbdc7.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>l6nv3x923s.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>h8vml93bkz.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>uzqba5354d.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>8qiegk9qfv.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>v79kvwwj4g.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>xx9sdjej2w.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>au67k4efj4.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>rx5hdcabgc.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>5lm9lj6jb7.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>qqp299437r.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>zmvfpc5aq8.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>9rd848q2bz.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>79pbpufp6p.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>dmv22haz9p.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>7rz58n8ntl.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>feyaarzu9v.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>7fbxrn65az.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>47vhws6wlr.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>ejvt5qm6ak.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>b55w3d8y8z.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>v7896pgt74.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>5ghnmfs3dh.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>275upjj5gd.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>627r9wr2y5.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>sczv5946wb.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>8w3np9l82g.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>hb56zgv37p.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>9t245vhmpl.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>nrt9jy4kw9.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>7953jerfzd.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>dn942472g5.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>6v7lgmsu45.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>cad8qz2s3j.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>eh6m2bh4zr.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>jb7bn6koa5.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>fkak3gfpt6.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>a2p9lx4jpn.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>97r2b46745.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>22mmun2rn5.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>238da6jt44.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>44jx6755aq.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>b9bk5wbcq9.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>k674qkevps.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>tl55sbb4fm.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>24zw6aqk47.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>4468km3ulz.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>2tdux39lx8.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>3cgn6rq224.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>glqzh8vgby.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>av6w8kgt66.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>klf5c3l5u5.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>nfqy3847ph.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>dticjx1a9i.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>ppxm28t8ap.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>9wsyqb3ku7.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>74b6s63p6l.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>xy9t38ct57.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>424m5254lk.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>qu637u8glc.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>f73kdq92p3.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>44n7hlldy6.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>kbmxgpxpgc.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>ecpz2srf59.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>x5854y7y24.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>f7s53z58qe.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>x8uqf25wch.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>uw77j35x4d.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>6964rsfnh4.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>gvmwg8q7h5.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>6yxyv74ff7.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>84993kbrcf.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>54nzkqm89y.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>9yg77x724h.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>n66cz3y3bx.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>578prtvx9j.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>bvpn9ufa9b.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>6qx585k4p6.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>mtkv5xtk9e.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>l93v5h6a4m.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>rvh3l7un93.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>5tjdwbrq8w.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>r45fhb6rf7.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>32z4fx6l9h.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>axh5283zss.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>3rd42ekr43.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>5mv394q32t.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>3qcr597p9d.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>v72qych5uu.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>ydx93a7ass.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>4pfyvq9l8r.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>5a6flpkh64.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>4fzdc2evr5.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>4w7y6s5ca2.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>252b5q8x7y.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>2fnua5tdw4.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>3l6bd9hu43.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>4mn522wn87.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>6g9af3uyq4.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>6p4ks3rnbw.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>6xzpu9s2p8.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>737z793b9f.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>89z7zv988g.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>8m87ys6875.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>8r8llnkz5a.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>bxvub5ada5.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>c3frkrj4fj.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>cg4yq2srnc.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>dzg6xy7pwj.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>gta8lk7p23.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>hdw39hrw9y.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>hjevpa356n.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>krvm3zuq6h.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>ln5gz23vtd.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>m297p6643m.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>p78axxw29g.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>pu4na253f3.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>s69wq72ugq.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>t6d3zquu66.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>vutu7akeur.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>x2jnk7ly8j.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>x5l83yy675.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>y45688jllp.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>yrqqpx2mcb.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>z4gj7hsk7h.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>33r6p7g8nc.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>g69uk9uh2b.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>g6gcrrvk4p.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>mqn7fxpca7.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>ns5j362hk7.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>vhf287vqwu.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>xga6mpmplv.skadnetwork</string>
</dict>
</array>
Automation of updates
You can update the SKAdNetwork identifier list for the Yandex ad network programmatically, for example, by integrating it into your CI/CD. To do this, use the current list of identifiers in JSON or XML format, available at the following links:
| Format | Link |
|---|---|
| JSON | https://yastatic.net/pcode-static/skadnetwork/skadids.json |
| XML | https://yastatic.net/pcode-static/skadnetwork/skadids.xml |
Using the script
You can also use a ready-made script:
Script for updating SKAdNetwork identifiers
#!/bin/bash
# ============================================================
# Yandex Ads SDK — SKAdNetwork IDs Updater
#
# Fetches the latest SKAdNetwork IDs from Yandex
# and merges them into Info.plist
# ============================================================
set -o pipefail
URLS=(
"https://yastatic.net/pcode-static/skadnetwork/skadids.json"
"https://yastatic.net/pcode-static/skadnetwork/skadids.xml"
)
PLIST_BUDDY="/usr/libexec/PlistBuddy"
TAG="[YandexAds]"
# ---- Colors ----
if [ -t 1 ]; then
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[0;33m'
NC='\033[0m'
else
RED=''
GREEN=''
YELLOW=''
NC=''
fi
log_info() { printf "${NC}${TAG} %s${NC}\n" "$1"; }
log_start() { printf "${YELLOW}${TAG} %s${NC}\n" "$1"; }
log_success() { printf "${GREEN}${TAG} %s${NC}\n" "$1"; }
log_warn() {
if [ -t 1 ]; then
# Terminal: colored, readable format
printf "${RED}${TAG} Warning: %s${NC}\n" "$1"
else
# Xcode Build Phase: recognized as warning in Issue Navigator
printf "warning: ${TAG} %s\n" "$1"
fi
}
# ---- Start ----
log_start "Starting SKAdNetwork IDs update..."
# ---- Resolve Info.plist path ----
resolve_plist() {
# 1. Explicit argument
if [ -n "${1:-}" ]; then
echo "$1"
return 0
fi
# 2. Xcode environment
if [ -n "${INFOPLIST_FILE:-}" ]; then
if [[ "${INFOPLIST_FILE}" = /* ]]; then
echo "${INFOPLIST_FILE}"
else
echo "${SRCROOT:-.}/${INFOPLIST_FILE}"
fi
return 0
fi
# 3. Auto-search in current directory
local found
found=$(find . \
-name "Info.plist" \
-not -path "*/Pods/*" \
-not -path "*/Carthage/*" \
-not -path "*/DerivedData/*" \
-not -path "*/build/*" \
-not -path "*/.build/*" \
-not -path "*/Packages/*" \
-not -path "*Tests*" \
-not -path "*Extensions*" \
2>/dev/null)
local count
count=$([ -n "$found" ] && echo "$found" | wc -l | tr -d ' ' || echo "0")
if [ "$count" -eq 1 ]; then
echo "$found"
return 0
elif [ "$count" -gt 1 ]; then
log_warn "Found multiple Info.plist files:" >&2
echo "$found" >&2
log_warn "Pass the correct path as argument." >&2
return 1
fi
log_warn "Info.plist not found. Pass as argument or run from project root." >&2
return 1
}
PLIST_PATH=$(resolve_plist "${1:-}") || exit 0
if [ ! -f "$PLIST_PATH" ]; then
log_warn "File not found: $PLIST_PATH"
exit 0
fi
log_info "Plist: $PLIST_PATH"
# ---- Fetch with fallback ----
RESPONSE=""
for url in "${URLS[@]}"; do
log_info "Trying: $url"
RESPONSE=$(curl -sf --max-time 5 "$url" 2>/dev/null) && [ -n "$RESPONSE" ] && {
log_info "Fetched: $url"
break
}
RESPONSE=""
done
if [ -z "$RESPONSE" ]; then
log_warn "All sources unavailable. Skipping."
exit 0
fi
# ---- Extract IDs (both JSON and XML) ----
REMOTE_IDS=$(echo "$RESPONSE" \
| grep -ioE '[a-z0-9]+\.skadnetwork' \
| tr '[:upper:]' '[:lower:]' \
| sort -u)
if [ -z "$REMOTE_IDS" ]; then
log_warn "No IDs parsed. Skipping."
exit 0
fi
REMOTE_COUNT=$(echo "$REMOTE_IDS" | wc -l | tr -d ' ')
log_info "Remote IDs: $REMOTE_COUNT"
# ---- Read existing IDs from plist ----
EXISTING_IDS=$("$PLIST_BUDDY" -c "Print :SKAdNetworkItems" "$PLIST_PATH" 2>/dev/null \
| grep -ioE '[a-z0-9]+\.skadnetwork' \
| tr '[:upper:]' '[:lower:]' \
| sort -u)
EXISTING_COUNT=$([ -n "$EXISTING_IDS" ] && echo "$EXISTING_IDS" | wc -l | tr -d ' ' || echo "0")
log_info "Existing IDs: $EXISTING_COUNT"
# ---- Additive diff: only new IDs ----
if [ -n "$EXISTING_IDS" ]; then
IDS_TO_ADD=$(comm -23 <(echo "$REMOTE_IDS") <(echo "$EXISTING_IDS"))
else
IDS_TO_ADD="$REMOTE_IDS"
fi
ADD_COUNT=$([ -n "$IDS_TO_ADD" ] && echo "$IDS_TO_ADD" | wc -l | tr -d ' ' || echo "0")
if [ "$ADD_COUNT" -eq 0 ]; then
log_success "Up to date."
exit 0
fi
log_start "Adding $ADD_COUNT new ID(s)..."
# ---- Ensure SKAdNetworkItems array exists ----
"$PLIST_BUDDY" -c "Print :SKAdNetworkItems" "$PLIST_PATH" &>/dev/null \
|| "$PLIST_BUDDY" -c "Add :SKAdNetworkItems array" "$PLIST_PATH"
# ---- Append new entries ----
INDEX=$("$PLIST_BUDDY" -c "Print :SKAdNetworkItems" "$PLIST_PATH" 2>/dev/null \
| grep -c "Dict")
while IFS= read -r skad_id; do
[ -z "$skad_id" ] && continue
"$PLIST_BUDDY" \
-c "Add :SKAdNetworkItems: dict" \
-c "Add :SKAdNetworkItems:${INDEX}:SKAdNetworkIdentifier string ${skad_id}" \
"$PLIST_PATH" 2>/dev/null || {
log_warn "Failed to add: $skad_id"
continue
}
INDEX=$((INDEX + 1))
done <<< "$IDS_TO_ADD"
TOTAL=$((EXISTING_COUNT + ADD_COUNT))
log_success "Done. Total: $TOTAL (+$ADD_COUNT new)"
What script does
Script downloads current list of SKAdNetwork IDs from Yandex servers and adds missing entries to Info.plist.
- Add-only: existing IDs are never removed, even if they are absent from the new list.
- Stateless: script doesn't store intermediate data. Each run: fresh request → comparison with plist → write.
- Build safety: script exits with 0 code on network error, but that doesn't cancel build process.
- Fallback: primary source is JSON, if unavailable — XML.
- Timeout: 5 seconds per request.
Finding Info.plist
Script determines path to Info.plist automatically:
| Priority | Source | When |
|---|---|---|
| 1 | Argument ./script.sh path |
Path explicitly specified |
| 2 | $INFOPLIST_FILE |
Xcode Build Phase |
| 3 | Auto-search in current directory | Manual run without argument |
Auto-search excludes Pods/, Carthage/, DerivedData/, build/, Packages/, *Tests*, *Extensions*.
- One
Info.plistfound - uses it. - Multiple found - displays list and asks to specify explicitly.
- Not found - script exits.
Using in Xcode (Build Phase)
-
Place
update_skad_ids.shin the project root. -
Make it executable:
chmod +x update_skad_ids.sh
-
Open Target → Build Phases → «+» → New Run Script Phase.
-
Rename to
Update Yandex SKAdNetwork IDs. -
Insert into script body:
"${SRCROOT}/update_skad_ids.sh"
- Phase settings:
| Parameter | Value | Purpose |
|---|---|---|
| For Install Builds Only | ![]() |
Run only on Archive |
| Based on dependency analysis | ![]() |
Always run on Archive |
With these settings, the script will run every time during Archive. If you need the script to run on every build, disable the For Install Builds Only option.
- Drag the phase above
Copy Bundle Resources.
Manual run
- Make it executable:
chmod +x update_skad_ids.sh
- Run the script:
From the project root — path will be determined automatically:
./update_skad_ids.sh
Or with an explicit path:
./update_skad_ids.sh MyApp/Info.plist
Requirements
- macOS 10.15+, Xcode 12+
curl,/usr/libexec/PlistBuddyare pre-installed on macOS
Initializing the Yandex Mobile Ads SDK library
Successfully initializing the Yandex Mobile Ads SDK is a prerequisite for correctly integrating the library.
By default, the SDK for Android is initialized automatically on app startup. This speeds up ad loading and thus increases your monetization revenue.
By default, the SDK for iOS is initialized automatically before loading an ad. However, manual initialization can speed up the loading of the first ad, increasing your monetization revenue.
Add a MobileAds.initialize(); call to your main component's useEffect hook:
React.useEffect(() => {
(async () => {
// Configure the user privacy data policy before init sdk
await MobileAds.initialize();
})();
});
If you need to set up privacy policies for personal data in your app, make sure to do this before initializing the Yandex Mobile Ads SDK.
You can set up these policies using the AndroidManifest.file or right before initializing the SDK manually.
Testing SDK integration
You can verify the success of the library integration using the SDK's built-in integration testing tool.
To do so, after adding the dependency and initializing the SDK, rebuild the project.
Open Logcat and search for the “Yandex Ads” keyword.
The command outputs the integration status logs. You'll see a message indicating whether the integration was successful. If there's a problem, you'll see a detailed description along with steps to resolve it. Sample command output:
mobileads$ adb logcat | grep 'Yandex Ads' -i
[Yandex Ads] I Yandex Mobile Ads 7.18.5 integrated successfully
[Yandex Ads] I Yandex Mobile Ads 7.18.5 initialized successfully
The log shows two separate events:
integrated successfully: Integration check (SDK hasn't been initialized yet).initialized successfully: Successful SDK initialization.
You can check the logs to make sure your SDK integration is correct.
To view logs, go to the Console tool and set Subsystem = com.mobile.ads.ads.sdk. You can filter logs by category, leaving only the ones related to the ad SDK integration. Set Category = Integration. Save the query and select it from the filter line whenever you need debugging.
You will see messages about successful integration: enabling YandexMobileAdsBundle.bundle, initializing the SDK, and connecting SKAdNetwork and mobile mediation adapters (if you use them in your project).
If there are any problems during SDK integration, you will see a detailed issue report.
Next steps
Once you've successfully integrated the Yandex Mobile Ads SDK, you can proceed to implementing your ad formats.
Select one of the following types of ads that best suits your app:
|
Ad format |
Yandex Advertising Network |
Adfox |
Description |
|
|
|
Adaptive inline banners are a flexible format of banner advertising, providing maximum efficiency by optimizing the size of the ad on each device. The banner height is selected automatically and can reach the height of the device screen. Typically, this format is used in feed-based apps or contexts where it's acceptable to primarily focus user attention on ads. |
|
|
|
|
That is a small, automatically updated ad placed at the top or bottom of the app screen. It does not overlap the main app content and is often used in game apps. The height of the sticky banner is determined automatically, adapting to the device screen size and not exceeding 15% of the screen height. |
|
|
|
|
Interstitial advertising is a full-screen ad format embedded within the app content during natural pauses, such as transitioning between game levels or completing a target action. When users see interstitial ads, their attention is entirely focused on the ads, which results in a higher cost for such impressions. Overuse of this format can worsen user interaction. |
|
|
|
|
Rewarded ads are a popular full-screen ad format, where the user receives a reward for viewing the ad. The display of this ad type is activated by the user, for instance, to receive a bonus or additional life in a game. High user motivation makes this ad format the most popular and profitable in free apps. |
|
|
|
|
App open ads are a special ad format for monetizing your app load screens. These ads can be closed at any time and are designed to be served when users bring your app to the foreground, either at launch or when returning to it from the background. |

