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)
-
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. -
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)
-
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)
-
Register your Ad Network with Apple (link)
-
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.
Attribute | Description | Type | Example |
---|---|---|---|
versions | Array 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"] |
version | Version 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" |
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" | ✅ | ✅ |
network | Ad network identifier used in the signature | string | "network": "TL55SBB4FM.skadnetwork" | ✅ | ✅ |
campaign | A campaign ID integer between 1 and 100 | integer | "campaign": 20 | ✅ | ✅ |
itunesitem | ID of the advertiser app in the Apple's App Store | number | "itunesitem": 1382171002 | ✅ | ✅ |
nonce | An id unique to each ad response | string | "nonce": "abcde12f-a1bc-00078956" | ✅ | ❗ 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 | ✅ | ✅ |
timestamp | Unix time in mills at the time of signature was generated | number | “timestamp": 1596789650173 | ✅ | ❗ 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..." | ✅ | ❗ 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 | ✅ | ❌ |
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". | ❌ | ✅ |
{
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