Media Native

Media Native is an ad format that can display an image or a custom set of Text & Image banner elements which you can seamlessly integrate with your app's design.

Example of a Media Native ad:

Creating a native banner

  1. Decide which native ad elements you want to include in the banner.

  2. Prepare the JSON code. Specify the parameters that you want to customize (ad elements and their values) in the code.

    Example of JSON
    {
      "content": [
        "text",
        "button"
      ],
      "text": {
        "value": "Customizable text from an Adfox ad unit"
      },
      "button": {
        "label": "Custom button",
        "link": "https://ya.ru/",
        "backgroundColor": "#5D9B9B"
      }
    }
    

    To pass the click-through URL for JSON elements of the banner, use the macro: %banner.reference_mrc_user1%. The system will count the banner click and redirect the user to the advertiser's site specified in the Transition URL parameter.

  3. Write your JSON in one line and use the \ character to escape quotes.

    Example of JSON with escaped quotes
    {   \"content\": [     \"text\",     \"button\"   ],   \"text\": {     \"value\": \"Customizable text from an Adfox ad unit\"   },   \"button\": {     \"label\": \"Custom button\",     \"link\": \"https:\/\/ya.ru\/\",     \"backgroundColor\": \"#5D9B9B\"   }
    
  4. To ensure correct display of native elements in your app, add support for reading JSON data on the app side. Note that each native ad element specified in JSON must be properly implemented in the app code.

    Example of parsing JSON data (Kotlin)
    
    private fun processAdditionalText(rawJson: String) {
        try {
            val jsonObject = JSONObject(rawJson)
            val contentJSONArray = jsonObject.getJSONArray("content")
    
            repeat(contentJSONArray.length()) { index ->
                val elementName = contentJSONArray.getString(index)
                val elementConfiguration = jsonObject.getJSONObject(elementName)
    
                when (elementName) {
                    "text" -> addTextToLayout(elementConfiguration, index)
                    "button" -> addButtonToLayout(elementConfiguration, index)
                }
            }
        } catch (e: JSONException) {
            adInfoFragment.log(e.message ?: "JSON parsing error")
        }
    }
    
    private fun addTextToLayout(textConfiguration: JSONObject, index: Int) {
        val textView = TextView(this).apply {
            setPadding(resources.getDimension(R.dimen.item_padding).toInt())
    
            text = textConfiguration.getString("value")
        }
        additionalContainer.addView(textView, index)
    }
    
    private fun addButtonToLayout(buttonConfiguration: JSONObject, index: Int) {
        val buttonView = Button(this).apply {
            setPadding(resources.getDimension(R.dimen.item_padding).toInt())
    
            text = buttonConfiguration.getString("label")
    
            val colorHex = buttonConfiguration.getString("backgroundColor")
            setBackgroundColor(Color.parseColor(colorHex))
    
            setOnClickListener {
                val link = buttonConfiguration.getString("link")
                val intent = Intent(Intent.ACTION_VIEW, Uri.parse(link))
                startActivity(intent)
            }
        }
        additionalContainer.addView(buttonView, index)
    }
    
    
  5. Add the banner following the instructions below.

Stages of native banner preparation

Adding a banner to Adfox

  1. In the campaign settings, go to Banners and click Add.

  2. Choose the App Mobile Native banner type and the Media Native template.

  3. Set the banner parameters:

    • Priority: The number that determines the banner's display order in the campaign. The higher the numeric value, the higher the banner's priority over the other banners in the same campaign. To learn more about priorities, see Adfox help.

    • Transition URL: Enter a link to the advertiser's site. For the click to work correctly, make sure that the link includes the protocol (http:// or https://).

    • Image URL (URL) or Image URL (File): Upload an image.

    • Width: Set the banner width (enter an integer in pixels without specifying the dimensions).

    • Height: Set the banner height (enter an integer in pixels without specifying the dimensions).

    • Additional text: If you need to add custom elements to ads or creatives, use the JSON code you prepared.

      Example of the Additional text field

    • Start date and time: Required parameters. By default, this is the current date. If you don't change the default value, banners are served immediately after you add them if the banner status is active.

    • Ad label: Select Ad or Social Ad to add a label to the banner. If your ad creative already contains a label, you can leave the Disabled value in the drop-down list.

      Note

      Adding the Social Ad label doesn't automatically define the creative as a social ad. To label the creative as a social ad in the state register, select Social ads contract in the corresponding contract with the end advertiser.

    • Domain: Specify the advertiser domain to add it to the label: Ad / Example.com or Social ad / Example.com (only if the Ad or Social Ad value is selected in the drop-down list).

    • Show banner menu: Enable this option to add a token to a non-clickable banner. When the banner is served, the menu icon will be displayed in its upper-right corner. Clicking this icon displays information about the advertiser and a button to copy the token (if you enabled labeling for this banner or specified a third-party token).

      The banner menu contains a link to the rules for using recommendation technologies. The link is necessary to meet the requirements of article 10.2–2, part 1, paragraph 3 of Federal Law No. 149-FZ "On Information, Information Technologies and the Protection of Information", dated July 27, 2006.

      Note

      If the banner needs to be labeled, you can enable the banner menu to make the token available when the banner is served to users.

    • Settings for Russian ad register: This section is only available if you've selected Advertising labeling as a labeling procedure in the campaign settings. Fill in the fields in this section to register the creative with the Yandex advertising data operator. The creative is assigned a token automatically. For more information about labeling ads, see Adfox Help.

    • Name: Enter a name for the banner. If you leave this field blank, it will be assigned a sequential number.

    • Status: Select a status for the banner:

      • active: The banner is ready to be served.
      • paused: The banner impression is paused.
      • completed: The banner won't be served.
    • Disabled on new placements: This option is enabled by default. Once you create your banner, it won't be placed automatically:

      • In new placements created within the site or section where your campaign is placed.
      • In placements that were enabled in the campaign placement settings after the banner was created. If you disable this option, the banner will be automatically added to any placements that have the campaign placement enabled.
    • Targeting profile: Select the targeting profile you created earlier. To learn more about targeting profiles, see Adfox Help.

    • Events enabled: This option is used to get direct links to events to be tracked in a third-party system. To activate the option, click next to the banner in the Placements tab. In the window that opens, you'll see links to events from 1 to 30. Copy and send them to the third-party system to be tracked there.

    • Impressions in total, day, hour:

      • Impressions total, day, hour: Maximum number of banner impressions. If a campaign is distributed evenly, set the banner display end date. Once the number of impressions reaches the maximum, the banner's status changes to completed and it's no longer served.
      • Impressions per day: Maximum number of impressions per day. Once the number of impressions from the start of the day reaches the maximum, they are paused until the next day starts.
      • Impressions per hour: Maximum number of impressions per hour. Once the number of impressions from the start of the hour reaches the maximum, they are paused until the next hour starts.
    • Clicks total, per day, per hour:

      • Clicks total: Maximum number of banner clicks. If a campaign is distributed evenly, set the banner display end date. Once the number of clicks reaches the maximum, the banner's status is changed to Completed and it's no longer served.
      • Clicks per day: Maximum number of banner clicks per day. Once the number of clicks from the start of the day reaches the maximum, impressions are paused until the next day starts.
      • Clicks per hour: Maximum number of banner clicks per hour. Once the number of clicks from the start of the hour reaches the maximum, impressions are paused until the next hour starts.
    • End time: To set the end date and time, first enable the option.

  4. To save the banner, click Add.

Contact support