Skip to content
WebViewGold Vibe Coding to App Store
English
Get WebViewGold

Privacy and ads

App Tracking Transparency for web-wrapped apps: when you need the prompt and how WebViewGold handles it

If your app shows AdMob or Meta ads, or sends data to an ad network that matches users across apps, iOS requires the App Tracking Transparency prompt before any tracking happens. WebViewGold shows the prompt, keeps the Info.plist key Apple demands, and tells your web app what the user decided. Here is the whole picture, including the Google Play side.

From $109 one-time per platform, or let our team do it all from $698.

  • Approval guarantee – or money back within 14 days
  • No coding needed
  • One-time payment, free updates
  • 24/7 human support
  • Made in Germany since 2014 · ISO 27001

What counts as tracking

Apple defines tracking as linking data about a user or device collected in your app with data collected by other companies' apps and websites, for targeted advertising or measurement, or sharing it with data brokers. Personalized AdMob ads, Meta Audience Network, install attribution through the Meta or TikTok SDKs, attribution platforms and sharing hashed emails with ad networks are tracking. Your own analytics, Supabase or Firebase data used for your own features, fraud prevention and contextual (non-personalized) ads are not.

Guideline 5.1.2 ties it together: tracking requires the system ATT prompt, the app must respect a "no", you may not gate features behind consent, and the App Privacy answers must match. The native ad SDKs in WebViewGold are built around this: AdMob reads the advertising identifier only when the user allowed it and otherwise serves non-personalized ads.

Do you need the prompt?

Your setupATT promptNotes
AdMob banner, interstitial or rewarded ads via WebViewGoldYesThe Google Mobile Ads SDK uses the IDFA for personalized ads; show the prompt and declare advertising data
Meta Audience Network ads via WebViewGoldYesMeta requires the prompt for personalized ads on iOS
Facebook or Instagram ads to promote the app, with the Meta SDK for install attributionYesAttribution across apps is tracking by definition
Web ad scripts (AdSense) inside the WebView, useAdsenseAdsGray area; conservative answer is yesThe ad script uses cookies for interest-based ads across sites; declare advertising data either way
No ads, no attribution SDK, first-party analytics onlyNoKeep the Info.plist tracking key anyway (WebViewGold needs it) and answer "no tracking" in App Privacy

How it works in WebViewGold

One permission text, one prompt, one JavaScript variable.

  1. Write the purpose string

    Info.plist contains "Privacy - Tracking Usage Description" (NSUserTrackingUsageDescription). Replace the placeholder with a sentence a user understands, for example "We use this to show you relevant ads, which keep the app free." Do not delete the key: the WebViewGold publish docs note it is required and that removing it crashes the app.

  2. Let the system prompt appear

    WebViewGold requests the tracking decision on the first run, so the user sees Apple's standard dialog with your purpose string. You may show your own short explanation screen before it, as long as it does not imitate the system dialog or reward tapping Allow.

  3. Read the decision in your web app

    Navigate to user-disable-tracking://; WebViewGold sets window.trackingDisabled to true when tracking was denied and false when it was allowed. On iOS you can combine it with other calls through multiapicall://user-disable-tracking,getappversion. Docs: User Tracking Decision API.

  4. React to a "no"

    Load non-personalized ads or no ad scripts, skip pixels and attribution calls. For native AdMob ads, ATTDeniedShowAds in Config.swift decides: false stops showing ads entirely when tracking is denied, true keeps non-personalized ads. Keep askForAdConsent enabled so Google's consent form handles EU and UK users (ASK_FOR_AD_CONSENT on Android).

  5. Android: no ATT, but declarations

    There is no system tracking prompt on Android. Instead you declare the advertising ID in the Data safety form, respect the user's "Delete advertising ID" setting (the SDK does), and rely on the same Google consent form for regional consent.

WebViewGold has allowed us the shortest and most efficient time-to-market ever possible from among all the other app platforms we have ever tried during the past 5 years. I don’t know why I hadn’t discovered you sooner, but I am really, really glad I did. Currently nearing 6000 app downloads on both iOS App Store & Google Play Store without any problem!

Antonio Davila · CodeCanyon

Read the tracking decision in JavaScript

