Quitar los SDK de publicidad y analítica de terceros (AdMob + Firebase Analytics + ATT) #50
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Decisión de Alexandre (auditoría 2026-09-18): "Portfolio Journal sin AdMob ni Google: es la única forma de que «sin rastreo» sea verdad, y el ingreso por anuncios es despreciable" (695 impresiones en 90 días).
Quitar del target app:
GoogleMobileAdsyUserMessagingPlatform(paquete swift-package-manager-google-mobile-ads)FirebaseCore+FirebaseAnalytics(paquete firebase-ios-sdk)AdMobService, el banner y su hueco enContentView, el flujo UMP y la entrada «Manage Ad Consent» de AjustesATTrackingManager.requestTrackingAuthorization()yNSUserTrackingUsageDescriptionSKAdNetworkItems,GADApplicationIdentifier,GADDelayAppMeasurementInityGoogleService-Info.plistFirebaseServiceentero (el eventosnapshot_addedenviaba el importe del saldo a GA4)app-ads.txtdel sitio webLa app no debe pedir ATT al arrancar ni dejar hueco en la interfaz donde estaba el banner.
Implementado en
7d2f605(rama 1.7.0).Fuera del proyecto: paquetes
firebase-ios-sdkyswift-package-manager-google-mobile-ads, productosFirebaseCore,FirebaseAnalytics,GoogleMobileAds;Package.resolvedborrado. BorradosServices/AdMobService.swift(215 líneas, con el flujo UMP,BannerAdViewy la llamada a ATT) yServices/FirebaseService.swift(226 líneas) con sus 40 llamadas.FirebaseServicese borra entero en vez de dejarse como capa vacía: una clase con ese nombre en una app que presume de no llevar Firebase es justo el detalle que se vuelve a colar en la próxima auditoría.También fuera: el banner y su
safeAreaInsetenContentView(las 5 pestañas ya no reservan 50 pt), la entrada «Manage Ad Consent» de Ajustes, el bloque AdMob deAppConstants,SettingsViewModel.toggleAnalytics(el flag no estaba conectado a nada),PremiumFeature.noAdsy las clavesfeature_no_ads/paywall_benefit_noadsde los 7 idiomas. Sin tocar precios ni productos. EnInfo.plist:NSUserTrackingUsageDescription,GADApplicationIdentifier,GADDelayAppMeasurementInity los 65SKAdNetworkItems. BorradosGoogleService-Info.plist,Scripts/analyze_ga4.pyy elapp-ads.txtdel sitio web.Verificado:
xcodebuild buildOK; 108 tests unitarios y 17 UI (incluidoDuoLayoutUITests) en verde sobre iOS 27.0;grepde admob/googlemobileads/firebase/attracking/skadnetwork/logEvent sobre todo el código da cero;otool -Ldel binario no enlaza AppTrackingTransparency, AdSupport ni nada de Google, y el.appno tiene carpetaFrameworks. Capturas del nivel gratuito: sin hueco donde estaba el banner y sin petición de ATT al arrancar.La build 89 (1.7.0) está en TestFlight desde hoy: subida con
altooltras--validate-appsin errores, procesada por App Store Connect (processingState: VALID) y ya en pruebas internas (internalBuildState: IN_BETA_TESTING). Notas de beta publicadas en es-ES y en-US.Incluye la retirada de AdMob, Firebase Analytics y ATT (
7d2f605). Verificado dentro del IPA: elInfo.plistde la app no llevaNSUserTrackingUsageDescription, niGADApplicationIdentifier, ni ningúnSKAdNetworkItems, y el proyecto no tiene ninguna dependencia de terceros.Lo que se pide probar a los testers es justamente esto: que la app ya no pida permiso de rastreo al arrancar. El issue ya estaba cerrado; esto es solo el registro de que ha llegado a manos de los testers.