🚧

Keep in Mind

PubNative's SKAdNetwork support is designed to be compatible with OpenRTB SKAdNetwork framework.

For that reason, this document is subject to change periodically with the future updates of iOS and the IAB's SKAdNetwork Working Group decisions.

We currently support SKADNetwork versions 2.0, 2.2, and 3.0.

📘

About SKAdNetwork

SKAdNetwork is an attribution solution introduced by Apple. It validates advertiser-driven app installations without disclosing user-level data. Starting with the iOS 14, the utilization of SKAdNetwork framework will become more important since IDFA (Apple’s Identifier for Advertiser) is going to be opted-out by default.

This documentation is only applicable after AppTrackingTransparency framework is enforced.

For more information, please check the official documentation:
https://developer.apple.com/documentation/storekit/skadnetwork

If you're a Supply Partner (Publisher)

  1. Add SKAdNetwork ID of all network partners you work with in the app's info.plist file. Find a full .json list of SKAdNetwork IDs here.
    Note that you not only need to add SKAdNetwork ID of VGI but also all partners' ID that VGI works with.

  2. If you're integrated with our HyBid SDK product, please update to the latest version so the SDK can exchange SKAdNetwork values with the ad server. (HyBid iOS SDK releases)

  3. As the next step after the SKAdNetwork implementation, we strongly recommend you to implement new parameters for Contextual App Targeting (link)

If you're a Demand Partner (DSP)

  1. Register your Ad Network with Apple (link)

  2. Add support for processing parameters for Contextual App Targeting (link)

Flow of SKAdNetwork framework

21342134

Bid Request

In case app's info.plist file has at least one item of PubNative inside SKAdNetworkItems array, Publisher can send BidRequest.imp.ext.skadn object in Bid Request. This provides the information required to create a signature from the DSP side.

Attribute

Description

Type

Example

version

Version of SKAdNetwork supported. Should be always "2.0" or higher.

string

"version": "2.0"

sourceapp

ID of the publisher app in the Apple app store. Should match BidRequest.app.bundle

string

"sourceapp": "589250002"

skadnetids

A list of SKAdNetwork ID entries in the publisher app's info.plist

string

"skadnetids": ["TL55SBB4FM.skadnetwork", "6xzpu9s2p8.skadnetwork"]

Bid Response

For the Bid Request that includes BidRequest.imp.ext.skadn, DSP can respond with BidResponse.seatbid.bid.ext.skadn object included. If present, Publisher can use the signature of this object for attribution.

Attribute

Description

Type

Example

up to v: 2.15.0

v:2.16.0 and above

version

Version of the SKAdNetwork, must be 2.0 or higher

string

"version": "2.0"

:white-check-mark:

:white-check-mark:

network

Ad network identifier used in the signature

string

"network": "TL55SBB4FM.skadnetwork"

:white-check-mark:

:white-check-mark:

campaign

A campaign ID integer between 1 and 100

integer

"campaign": 20

:white-check-mark:

:white-check-mark:

itunesitem

ID of the advertiser app in the Apple's App Store

number

"itunesitem": 1382171002

:white-check-mark:

:white-check-mark:

nonce

An id unique to each ad response

string

"nonce": "abcde12f-a1bc-00078956"

:white-check-mark:

:exclamation: This attribute is now inside of "fidelities" object. (Check down below for more information about this fidelities object)

sourceapp

ID of publisher app in Apple's App Store. Should match BidRequest.imp.ext.skadn.sourceapp

number

"sourceapp": 589250002

:white-check-mark:

:white-check-mark:

timestamp

Unix time in mills at the time of signature was generated

number

“timestamp": 1596789650173

:white-check-mark:

:exclamation: This attribute is now inside of "fidelities" object. (Check down below for more information about this fidelities object)

signature

SKAdNetwork signature specified by Apple

string

"signature": "MDYCGQCsQ4y8d4BlYU9b8Qb..."

:white-check-mark:

:exclamation: This attribute is now inside of "fidelities" object. (Check down below for more information about this fidelities object)

fidelity-type

A number to decide whether an ad is a view-through ad (0) or a StoreKit-rendered ad (1) by using the new fidelity-type parameter starting with SKAdNetwork v: 2.2.

number

"fidelity-type" = 0

:white-check-mark:

:x:

fidelities

An object which contains: fidelity, nonce, signature and timestamp attributes starting with SKAdNetwork v: 2.2.

object

Check fidelities object down below in the code snippet for "v: 2.16.0 and above".

:x:

:white-check-mark:

{
    skadn =     {
        campaign = 64;
        fidelities =         (
                        {
                fidelity = 0;
                nonce = "027852df-f970-47e6-bd2c-1273757975f9";
                signature = "MDQCGA0AMI9frWfARrxG1AZ/PCENbEdUI9ZVeAIYeYYQ7eraQI5ddETV/qMBs27VP+pM2kfo";
                timestamp = 1663271505;
            },
                        {
                fidelity = 1;
                nonce = "9b9009ce-4a66-4a21-8dbf-df60c880d97d";
                signature = "MDYCGQD6XVKUPvBJq2qUhJ81EYME8aV9jm5vS/QCGQCEiVN0RhX1N5/fWVpATK6nN5FnxQs6D+A=";
                timestamp = 1663271505;
            }
        );
        itunesitem = 1382171002;
        network = "TL55SBB4FM.skadnetwork";
        sourceapp = 1530210244;
        version = "2.2";
    };
}
{
    "skadn": {
        "version": "2.0",
        "network": "TL55SBB4FM",
        "campaign": "20",
        "itunesitem": "1382171002",
        "nonce": "abcde12f-a1bc-00078956",
        "sourceapp": "589250002",
        "timestamp": "1596789650173",
        "signature": "MDYCGQCsQ4y8d4BlYU9b8Qb9BPWPi+ixk\/OiRysCGQDZZ8fpJnuqs9my8iSQVbJO\/oU1AXUROYU=",
    }
}

👍

Finished with the integration?

We provide a list of Contextual Parameters which can be sent in the bid stream.
Sending the parameters plays a critical role in keeping the granularity of user targeting without IDFA.
You can find more information here: Contextual App Targeting

Frequently Asked Questions

Question

Answer

How does Verve Group expect a request without IDFA to look like, should demand partners send all 0s in the IDFA field?

Yes, demand partners should send 0s and we need to know if app transparency was requested or not. In case IDFA is not present, demand partners should also send IDFV.

Is Verve Group currently buying LAT or no IFA inventory (pre IDFA opt-in)?

Yes.

With iOS 14's use of iTunesItemIdentifier to open StoreKit instead of a Click URL, what is Verve Group’s current plans for handling click tracking?

For performance campaigns we will use StoreKit.

For non VAST creative, is Verve Group planning on updating bid responses to match IAB proposed AdCom standards or planning on client side JS handling tracking?

Yes, we are planning to match IAB proposed standards.

Documentation Change History

(2022-09-26) v1.0.2 : documentation updated for HyBid iOS SDK v: 2.16.0 to support multiple fidelities.
(2020-10-08) v1.0.1 : added OpenRTB SKAdNetwork framework link
(2020-09-15) v1.0 : created documentation