API Reference

🚧

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 and on the GitHub here.
    Note that you not only need to add SKAdNetwork ID of VGE but also all partners' ID that VGE 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


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.

AttributeDescriptionTypeExample
versionsArray of strings containing the supported skadnetwork versions. Always "2.0" or higher. Dependent on both the OS version and the SDK version.strings"versions": ["2.0", "2.1", "2.2", "3.0", "4.0"]
versionVersion of skadnetwork supported. Always "2.0" or higher. Dependent on both the OS version and the SDK version.

Note: With the release of SKAdNetwork 2.1, this field is deprecated in favor of the BidRequest.imp.ext.skadn.versions to support an array of version numbers.
string"version": "2.0"
sourceappID of the publisher app in the Apple app store. Should match BidRequest.app.bundlestring"sourceapp": "589250002"
skadnetidsA list of SKAdNetwork ID entries in the publisher app's info.pliststring"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.

AttributeDescriptionTypeExampleup to v: 2.15.0v:2.16.0 and above
versionVersion of the SKAdNetwork, must be 2.0 or higherstring"version": "2.0"
networkAd network identifier used in the signaturestring"network": "TL55SBB4FM.skadnetwork"
campaignA campaign ID integer between 1 and 100integer"campaign": 20
itunesitemID of the advertiser app in the Apple's App Storenumber"itunesitem": 1382171002
nonceAn id unique to each ad responsestring"nonce": "abcde12f-a1bc-00078956"❗ This attribute is now inside of "fidelities" object. (Check down below for more information about this fidelities object)
sourceappID of publisher app in Apple's App Store. Should match BidRequest.imp.ext.skadn.sourceappnumber"sourceapp": 589250002
timestampUnix time in mills at the time of signature was generatednumber“timestamp": 1596789650173❗ This attribute is now inside of "fidelities" object. (Check down below for more information about this fidelities object)
signatureSKAdNetwork signature specified by Applestring"signature": "MDYCGQCsQ4y8d4BlYU9b8Qb..."❗ This attribute is now inside of "fidelities" object. (Check down below for more information about this fidelities object)
fidelity-typeA 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
fidelitiesAn object which contains: fidelity, nonce, signature and timestamp attributes starting with SKAdNetwork v: 2.2.objectCheck fidelities object down below in the code snippet for "v: 2.16.0 and above".
{
    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

QuestionAnswer
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