textos de privacidad honestos + PrivacyInfo.xcprivacy

La ficha decía "Sin analíticas, sin rastreo, sin venta de datos — nunca" y
"la sincronización con iCloud … está cifrada de extremo a extremo". Lo
primero ya es verdad tras quitar los SDKs; lo segundo sigue sin serlo: es
la base privada de CloudKit, cifrado gestionado por Apple, no cifrado
nuestro de extremo a extremo.

fastlane/metadata — bloque de privacidad reescrito en las 13
localizaciones (en-US/GB/AU/CA, es-ES/MX, de-DE, fr-FR/CA, it, ja,
pt-BR/PT): sin cuentas, sin anuncios ni analítica de terceros, sin
servidores nuestros, datos en el dispositivo, iCloud opcional cifrado por
Apple. No se sube a ASC: los ficheros quedan en el repo.

Copias de seguridad — se elige decir la verdad en vez de cifrarlas: son
JSON legible que el usuario controla y puede abrir con cualquier editor.
Cifrarlas obligaría a gestionar una clave (Keychain o frase del usuario)
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 cifradas.

PrivacyInfo.xcprivacy — Apple lo exige y la app no tenía ninguno. Declara
NSPrivacyTracking false, sin dominios de rastreo, sin tipos de datos
recogidos, y solo las API de motivo requerido que se usan de verdad:
FileTimestamp (CoreData, exportaciones, backups, diagnósticos) y
UserDefaults (preferencias y App Group).

