iOS privacy · SKAN & AAK

iOS measurement that respects ATT — and still tells you what works

Design your conversion values in the dashboard; the iOS SDK applies them on device. Postback copies from SKAdNetwork 4 and AdAttributionKit are verified against Apple’s signatures and decoded with the schema that was active at install.

AppVero SKAN and AdAttributionKit conversion-value schema editor with revenue buckets and a bit-layout preview.

iOS privacy: what’s included

  • Verified postback copies

    SKAdNetwork and AdAttributionKit copies are checked against Apple’s signatures and de-duplicated.

  • Schema editor

    Up to three flag events, revenue buckets, coarse-value rules and an optional lock window.

  • Applied on device

    The SDK computes fine and coarse values on every event — no extra code in your app.

  • Decoded reporting

    Postbacks by fidelity, null rate, decoded events and revenue ranges.

  • Apple Ads

    AdServices attribution for Apple Ads, click and view-through.

  • No guessing

    Without ATT consent, paid-media installs are restricted and measured in aggregate — not fingerprinted.

Conversion values

Six bits, designed on purpose

The fine value is (bucket << n) | flags: each of up to three events sets a flag bit, and the remaining bits encode the revenue bucket. The bit-layout preview shows all 64 values as you edit, and you can simulate an install before you save.

The first schema an install receives is pinned for its lifetime, so postbacks are always decoded with the right version.

  • Up to 3 flag events + revenue buckets (≤ 2^(6−n))
  • Coarse values: high, medium, low rules
  • Window 1 updates fine + coarse; windows 2–3 coarse only
Bit-layout preview of a SKAN schema: revenue bucket bits and two event flag bits across 64 fine values.
Schema

The schema the SDK receives

Revenue is converted to the schema currency with the daily FX rates in the SDK config before bucketing.

skan-schema.jsonJSON
{
  "schema_version": 3,
  "currency": "USD",
  "events": ["av_registration", "av_add_to_cart"],
  "revenue_events": ["av_purchase"],
  "revenue_buckets": [0, 0.99, 4.99, 9.99, 19.99, 49.99, 99.99, 199.99],
  "coarse": {
    "medium": { "events": ["av_registration"], "min_revenue": null },
    "high":   { "events": [], "min_revenue": 0.99 }
  },
  "lock_on_event": null
}
App Tracking Transparency

Consent-first, by construction

  • The SDK never shows the prompt

    It only reads the ATT status. Set attWaitSeconds if your onboarding asks for consent, so an authorised install carries the IDFA.

  • IDFA only when authorised

    Device-ID matching on iOS uses the IDFA only with ATT consent; otherwise paid installs are restricted.

  • Privacy manifest included

    PrivacyInfo.xcprivacy ships with the SDK, declaring collected data types and purposes.

  • SKAN and AAK together

    On iOS 17.4+ the SDK updates both AdAttributionKit and SKAdNetwork, as Apple recommends for apps measured through both.

Setup

Two Info.plist keys

Send copies of winning postbacks to AppVero. Apple uses the registrable domain and posts to its well-known paths.

Info.plistXML
<key>NSAdvertisingAttributionReportEndpoint</key>
<string>https://skan.appvero.ai</string>
<key>AttributionCopyEndpoint</key>
<string>https://skan.appvero.ai</string>
Questions

iOS privacy, answered

Something else? [email protected]

Which iOS versions are supported?

The SDK supports iOS 13+. Newer APIs are used where available: AdServices (14.3), ATT (14), SKAN 4 (16.1), AdAttributionKit (17.4) and StoreKit 2 (15).

Can I change the schema later?

Yes. Schemas are versioned; existing installs keep the schema they received and are decoded with it.

See your own data in AppVero

Bring a campaign, a link or an app build. We’ll walk through attribution, deep links and raw data with your team, on data that looks like yours.