How the Video SDK reads the advertising identifier, and the one-time setup your app needs on iOS.
The IFA (Identifier for Advertisers) is the platform-standard ad id the SDK forwards with every ad request: IDFA on iOS, GAID on Android. The SDK reads it once the viewer allowed it; your app only needs the one-time configuration below.When no IFA is available (the viewer denied permission, or the OS opted out), the SDK falls back to a first-party identifier it generates itself. You may see a lower fill rate and lower prices: without an IFA, advertisers cannot recognize the viewer, so every viewer looks new to them, and many bid less or not at all. Collecting the IFA is one of the biggest levers on your revenue.
iOS 14 and later require the viewer’s consent before any SDK can read the IDFA. The system prompt is App Tracking Transparency (ATT).Add the usage description to Info.plist:
<key>NSUserTrackingUsageDescription</key><string>We use your advertising identifier to show you more relevant ads.</string>
Without this key, the app crashes on iOS 14+ as soon as anything requests ATT.
The Video SDK does not show the ATT prompt by default: a video app usually has its own moment for it, after onboarding or before the first episode. Request it yourself with ATTrackingManager.requestTrackingAuthorization, and the SDK reads the identifier from then on.If you’d rather let the SDK ask, set it in the configuration and the prompt appears right before the first ads request:
The ATT prompt only appears while the app is active. Asking too early, for example in application(_:didFinishLaunchingWithOptions:), can suppress it entirely. Ask once the first screen is up.
The SDK also reads IDFV (identifierForVendor), a stable per-vendor identifier that needs no ATT authorization and is always available.
GAID needs no runtime prompt. Reading it requires the install-time com.google.android.gms.permission.AD_ID permission on Android 13 and later, which the Kotlin Video SDK declares through manifest merger.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Kontext Documentation","colors":{"primary":"#FF682F","light":"#FF682F","dark":"#FF682F"},"logo":{"light":"https://mintcdn.com/kontext/cSTBM3iNvsT_Fm-X/logo/light.svg?fit=max\u0026auto=format\u0026n=cSTBM3iNvsT_Fm-X\u0026q=85\u0026s=31c1ad1d9c273a4f7ae529ee4ef3bedb","dark":"https://mintcdn.com/kontext/cSTBM3iNvsT_Fm-X/logo/dark.svg?fit=max\u0026auto=format\u0026n=cSTBM3iNvsT_Fm-X\u0026q=85\u0026s=22c43eed074c01e3ffb02e7028b8ae5b"},"favicon":"https://mintcdn.com/kontext/cSTBM3iNvsT_Fm-X/favicon.svg?fit=max\u0026auto=format\u0026n=cSTBM3iNvsT_Fm-X\u0026q=85\u0026s=7fcf8285ddde4170884f9cc8f6141b71","navbar":{"links":[{"href":"mailto:support@kontext.so","label":"Support"}],"primary":{"type":"button","label":"Go to kontext.so","href":"https://kontext.so"}},"styling":{"latex":false},"navigation":{"languages":[{"language":"en","href":"overview"},{"language":"zh","href":"zh/overview"}]}},"deployment":{"deploymentMetadataValue":{"subdomain":"kontext","hasAudioNarration":false,"actualSubdomain":"kontext","customDomains":["docs.kontext.so"],"gitSource":{"type":"github","owner":"kontextso","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ae210d25ca9b4a2f463fd74","collectionId":"7a579c7a-4730-4d5c-b219-a8b996243cce","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae210d25ca9b4a2f463fd74"},"entitlements":{},"buildId":"6ae210d25ca9b4a2f463fd74","clientVersion":"0.0.3990","searchFilterCounts":[{"language":"en","tag":"Conversational Ads","count":51},{"language":"zh","tag":"对话广告","count":50},{"language":"en","tag":"SDKs","count":34},{"language":"zh","tag":"SDK","count":34},{"language":"en","tag":"Video Ads","count":24},{"language":"zh","tag":"视频广告","count":23},{"language":"en","tag":"Guides","count":14},{"language":"zh","tag":"实践指南","count":14},{"language":"en","tag":"Concepts","count":13},{"language":"zh","tag":"核心概念","count":13},{"language":"en","tag":"Resources","count":10},{"language":"zh","tag":"资源","count":8},{"language":"en","tag":"JavaScript SDK","count":6},{"language":"en","tag":"Kotlin SDK","count":6},{"language":"en","tag":"Swift SDK","count":6},{"language":"en","tag":"Vue SDK","count":6},{"language":"zh","tag":"JavaScript SDK","count":6},{"language":"zh","tag":"Kotlin SDK","count":6},{"language":"zh","tag":"Swift SDK","count":6},{"language":"zh","tag":"Vue SDK","count":6}]},"assistantConfig":{},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-v7-file-tree","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"pause-universal-search-reconcile","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"per-site-search-delta","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-private-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-nav-generations","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-agent-model-picker","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"isAtlas":false,"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"video/guides/ifa","slug":"/video/guides/ifa","pageMetadata":{"title":"IFA \u0026 ATT","description":"How the Video SDK reads the advertising identifier, and the one-time setup your app needs on iOS.","href":"/video/guides/ifa"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"How the Video SDK reads the advertising identifier, and the one-time setup your app needs on iOS.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,..._provideComponents(),...props.components},{CodeBlock,Heading,Warning}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsxs(_components.p,{children:[`The `,_jsx(_components.strong,{children:`IFA (Identifier for Advertisers)`}),` is the platform-standard ad id the SDK forwards with every ad request: IDFA on iOS, GAID on Android. The SDK reads it once the viewer allowed it; your app only needs the one-time configuration below.`]}),`\n`,_jsx(_components.p,{children:`When no IFA is available (the viewer denied permission, or the OS opted out), the SDK falls back to a first-party identifier it generates itself. You may see a lower fill rate and lower prices: without an IFA, advertisers cannot recognize the viewer, so every viewer looks new to them, and many bid less or not at all. Collecting the IFA is one of the biggest levers on your revenue.`}),`\n`,_jsx(Heading,{level:`2`,id:`ios-idfa-and-app-tracking-transparency`,children:`iOS: IDFA and App Tracking Transparency`}),`\n`,_jsxs(_components.p,{children:[`iOS 14 and later require the viewer’s consent before any SDK can read the IDFA. The system prompt is `,_jsx(_components.strong,{children:`App Tracking Transparency (ATT)`}),`.`]}),`\n`,_jsxs(_components.p,{children:[`Add the usage description to `,_jsx(_components.code,{children:`Info.plist`}),`:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`2`,language:`xml`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`xml`,children:_jsxs(_components.code,{language:`xml`,numberOfLines:`2`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`\u003c`}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`key`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`>`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`NSUserTrackingUsageDescription`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`\u003c/`}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`key`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`>`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`\u003c`}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`string`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`>`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`We use your advertising identifier to show you more relevant ads.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`\u003c/`}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`string`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`>`})]}),`\n`]})})}),`\n`,_jsx(Warning,{children:_jsx(_components.p,{children:`Without this key, the app crashes on iOS 14+ as soon as anything requests ATT.`})}),`\n`,_jsx(Heading,{level:`3`,id:`who-shows-the-prompt`,children:`Who shows the prompt`}),`\n`,_jsxs(_components.p,{children:[`The Video SDK does not show the ATT prompt by default: a video app usually has its own moment for it, after onboarding or before the first episode. Request it yourself with `,_jsx(_components.code,{children:`ATTrackingManager.requestTrackingAuthorization`}),`, and the SDK reads the identifier from then on.`]}),`\n`,_jsx(_components.p,{children:`If you’d rather let the SDK ask, set it in the configuration and the prompt appears right before the first ads request:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`4`,language:`swift`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`swift`,children:_jsxs(_components.code,{language:`swift`,numberOfLines:`4`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`KontextVideo.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`shared`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`initialize`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`with`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: .`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`init`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:` publisherToken`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"\u003cyour-publisher-token>\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:` requestTrackingAuthorization`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`true`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`))`})}),`\n`]})})}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[`The ATT prompt only appears while the app is active. Asking too early, for example in `,_jsx(_components.code,{children:`application(_:didFinishLaunchingWithOptions:)`}),`, can suppress it entirely. Ask once the first screen is up.`]})}),`\n`,_jsxs(_components.p,{children:[`The SDK also reads `,_jsx(_components.strong,{children:`IDFV`}),` (`,_jsx(_components.code,{children:`identifierForVendor`}),`), a stable per-vendor identifier that needs no ATT authorization and is always available.`]}),`\n`,_jsx(Heading,{level:`2`,id:`android-gaid`,children:`Android: GAID`}),`\n`,_jsxs(_components.p,{children:[`GAID needs no runtime prompt. Reading it requires the install-time `,_jsx(_components.code,{children:`com.google.android.gms.permission.AD_ID`}),` permission on Android 13 and later, which the `,_jsx(_components.a,{href:`/video/sdk/kotlin`,children:`Kotlin Video SDK`}),` declares through manifest merger.`]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"IFA \u0026 ATT","description":"How the Video SDK reads the advertising identifier, and the one-time setup your app needs on iOS.","href":"/video/guides/ifa"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"iOS: IDFA and App Tracking Transparency","slug":"ios-idfa-and-app-tracking-transparency","depth":2,"children":[{"title":"Who shows the prompt","slug":"who-shows-the-prompt","depth":3,"children":[]}]},{"title":"Android: GAID","slug":"android-gaid","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"kontext","siteName":"Kontext Documentation","title":"IFA \u0026 ATT - Kontext Documentation","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{"en":{"href":"/video/guides/ifa","matchLevel":0},"zh":{"href":"/zh/video/guides/ifa","matchLevel":1}}},"lastModified":"2026-10-28T15:07:08.730Z","originalFileLocation":"video/guides/ifa.mdx","locale":"en"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"How the Video SDK reads the advertising identifier, and the one-time setup your app needs on iOS.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Kontext Documentation\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/kontext/3zw6PkR8hX7T_tb1/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/kontext/3zw6PkR8hX7T_tb1/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/kontext/3zw6PkR8hX7T_tb1/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/kontext/3zw6PkR8hX7T_tb1/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/kontext/3zw6PkR8hX7T_tb1/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/kontext/3zw6PkR8hX7T_tb1/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/kontext/3zw6PkR8hX7T_tb1/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/kontext/3zw6PkR8hX7T_tb1/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/kontext/3zw6PkR8hX7T_tb1/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"IFA \u0026amp; ATT - Kontext Documentation\">\u003cmeta data-mint-head property=\"og:description\" content=\"How the Video SDK reads the advertising identifier, and the one-time setup your app needs on iOS.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Kontext Documentation\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.kontext.so/video/guides/ifa\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://kontext.mintlify.app/_mintlify/api/og/v2?division=Guides\u0026amp;title=IFA+%26+ATT\u0026amp;description=How+the+Video+SDK+reads+the+advertising+identifier%2C+and+the+one-time+setup+your+app+needs+on+iOS.\u0026amp;theme=d32fc1c778c779892b66c903\u0026amp;signature=eafdcfc07a0beda250afc2e216fc0da3ea2c0e943888c1e80345a5e1a77b6c74\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"IFA \u0026amp; ATT - Kontext Documentation\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"How the Video SDK reads the advertising identifier, and the one-time setup your app needs on iOS.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://kontext.mintlify.app/_mintlify/api/og/v2?division=Guides\u0026amp;title=IFA+%26+ATT\u0026amp;description=How+the+Video+SDK+reads+the+advertising+identifier%2C+and+the+one-time+setup+your+app+needs+on+iOS.\u0026amp;theme=d32fc1c778c779892b66c903\u0026amp;signature=eafdcfc07a0beda250afc2e216fc0da3ea2c0e943888c1e80345a5e1a77b6c74\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/kontext/3zw6PkR8hX7T_tb1/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Kontext Documentation\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#FF682F\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.kontext.so/video/guides/ifa\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/video/guides/ifa.md\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"en\" href=\"https://docs.kontext.so/video/guides/ifa\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"zh\" href=\"https://docs.kontext.so/zh/video/guides/ifa\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"x-default\" href=\"https://docs.kontext.so/video/guides/ifa\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.kontext.so/#organization\",\"name\":\"Kontext Documentation\",\"url\":\"https://docs.kontext.so\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/kontext/cSTBM3iNvsT_Fm-X/logo/light.svg?fit=max\u0026auto=format\u0026n=cSTBM3iNvsT_Fm-X\u0026q=85\u0026s=31c1ad1d9c273a4f7ae529ee4ef3bedb\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.kontext.so#website\",\"name\":\"Kontext Documentation\",\"url\":\"https://docs.kontext.so\",\"publisher\":{\"@id\":\"https://docs.kontext.so/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.kontext.so/video/guides/ifa#webpage\",\"url\":\"https://docs.kontext.so/video/guides/ifa\",\"name\":\"IFA \u0026 ATT\",\"description\":\"How the Video SDK reads the advertising identifier, and the one-time setup your app needs on iOS.\",\"dateModified\":\"2026-10-28T15:07:08.730Z\",\"isPartOf\":{\"@id\":\"https://docs.kontext.so#website\"},\"breadcrumb\":{\"@id\":\"https://docs.kontext.so/video/guides/ifa#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.kontext.so/video/guides/ifa#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Guides\",\"item\":\"https://docs.kontext.so/video/guides/testing\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"IFA \u0026 ATT\",\"item\":\"https://docs.kontext.so/video/guides/ifa\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.kontext.so/video/guides/ifa#article\",\"headline\":\"IFA \u0026 ATT\",\"name\":\"IFA \u0026 ATT\",\"description\":\"How the Video SDK reads the advertising identifier, and the one-time setup your app needs on iOS.\",\"url\":\"https://docs.kontext.so/video/guides/ifa\",\"mainEntityOfPage\":{\"@id\":\"https://docs.kontext.so/video/guides/ifa#webpage\"},\"dateModified\":\"2026-10-28T15:07:08.730Z\",\"publisher\":{\"@id\":\"https://docs.kontext.so/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.kontext.so#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Kontext Documentation\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Kontext Documentation","nav":{"global":null,"languages":[{"language":"en","tabs":[{"tab":"Conversational Ads","pages":[{"title":"Conversational Ads","href":"/overview"}]},{"tab":"Video Ads","groups":[{"group":"Get Started","pages":[{"title":"Video Ads","sidebarTitle":"Overview","href":"/video/overview"}]},{"group":"Concepts","pages":[{"title":"How it works","href":"/video/concepts/how-it-works"},{"title":"Ad formats","href":"/video/concepts/ad-formats"},{"title":"Ad lifecycle","href":"/video/concepts/lifecycle"},{"title":"Targeting","href":"/video/concepts/targeting"}]},{"group":"Guides","pages":[{"title":"Testing","href":"/video/guides/testing"},{"title":"Debugging","description":"Reading the SDK's log, checking its state, and what each error means.","href":"/video/guides/debugging"},{"title":"IFA \u0026 ATT","href":"/video/guides/ifa"},{"title":"SKAdNetwork","description":"Configure SKAdNetwork identifiers on iOS so advertisers can attribute installs from your video ads.","href":"/video/guides/skadnetwork"},{"title":"app-ads.txt","href":"/video/guides/ads-txt"},{"title":"TCF \u0026 CMP","href":"/video/guides/tcf-cmp"},{"title":"Best practices","href":"/video/guides/best-practices"}]},{"group":"SDKs","pages":[{"group":"Swift Video SDK","pages":[{"title":"Swift Video SDK","sidebarTitle":"Overview","href":"/video/sdk/swift"},{"title":"Installation","href":"/video/sdk/swift/installation"},{"title":"Showing your first ad","href":"/video/sdk/swift/first-ad"},{"title":"API reference","href":"/video/sdk/swift/api"},{"title":"Guides","href":"/video/sdk/swift/guides"},{"title":"Example app","href":"/video/sdk/swift/example"}]},{"title":"Kotlin Video SDK","sidebarTitle":"Kotlin Video SDK","href":"/video/sdk/kotlin"}]},{"group":"Resources","pages":[{"title":"Changelog","href":"/video/resources/changelog"},{"title":"Demos","href":"/video/resources/demos"},{"title":"Compliance","href":"/video/resources/compliance"},{"title":"Subprocessors","href":"/video/resources/subprocessors"},{"title":"Support","href":"/video/resources/support"}]}]}]},{"language":"zh","pages":[{"title":"zh","href":"/zh/video/guides/ifa"}]}]},"title":"IFA \u0026 ATT - Kontext Documentation","buildId":"dpl_2oYXwqkEXirXBPk8wV1FtM5USFWi","deploymentId":"dpl_2oYXwqkEXirXBPk8wV1FtM5USFWi","dynamics":[],"chunks":[]}