Call it once per session before loading any ad or pixel script. The variable is set by the app shortly after the navigation.

javascript
const isIOSApp = /WebViewGoldApp/.test(navigator.userAgent) && /iPhone|iPad/.test(navigator.userAgent);

function withTrackingDecision(callback) {
  if (!isIOSApp) { callback(false); return; }            // web and Android: use your cookie consent instead
  window.location.href = "user-disable-tracking://";     // WebViewGold sets window.trackingDisabled
  setTimeout(() => callback(window.trackingDisabled === true), 500);
}

withTrackingDecision((denied) => {
  if (denied) {
    loadContextualAdsOnly();        // no personalized ads, no pixels, no attribution calls
  } else {
    loadAdsAndPixels();
  }
});

Privacy labels and store declarations

  • App Privacy (Apple): with ads, declare "Advertising Data" and "Device ID" under "Data Used to Track You". Without ads, nothing is used for tracking even if you collect analytics.
  • The IDFA question at upload ("Does this app use the Advertising Identifier?"): the AdMob SDK is part of WebViewGold even when ads are off, so the publish docs recommend answering yes and ticking only "Attribute this app installation to a previously served advertisement" when you do not serve ads, and "Serve advertisements within the app" as well when you do.
  • Google Play Data safety: "Device or other IDs" collected and shared for advertising when AdMob is on; the ads declaration ("Does your app contain ads?") set to yes; the advertising ID permission is added by the SDK and must match your form.
  • Privacy policy: name the ad networks, explain personalized versus non-personalized ads and link the opt-out mechanisms. The privacy guide has the structure.
  • Families or children's apps: ATT prompts are not allowed for children, ads must be certified child-directed, and the Play Families policy applies.

If you do not show ads

Most vibe-coded apps do not. Then the checklist is short: leave showBannerAd and showFullScreenAd off in Config.swift (and the matching options in Config.java), keep the tracking usage key with a neutral sentence, answer the IDFA question as the publish docs describe, declare no tracking in App Privacy and no advertising in the Data safety form. If you later add ads, that is a store update plus new privacy answers, and the prompt starts appearing for existing users on first launch of the new version.

Frequently asked questions

Does Google Analytics or Firebase Analytics require the ATT prompt?

Not by itself. Analytics for your own product is not tracking in Apple's definition. It becomes tracking when the data is linked with ad networks for targeting or attribution, for example Google Ads conversion linking.

Can I explain why before the system prompt appears?

Yes. A short screen in your web app that explains the benefit is allowed. It must not look like the system dialog, must not offer a reward for allowing, and must not block the app if the user declines.

Does a denied prompt break AdMob?

No. AdMob serves non-personalized ads, usually at lower rates. ATTDeniedShowAds lets you choose between non-personalized ads and no ads at all.

What is the Android equivalent?

There is no system prompt. Android relies on the advertising ID declaration in Data safety, the user's advertising ID settings and consent forms in regions that require them.

Does my website need ATT too?

No. ATT is an iOS app concept. Your website follows cookie and consent laws instead.

Three ways to get your app into the stores

Same result, different amount of work on your side. All three come with the approval guarantee and 24/7 human support.

Do it yourself

$109 per platform, one-time

The WebViewGold license: a finished Xcode or Android Studio project. Paste your URL, set name and icon, switch on features, build and submit. Free updates forever.

See plans on the main page

Cloud Builder

$349 per license, one-time add-on

No Mac, no Xcode, no Android Studio: configure in the browser, we build both apps in the cloud and hand them to App Store Connect and the Play Console.

How the Cloud Builder works Try the free demo

Full Service

$698 per platform $798

Send us your URL and icon. Our team configures, builds and delivers your app within 72 hours, white-label, with source projects. Both platforms for $1,158.

Full Service details Powered by WeSetupYourWebViewApp

Winter Sale prices valid until December 31, 2026.

Ready to ship your app?

App Store & Google Play approval guarantee – or your money back within 14 days

Rather hand it over? Full Service: we configure, build and deliver within 72 hours, from $698 per platform. Questions? Chat with us 24/7.

Refunds are granted under the conditions listed in our FAQ: a non-content rejection by Apple and/or Google, claimed within 14 days after purchase.