Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.kontext.so/llms.txt

Use this file to discover all available pages before exploring further.

SKAdNetwork (SKAN) is Apple’s privacy-preserving install-attribution framework. Every advertiser (DSP) that runs on iOS has its own SKAdNetwork identifier. For a DSP to attribute an install back to one of your ads, its identifier must be listed in your app’s Info.plist.
SKAdNetwork is iOS-only. It applies to the Swift SDK and to the iOS half of React Native and Flutter SDKs. Android, web, React, Vue, and JavaScript SDKs don’t need this configuration.

What to add to Info.plist

During onboarding we provide the list of SKAdNetwork identifiers for every DSP active in our network. Append them under SKAdNetworkItems:
<key>SKAdNetworkItems</key>
<array>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>XXX.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>YYY.skadnetwork</string>
  </dict>
  <!-- Add all identifiers we provided here -->
</array>
If your app already has an SKAdNetworkItems array (from another ad SDK), append the identifiers we give you to the existing array — don’t replace it, or you’ll break attribution for the other networks. Apple deduplicates identifiers automatically, so adding the same one twice is harmless.
Missing an identifier means installs attributable to that DSP will silently not be counted — you lose revenue without any visible error. Add all identifiers we provide, not a subset.

How the SDK uses it

The SDK reads SKAdNetworkItems from Info.plist at startup. It does not modify the array or write to it. On every POST /init call (fired in the background when you create a Session), the SDK forwards the full list of identifiers it found to our ad server. The ad server uses this list to:
  1. Tell each DSP which identifiers are present in your app, so they know whether they can attribute installs from your traffic.
  2. Filter out DSPs whose identifier is missing from your Info.plist — they can still serve ads, but their install attribution won’t work, and we’ll surface the gap in your dashboard.
This is why the identifier list needs to stay in sync with the list we provide. When we add a new DSP to the network, you’ll get an updated list during onboarding — add the new identifier and re-submit your build.

Apple’s SKAN APIs

Once the identifiers are listed, the rest of SKAN is handled by Apple’s SKAdNetwork API and the DSP’s measurement integration. The SDK doesn’t call SKAdImpression or endImpression directly from your code — that’s handled internally as part of the ad render lifecycle.

Troubleshooting

  • A DSP reports zero installs even though their ads ran. Their identifier may be missing from your Info.plist, or the build with the updated list hasn’t shipped yet. Check the dashboard — we flag missing identifiers there.
  • Editing Info.plist requires a new App Store build. SKAdNetwork identifiers are baked into the binary; they can’t be changed remotely. Add the full set during onboarding and submit one build with everything we’ve given you.
  • Need an updated list? Contact support@kontext.so — we’ll send the latest identifiers.