Corregir los textos de privacidad: App Store, app y web #52
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).
La ficha dice literalmente «Sin analíticas, sin rastreo, sin venta de datos — nunca» y «la sincronización con iCloud … está cifrada de extremo a extremo». Lo primero era falso; lo segundo sigue siendo impreciso: es la base privada de CloudKit, cifrado gestionado por Apple, no cifrado extremo a extremo propio.
fastlane/metadata/*/description.txt(13 localizaciones): decir la verdad — sin cuentas, sin servidores propios, datos en el dispositivo, sincronización opcional por iCloud cifrada por Apple, sin anuncios, sin analítica de terceros.isPremiumdesbloqueaba «sin anuncios»; al no haber anuncios ya, quitar esa promesa.security.html,manual-portfolio-tracker.htmlyprivacy.htmlafirman E2E y hablan de socios publicitarios.PrivacyInfo.xcprivacy, que Apple exige y la app no tiene.No subir nada a ASC: los textos quedan en el repo.
Implementado en
1238667(app) yc573c36en el repoportfolioJournalWeb.fastlane/metadata/*/description.txt: bloque de privacidad reescrito en las 13 localizaciones. Lo de «sin analíticas, sin rastreo» ya es verdad; lo de «cifrada de extremo a extremo» se corrige, porque es la base privada de CloudKit con cifrado gestionado por Apple, no cifrado nuestro. No subido a ASC, queda en el repo.Backups: se elige decir la verdad en vez de cifrarlos. Son JSON legible que el usuario controla; cifrarlos obligaría a gestionar una clave y convertiría una copia recuperable a mano en una que se pierde con la clave. El pie de Ajustes ahora avisa de que no están cifrados (clave
backups_footer, 7 idiomas).PortfolioJournal/Resources/PrivacyInfo.xcprivacycreado:NSPrivacyTrackingfalse, sin dominios de rastreo, sin tipos de datos recogidos, y solo las API de motivo requerido que se usan de verdad — FileTimestamp (C617.1) y UserDefaults (CA92.1). Verificado que acaba dentro del.app.Web (sin desplegar):
privacy.htmlya no habla de socios publicitarios ni de identificadores;security.htmlpierde el «end-to-end» de las tres metadescripciones y gana una sección «No tracking, no advertising»;manual-portfolio-tracker.htmldeja de decir «nadie, ni nosotros, puede ver tus saldos» junto a «end-to-end»;index.htmldistingue la app (nada) del sitio (Plausible).Queda pendiente y solo lo puede hacer Alexandre: cambiar la etiqueta de privacidad en App Store Connect a «Data Not Collected» (hoy declara Identifiers y Usage Data, incluido «used to track you»). Tarea Vikunja 549 con los pasos.
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 los textos de privacidad corregidos y el
PrivacyInfo.xcprivacynuevo (1238667); confirmado que el manifiesto viaja dentro del bundle de la app en el IPA.Recordatorio de lo que queda fuera de esta build y no he tocado, porque va con la versión de App Store y lo coordina Alexandre: subir los textos de
fastlane/metadata/, desplegar la web y cambiar la etiqueta de privacidad de la ficha a "Data Not Collected".