Integrating Yandex Mobile Ads Flutter plugin

System: Yandex Advertising Network

Flutter is a popular cross-platform technology for mobile app development. It's designed for software developers to write a universal code that can be applied to different operating systems: both Android and iOS.

Integrating the Yandex Mobile Ads Flutter SDK into your app is the first step toward rendering ads and generating revenue. After integrating the SDK, you can choose an ad format for your app monetization (for example, banner ads or rewarded ads) set it up.

App requirements

  • Use Android Studio 2021 or later.
  • Make sure your app's build file uses the following values:
    • minSdkVersion 21 or later.
    • compileSdkVersion 31 or later.
  • To load ads no matter the type, you need Android 4.1 or later.
  • Video ads are only selected for devices with Android 5 or higher.
  • Use iOS 13 or higher.
  • Use Xcode 16.1 or higher.

Set up the application in your Yandex Advertising Network account

Here's how to register your app in the Yandex Advertising Network:

  1. Log in or register your account in the Yandex Advertising Network.
  2. Register your app in the Yandex Advertising Network.

Integration

Here's how to integrate the Yandex Mobile Ads SDK:

  1. Integrating the Yandex Mobile Ads Flutter plugin.
  2. Platform-specific setup.
  3. Initializing the library.
  4. Testing the integration.

Integrating the Yandex Mobile Ads Flutter plugin

To integrate the Yandex Mobile Ads SDK with your Flutter app, use the Yandex Mobile Ads Flutter plugin.

Install the Yandex Mobile Ads Flutter plugin for your project. Execute the command from the project's root directory:

flutter pub add yandex_mobileads

Once you add the plugin, the line with the dependency will be added to pubspec.yaml:

dependencies:
    yandex_mobileads: ^7.18.0

Platform-specific setup

Permission to use the ad ID

The ad ID is a unique identifier provided by Google Play services for displaying ads to users who opt in to personalized ads. Users can opt out of ad personalization or reset their ID in the settings. In this case, advertising networks won't be able to use the ID to select relevant ads for the user.

You can delete the permission if necessary. For example, if a policy does not allow the use of an ID for ad selection, such as the Families Policy.

To keep the permission from being added to the application's main manifest, add the following code to AndroidManifest.xml:

<manifest>
    <application>
        <uses-permission android:name="com.google.android.gms.permission.AD_ID" tools:node="remove"/>
    </application>
</manifest>

Warning

Lack of this permission and access to the ID may reduce the relevance of ads and, as a result, your income.

COPPA setup

You can set up your privacy policies for personal data manually or using the AndroidManifest.file right before initializing the SDK.

At automatic initialization, add the following code to AndroidManifest.xml to notify the Yandex Mobile Ads SDK that the app is used by children:

<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.plist found - uses it.
  • Multiple found - displays list and asks to specify explicitly.
  • Not found - script exits.

Using in Xcode (Build Phase)

  1. Place update_skad_ids.sh in the project root.

  2. Make it executable:

    chmod +x update_skad_ids.sh
    
  3. Open Target → Build Phases → «+» → New Run Script Phase.

  4. Rename to Update Yandex SKAdNetwork IDs.

  5. Insert into script body:

    "${SRCROOT}/update_skad_ids.sh"
    
  6. 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.

  7. Drag the phase above Copy Bundle Resources.

Manual run

  1. Make it executable:

    chmod +x update_skad_ids.sh
    
  2. 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/PlistBuddy are pre-installed on macOS

Warning

By default, Flutter apps are created with the use_frameworks! option that applies dynamic libraries in the project.

The Yandex Mobile Ads SDK uses a static library, so comment out the # use_frameworks! line during the integration.

Initializing the Yandex Mobile Ads SDK library

Successfully initializing the Yandex Mobile Ads SDK is an important condition for correctly integrating the library.

By default, for Android, SDK is initialized automatically at your app startup. That accelerates ad loading and consequently increases your monetization revenue.

By default, for iOS, SDK initialization happens automatically before ads load, but manual initialization will speed up how quickly the first ad loads and therefore increase revenue from monetization.

Add the YandexAds.initialize(); call to initState for your app's widget:

@override
void initState() {
  super.initState();
  // Configure the user privacy data policy before init sdk
  YandexAds.initialize();
}

If your app requires setting up privacy policies for data use, do that before initializing the Yandex Mobile Ads SDK.

You can set up your privacy policies for personal data manually or using the AndroidManifest.file right before initializing the SDK.

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're ready to implement ad formats.

Choose the ad type that best suits your app:

Ad format

Yandex Advertising Network

Adfox

Description

Adaptive inline banner

Adaptive inline banners are a flexible format of banner advertising, providing maximum efficiency by optimizing the size of the ad on each device.

The height of the banner is adjusted automatically and might reach the device screen height.

Typically, that format is used in feed-based apps or contexts where it's okay to focus primarily on the ad.

Adaptive sticky banner

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 a sticky banner is determined automatically, adapting to the screen size of the device and not taking up more than 15% of the screen height.

Interstitial ads

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 rendering interstitial ads, user attention is focused fully on your ads, which is why the cost per impression is higher.

If you use this format too often, your user interaction might get affected.

Rewarded ads

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

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.