Closes #52

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01F1u4K16xy7eQVtgsYNZ9Vn
This commit is contained in:
alexandrev-tibco
2026-09-18 16:10:17 +02:00
parent 2380d37a9e
commit 12386673ff
22 changed files with 88 additions and 27 deletions
@@ -0,0 +1,41 @@
<?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>
<!--
Portfolio Journal collects nothing. There is no account, no server of
ours, no analytics SDK and no advertising SDK. Everything the user types
stays in the app container and, if they opt in, in their own private
CloudKit database.
-->
<key>NSPrivacyTracking</key>
<false/>
<key>NSPrivacyTrackingDomains</key>
<array/>
<key>NSPrivacyCollectedDataTypes</key>
<array/>
<key>NSPrivacyAccessedAPITypes</key>
<array>
<dict>
<!-- Reading/writing the Core Data store, exports, backups and the
on-device diagnostic reports. -->
<key>NSPrivacyAccessedAPIType</key>
<string>NSPrivacyAccessedAPICategoryFileTimestamp</string>
<key>NSPrivacyAccessedAPITypeReasons</key>
<array>
<string>C617.1</string>
</array>
</dict>
<dict>
<!-- App preferences (chart selection, dashboard layout, reminder
settings) stored in UserDefaults and the App Group. -->
<key>NSPrivacyAccessedAPIType</key>
<string>NSPrivacyAccessedAPICategoryUserDefaults</string>
<key>NSPrivacyAccessedAPITypeReasons</key>
<array>
<string>CA92.1</string>
</array>
</dict>
</array>
</dict>
</plist>
@@ -707,3 +707,4 @@
/* 1.7.0 privacy cleanup: on-device diagnostics + honest backup wording */
"Share Diagnostics" = "Diagnose teilen";
"diagnostics_footer" = "Absturz- und Hänger-Berichte, die iOS auf diesem Gerät gesammelt hat. Sie werden nirgendwohin übertragen — nur durch Teilen verlässt ein Bericht dein iPhone.";
"backups_footer" = "Backups sind lesbare JSON-Dateien auf diesem Gerät und, wenn aktiviert, in deiner iCloud Drive. Die App verschlüsselt sie nicht: Wer die Datei öffnen kann, sieht deine Kontostände.";
@@ -708,3 +708,4 @@
/* 1.7.0 privacy cleanup: on-device diagnostics + honest backup wording */
"Share Diagnostics" = "Share Diagnostics";
"diagnostics_footer" = "Crash and hang reports collected by iOS on this device. They are never uploaded anywhere — sharing one is the only way it leaves your iPhone.";
"backups_footer" = "Backups are readable JSON files kept on this device, and in your iCloud Drive when enabled. They are not encrypted by the app: anyone who can open the file can read your balances.";
@@ -661,3 +661,4 @@
/* 1.7.0 privacy cleanup: on-device diagnostics + honest backup wording */
"Share Diagnostics" = "Compartir diagnósticos";
"diagnostics_footer" = "Informes de fallos y bloqueos que iOS ha recogido en este dispositivo. Nunca se envían a ningún sitio: compartir uno es la única forma de que salga de tu iPhone.";
"backups_footer" = "Las copias de seguridad son ficheros JSON legibles guardados en este dispositivo, y en tu iCloud Drive si lo activas. La app no las cifra: cualquiera que pueda abrir el fichero puede leer tus saldos.";
@@ -707,3 +707,4 @@
/* 1.7.0 privacy cleanup: on-device diagnostics + honest backup wording */
"Share Diagnostics" = "Partager les diagnostics";
"diagnostics_footer" = "Rapports de plantage et de blocage collectés par iOS sur cet appareil. Ils ne sont jamais envoyés nulle part : les partager est le seul moyen qu'ils quittent votre iPhone.";
"backups_footer" = "Les sauvegardes sont des fichiers JSON lisibles conservés sur cet appareil, et dans votre iCloud Drive si vous l'activez. L'app ne les chiffre pas : quiconque peut ouvrir le fichier peut lire vos soldes.";
@@ -707,3 +707,4 @@
/* 1.7.0 privacy cleanup: on-device diagnostics + honest backup wording */
"Share Diagnostics" = "Condividi diagnostica";
"diagnostics_footer" = "Rapporti di crash e blocchi raccolti da iOS su questo dispositivo. Non vengono mai inviati da nessuna parte: condividerne uno è l'unico modo per farlo uscire dal tuo iPhone.";
"backups_footer" = "I backup sono file JSON leggibili conservati su questo dispositivo, e nel tuo iCloud Drive se lo attivi. L'app non li cifra: chiunque possa aprire il file può leggere i tuoi saldi.";
@@ -707,3 +707,4 @@
/* 1.7.0 privacy cleanup: on-device diagnostics + honest backup wording */
"Share Diagnostics" = "診断情報を共有";
"diagnostics_footer" = "iOS がこの端末で収集したクラッシュとハングのレポートです。どこにも送信されません。共有した場合だけ iPhone の外に出ます。";
"backups_footer" = "バックアップはこの端末に保存される読み取り可能な JSON ファイルです(有効にすると iCloud Drive にも保存)。アプリは暗号化しません。ファイルを開ける人は残高を読めます。";
@@ -707,3 +707,4 @@
/* 1.7.0 privacy cleanup: on-device diagnostics + honest backup wording */
"Share Diagnostics" = "Compartilhar diagnósticos";
"diagnostics_footer" = "Relatórios de falhas e travamentos coletados pelo iOS neste dispositivo. Nunca são enviados para lugar nenhum: compartilhar um é a única forma de ele sair do seu iPhone.";
"backups_footer" = "Os backups são arquivos JSON legíveis guardados neste dispositivo, e no seu iCloud Drive se você ativar. O app não os criptografa: quem conseguir abrir o arquivo lê os seus saldos.";
@@ -674,7 +674,7 @@ struct SettingsView: View {
} header: {
Text("Backups")
} footer: {
Text("Backups are stored locally and in iCloud (when enabled).")
Text("backups_footer")
}
}
+3 -2
View File
@@ -28,8 +28,9 @@ EIN INVESTITIONSTAGEBUCH FÜHREN
DATENSCHUTZ BY DESIGN
• Kein Konto, kein Login, keine Registrierung erforderlich.
• Keine Analyse, kein Tracking, kein Datenverkauf — niemals.
iCloud-Sync ist optional: Du bestimmst, und alles ist Ende-zu-Ende-verschlüsselt.
• Keine Werbung und keine Analyse durch Dritte: Die App enthält kein Werbe- oder Tracking-SDK.
Keine Server von uns. Deine Daten bleiben auf deinem Gerät.
• iCloud-Sync ist optional: Er nutzt deine eigene private iCloud-Datenbank, von Apple verschlüsselt.
• Funktioniert 100% offline.
FÜR PASSIVE ANLEGER ENTWICKELT
+3 -2
View File
@@ -30,8 +30,9 @@ KEEP AN INVESTMENT JOURNAL
PRIVACY BY DESIGN
• No account required. No login. No sign-up.
• No analytics, no tracking, no data selling — ever.
iCloud sync is optional: you control it, and it's encrypted end-to-end.
• No ads and no third-party analytics: there is no advertising or tracking SDK in the app.
No servers of ours. Your data lives on your device.
• iCloud sync is optional: it uses your own private iCloud database, encrypted by Apple.
• Everything works 100% offline.
BUILT FOR PASSIVE INVESTORS
+3 -2
View File
@@ -30,8 +30,9 @@ KEEP AN INVESTMENT JOURNAL
PRIVACY BY DESIGN
• No account required. No login. No sign-up.
• No analytics, no tracking, no data selling — ever.
iCloud sync is optional: you control it, and it's encrypted end-to-end.
• No ads and no third-party analytics: there is no advertising or tracking SDK in the app.
No servers of ours. Your data lives on your device.
• iCloud sync is optional: it uses your own private iCloud database, encrypted by Apple.
• Everything works 100% offline.
BUILT FOR PASSIVE INVESTORS
+3 -2
View File
@@ -30,8 +30,9 @@ KEEP AN INVESTMENT JOURNAL
PRIVACY BY DESIGN
• No account required. No login. No sign-up.
• No analytics, no tracking, no data selling — ever.
iCloud sync is optional: you control it, and it's encrypted end-to-end.
• No ads and no third-party analytics: there is no advertising or tracking SDK in the app.
No servers of ours. Your data lives on your device.
• iCloud sync is optional: it uses your own private iCloud database, encrypted by Apple.
• Everything works 100% offline.
BUILT FOR PASSIVE INVESTORS
+3 -2
View File
@@ -30,8 +30,9 @@ KEEP AN INVESTMENT JOURNAL
PRIVACY BY DESIGN
• No account required. No login. No sign-up.
• No analytics, no tracking, no data selling — ever.
iCloud sync is optional: you control it, and it's encrypted end-to-end.
• No ads and no third-party analytics: there is no advertising or tracking SDK in the app.
No servers of ours. Your data lives on your device.
• iCloud sync is optional: it uses your own private iCloud database, encrypted by Apple.
• Everything works 100% offline.
BUILT FOR PASSIVE INVESTORS
+3 -2
View File
@@ -28,8 +28,9 @@ LLEVA UN DIARIO DE INVERSIÓN
PRIVACIDAD POR DISEÑO
• Sin cuenta, sin login, sin registro.
• Sin analíticas, sin rastreo, sin venta de datos — nunca.
La sincronización con iCloud es opcional: tú la controlas, y está cifrada de extremo a extremo.
• Sin anuncios y sin analítica de terceros: la app no lleva ningún SDK de publicidad ni de rastreo.
Sin servidores nuestros. Tus datos viven en tu dispositivo.
• La sincronización con iCloud es opcional: usa tu propia base privada de iCloud, cifrada por Apple.
• Funciona al 100% sin conexión.
DISEÑADO PARA INVERSORES PASIVOS
+3 -2
View File
@@ -28,8 +28,9 @@ LLEVA UN DIARIO DE INVERSIÓN
PRIVACIDAD POR DISEÑO
• Sin cuenta, sin login, sin registro.
• Sin analíticas, sin rastreo, sin venta de datos — nunca.
La sincronización con iCloud es opcional: tú la controlas, y está cifrada de extremo a extremo.
• Sin anuncios y sin analítica de terceros: la app no lleva ningún SDK de publicidad ni de rastreo.
Sin servidores nuestros. Tus datos viven en tu dispositivo.
• La sincronización con iCloud es opcional: usa tu propia base privada de iCloud, cifrada por Apple.
• Funciona al 100% sin conexión.
DISEÑADO PARA INVERSORES PASIVOS
+3 -2
View File
@@ -28,8 +28,9 @@ TENEZ UN JOURNAL D'INVESTISSEMENT
CONFIDENTIALITÉ PAR CONCEPTION
• Aucun compte requis. Aucune connexion. Aucune inscription.
• Aucune analyse, aucun suivi, aucune vente de données — jamais.
La synchronisation iCloud est facultative : vous la contrôlez, et elle est chiffrée de bout en bout.
• Aucune publicité et aucune analyse tierce : l'app ne contient aucun SDK publicitaire ni de suivi.
Aucun serveur de notre côté. Vos données restent sur votre appareil.
• La synchronisation iCloud est facultative : elle utilise votre propre base iCloud privée, chiffrée par Apple.
• Fonctionne à 100% hors ligne.
CONÇU POUR LES INVESTISSEURS PASSIFS
+3 -2
View File
@@ -28,8 +28,9 @@ TENEZ UN JOURNAL D'INVESTISSEMENT
CONFIDENTIALITÉ PAR CONCEPTION
• Aucun compte requis. Aucune connexion. Aucune inscription.
• Aucune analyse, aucun suivi, aucune vente de données — jamais.
La synchronisation iCloud est facultative : vous la contrôlez, et elle est chiffrée de bout en bout.
• Aucune publicité et aucune analyse tierce : l'app ne contient aucun SDK publicitaire ni de suivi.
Aucun serveur de notre côté. Vos données restent sur votre appareil.
• La synchronisation iCloud est facultative : elle utilise votre propre base iCloud privée, chiffrée par Apple.
• Fonctionne à 100% hors ligne.
CONÇU POUR LES INVESTISSEURS PASSIFS
+3 -2
View File
@@ -28,8 +28,9 @@ TIENI UN DIARIO DI INVESTIMENTO
PRIVACY BY DESIGN
• Nessun account richiesto. Nessun login. Nessuna registrazione.
• Nessuna analisi, nessun tracciamento, nessuna vendita di dati — mai.
La sincronizzazione iCloud è facoltativa: la controlli tu ed è crittografata end-to-end.
• Nessuna pubblicità e nessuna analisi di terze parti: l'app non include alcun SDK pubblicitario o di tracciamento.
Nessun nostro server. I tuoi dati restano sul tuo dispositivo.
• La sincronizzazione iCloud è facoltativa: usa il tuo database iCloud privato, cifrato da Apple.
• Funziona al 100% offline.
PROGETTATO PER INVESTITORI PASSIVI
+3 -2
View File
@@ -28,8 +28,9 @@ Portfolio Journalは、長期投資家のためのプライバシー重視の資
プライバシー・バイ・デザイン
• アカウント不要。ログイン不要。登録不要。
分析なし、トラッキングなし、データ販売なし — 一切なし
iCloud同期はオプション:自分でコントロールでき、エンドツーエンド暗号化に対応
広告なし、第三者の分析なし:広告SDKもトラッキングSDKも入っていません
当社のサーバーはありません。データは端末の中にあります
• iCloud同期はオプション:あなた自身のプライベートなiCloudデータベースを使い、Appleが暗号化します。
• 完全オフラインで動作。
パッシブ投資家のために設計
+3 -2
View File
@@ -28,8 +28,9 @@ MANTENHA UM DIÁRIO DE INVESTIMENTOS
PRIVACIDADE POR DESIGN
• Sem conta, sem login, sem cadastro.
• Sem análises, sem rastreamento, sem venda de dados — nunca.
A sincronização com iCloud é opcional: você controla, com criptografia de ponta a ponta.
• Sem anúncios e sem análises de terceiros: o app não tem nenhum SDK de publicidade ou rastreamento.
Sem servidores nossos. Seus dados ficam no seu dispositivo.
• A sincronização com iCloud é opcional: usa o seu próprio banco privado do iCloud, criptografado pela Apple.
• Funciona 100% offline.
FEITO PARA INVESTIDORES PASSIVOS
+3 -2
View File
@@ -28,8 +28,9 @@ MANTENHA UM DIÁRIO DE INVESTIMENTOS
PRIVACIDADE POR DESIGN
• Sem conta, sem login, sem cadastro.
• Sem análises, sem rastreamento, sem venda de dados — nunca.
A sincronização com iCloud é opcional: você controla, com criptografia de ponta a ponta.
• Sem anúncios e sem análises de terceiros: o app não tem nenhum SDK de publicidade ou rastreamento.
Sem servidores nossos. Seus dados ficam no seu dispositivo.
• A sincronização com iCloud é opcional: usa o seu próprio banco privado do iCloud, criptografado pela Apple.
• Funciona 100% offline.
FEITO PARA INVESTIDORES PASSIVOS