395e4a189b
Apple rejected build 2: NSPrivacyTracking was true with an empty NSPrivacyTrackingDomains. Listing AdMob's ad-serving domains would block ads before ATT consent (same domains serve non-personalized ads), so we set NSPrivacyTracking=false and remove the domains key — mirroring Google's own AdMob SDK manifest (DeviceID data type stays tracking=true, no top-level tracking/domains). Bump to build 3. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
69 lines
2.5 KiB
XML
69 lines
2.5 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
<plist version="1.0">
|
|
<dict>
|
|
<!-- NSPrivacyTracking is false at the app level and no tracking domains are
|
|
listed. AdMob's ad-serving domains serve BOTH personalized and
|
|
non-personalized ads, so listing them in NSPrivacyTrackingDomains would
|
|
make iOS block ad requests before ATT consent (breaking ads for users
|
|
who decline). This mirrors Google's own AdMob SDK privacy manifest,
|
|
which marks the DeviceID data type tracking=true (below) yet sets no
|
|
top-level NSPrivacyTracking and no domains. ATT consent is still
|
|
requested at runtime via NSUserTrackingUsageDescription (Info.plist).
|
|
Apple ITMS-91064 requires: if NSPrivacyTracking is true, the domains
|
|
list must be non-empty — so we keep it false. -->
|
|
<key>NSPrivacyTracking</key>
|
|
<false/>
|
|
<key>NSPrivacyCollectedDataTypes</key>
|
|
<array>
|
|
<dict>
|
|
<key>NSPrivacyCollectedDataType</key>
|
|
<string>NSPrivacyCollectedDataTypeDeviceID</string>
|
|
<key>NSPrivacyCollectedDataTypeLinked</key>
|
|
<false/>
|
|
<key>NSPrivacyCollectedDataTypeTracking</key>
|
|
<true/>
|
|
<key>NSPrivacyCollectedDataTypePurposes</key>
|
|
<array>
|
|
<string>NSPrivacyCollectedDataTypePurposeThirdPartyAdvertising</string>
|
|
</array>
|
|
</dict>
|
|
<dict>
|
|
<key>NSPrivacyCollectedDataType</key>
|
|
<string>NSPrivacyCollectedDataTypeProductInteraction</string>
|
|
<key>NSPrivacyCollectedDataTypeLinked</key>
|
|
<false/>
|
|
<key>NSPrivacyCollectedDataTypeTracking</key>
|
|
<false/>
|
|
<key>NSPrivacyCollectedDataTypePurposes</key>
|
|
<array>
|
|
<string>NSPrivacyCollectedDataTypePurposeAnalytics</string>
|
|
<string>NSPrivacyCollectedDataTypePurposeAppFunctionality</string>
|
|
</array>
|
|
</dict>
|
|
</array>
|
|
<key>NSPrivacyAccessedAPITypes</key>
|
|
<array>
|
|
<dict>
|
|
<!-- shared_preferences reads/writes the app's own UserDefaults. -->
|
|
<key>NSPrivacyAccessedAPIType</key>
|
|
<string>NSPrivacyAccessedAPICategoryUserDefaults</string>
|
|
<key>NSPrivacyAccessedAPITypeReasons</key>
|
|
<array>
|
|
<string>CA92.1</string>
|
|
</array>
|
|
</dict>
|
|
<dict>
|
|
<!-- Season content cache reads/writes + stats file timestamps in the
|
|
app container (path_provider / ContentDownloader). -->
|
|
<key>NSPrivacyAccessedAPIType</key>
|
|
<string>NSPrivacyAccessedAPICategoryFileTimestamp</string>
|
|
<key>NSPrivacyAccessedAPITypeReasons</key>
|
|
<array>
|
|
<string>C617.1</string>
|
|
</array>
|
|
</dict>
|
|
</array>
|
|
</dict>
|
|
</plist>
|