iOS 14 SKAdNetwork Support for DSPs
With Apple’s announcement on June 24, DSPs will need to start utilizing Apple’s privacy conscious SKAdNetwork framework for install and conversion tracking on iOS14 devices. Smaato is adding support for SKAdNetwork attribution into its SDK along with necessary bid request/response signals. For display, we support <a href>
, mraid.open()
, window.open()
& window.location
click redirect methods. The click redirects (ex, HTTP status 3xx) will be followed in the methods mentioned above for display, native and video Ad formats.
What should DSPs do to enable SKAdNetwork attribution with Smaato?
- DSPs should register as an Ad Network to Apple’s SKAdNetwork API. Click here to register.
- Supply your public key to Apple and set your postback urls.
- Provide your SKAdNetwork ID to your Smaato Account Manager.
- Smaato will get your SKAdNetwork ID(s) added to publishers’ info.plist.
- DSPs should be able to ingest the list of SKAdNetwork ID(s), version, and source bundle ID information in BidRequest.imp.ext.skadn object of the bid request.
- If the DSP is responding with a SKAdNetwork enabled campaign, it should respond with SKAdNetwork ID and all relevant fields in the bid response.
- Advertiser app should be registering its new users to SkAdNetwork via
registerAppForAdNetworkAttribution()
- DSPs should have an install tracking service to handle install data and signature
from the SKAdNetwork postback.
SKAdNetwork Attribution Workflow
Bid Request
Object: BidRequest.imp.ext.skadn
This object will be populated if all conditions below are met:
- The DSP has at least one SKAdNetwork ID registered in the publisher’s info.plist
- The user’s device is operating on iOS14 or above.
- The Application is integrated with Smaato via a SKAdNetwork supported version.
- The DSP is on Smaato’s OpenRTB 2.4 and above spec.
Attribute | Description | Type | Example |
---|---|---|---|
version | Version of skadnetwork supported. Always “2.0” or higher. Dependent on both the OS version and the SDK version. | string | “version”:”2.0” |
sourceapp | ID of publisher app in Apple’s App Store. Should match `BidRequest.app.bundle` |
string | “sourceapp”:”880047117” |
skadnetids | A subset of SKAdNetworkItem entries in the publisher app’s info.plist that are relevant to the DSP. | array | “skadnetids”: [“dticjx1a9i.skadnetwork”, “8srfag4vvc.skadnetwork”] |
Example
{
“imp”: [
{
“ext”: {
“skadn”: {
“version”: “2.0”,
“sourceapp”: “880047117”,
“skadnetids”: [
“dticjx1a9i.skadnetwork”,
“8srfag4vvc.skadnetwork”
]
}
}
}
]
}
Changes in Bid Request Device Object
If the user does not give permission through the AppTrackingTransparency framework for targeting, IDFA field will not be passed. Smaato will offer IDFV and an exchange based device identifier. These two identifiers can be used for fraud prevention and frequency capping, not for targeted advertising or advertising measurement purposes.
Attribute | Description | Type | Example |
---|---|---|---|
BidRequest.device.ifa | IDFA will only be passed if the user gives the permission through the AppTrackingTransparency framework. | string | “ifa”:”F52329FE-DAB6-11EA-87D0-0242AC130003” |
BidRequest.device.ext.ifv | An alphanumeric string that uniquely identifies a device to the publisher. | string | “ifv”:”A9F6BDD8-3343-4E6D-A283-F98986880335” |
BidRequest.device.ext.atts | (iOS 14+ only) An integer passed to represent the app’s app tracking authorization status, where 0 = not determined 1 = restricted 2 = denied 3 = authorized |
integer | “atts”:3 |
BidRequest.user.id | Exchange defined user identifier which will be consistent up to 24 hours within the same application. | string | “id”:”F4EE2B2D-1B0E-4BA9-8471-28E9ED8FB95C” |
Bid Response
Object: BidResponse.seatbid.bid.ext.skadn
For bid requests with SKAdnetwork extension object, the DSP can return a bid response which includes the following fields to enable SKAdNetwork install and conversion attribution. Smaato will validate SKAdNetwork ID, bundle ID fields in the response, and call loadProduct() with appropriate values.
Attribute | Description | Type | Example |
---|---|---|---|
version | Version of SKAdNetwork desired. Must be 2.0 or above. | string | “version”:”2.0” |
network | Ad network identifier used in signature. Should match one of the items in the skadnetids array in the request. | string | “network”:”dticjx1a9i.skadnetwork” |
campaign | Campaign ID compatible with Apple’s spec. As of 2.0, should be an integer between 1 and 100, expressed as a string. | string | “campaign”:”45” |
itunesitem | ID of advertiser’s app in Apple’s app store. Should match `BidResponse.bid.bundle` | string | “itunesitem”:” 642831690” |
nonce | An id unique to each ad response. | string | “nonce”:”473b1a16-b4ef-43ad-9591-fcf3aefa82a7” |
sourceapp | ID of publisher’s app in Apple’s app store. Should match `BidRequest.imp.ext.skad.sourceapp` | string | “sourceapp”:” 1207472156” |
timestamp | Unix time in millis string used at the time of signature. | string | “timestamp”: “1594406341” |
signature | SKAdNetwork signature as specified by Apple. | string | “signature”: “MEQCIEQlmZRNfYzK…” |
Example
{
“seatbid”: [
{
“bid”: [
{
“ext”: {
“skadn”: {
“version”: “2.0”,
“network”: “dticjx1a9i.skadnetwork”,
“campaign”: “45”,
“itunesitem”: “880047117”,
“nonce”: “473b1a16-b4ef-43ad-9591-fcf3aefa82a7”,
“sourceapp”: “123456789”,
“timestamp”: “1594406341”,
“signature”: “MEQCIEQlmZRNfYzKBSE8QnhLTIHZZZWCFgZpRqRxHss65KoFAiAJgJKjdrWdkLUOCCjuEx2RmFS7daRzSVZRVZ8RyMyUXg==”
}
}
}
]
}
]
}
Last Modified: June 29, 2022 at 9:00 am