1. Por qué la privacidad es importante en las aplicaciones de notas

Ideas de trabajo, borradores personales, registros diarios. La aplicación de notas recopila información antes de mostrarla a la gente. Tan importante como poder escribir rápidamente, es importante entender dónde se almacena y dónde se envía.

Este artículo explica el cifrado, la caché de comunicación, la pantalla, el registro de diagnóstico y el análisis de uso en el terminal por separado. Una protección no garantiza la protección de otras rutas.

6 de septiembre de 2026 actualización:La fuente de la misma versión (5.8.17) que la versión pública coincidió, y se corrigió la explicación de la protección de la pantalla, el registro y el análisis de uso. Anota tanto lo que puedes hacer como lo que limitas.

2. La capacidad de ocultar automáticamente las notas en el conmutador de aplicaciones no está habilitada

iOS utiliza la pantalla como instantánea después de que la aplicación se mueva al fondo. Apple te guía para eliminar información confidencial de la pantalla cuando te mueves al fondo.

En la fuente del 5.8.17 confirmado, sceneWillResignActive y sceneDidEnterBackground guardan el borrador y no llaman al proceso de visualización de superposición de privacidad. La función de visualización anterior permanece, pero no es una ruta que funcione como una protección válida.

Las notas que se muestran pueden permanecer en la imagen del conmutador de aplicaciones. El cifrado de la Outbox no oculta la imagen de la pantalla. Corrija la explicación de "siempre ocultar el contenido de la nota" en la versión anterior de este artículo.

3. URLSession efímera: Reducir el almacenamiento en disco en la caché de comunicación

El estándar URLSession almacena cachés, cookies e información de autenticación en el disco. Esta es una función útil para las aplicaciones generales, pero no es necesaria para las aplicaciones de notas y puede ser un riesgo.

El hecho de que la caché de comunicación permanezca en el terminal significa que los rastros de los cuales se accedió a URL y cuándo existen en el disco. Si se guarda una cookie, significa que la información de la sesión permanecerá en el terminal.

Esta aplicación utiliza URLSessionConfiguration.ephemeral.

private let session: URLSession = {
    let config = URLSessionConfiguration.ephemeral
    config.httpCookieAcceptPolicy = .never
    config.httpShouldSetCookies = false
    config.urlCache = nil
    return URLSession(configuration: config)
}()
  • Sin caché de disco:No guarde la caché de esta URLSession en el disco
  • Desactivar el uso de cookies:Esta URLSession no acepta cookies y no establece la solicitud
  • Caché URL desactivado:Establezca el almacenamiento de caché en nil
  • Configuración que no utiliza almacenamiento persistente:No guarda la información de sesión de URLSession en el disco

Esta es una protección relacionada con la caché de URLSession, etc., y no es una función que elimine los eventos de uso que la aplicación almacena y transmite por separado o los registros de transmisión en el lado del servidor. La asociación por el identificador del análisis de uso también se lleva a cabo por separado de esta configuración.

4. Rango de salida de registros de medición de rendimiento

La salida de registro de PerformanceLogger está rodeada por #if DEBUG. En las compilaciones donde DEBUG no está definido, el procesamiento de salida de registro de este registrador no está incluido.

El logError de este registrador registra el tipo en lugar de los detalles del error. Por ejemplo, use el tipo URLError y no libere localizedDescription tal cual, que puede contener rutas de archivo y entrada de usuario.

Por otro lado, no es un mecanismo que automáticamente hace inofensivos todos los nombres de eventos y cadenas adicionales pasadas a logEvent. Es necesario no pasar la dirección de correo electrónico, el cuerpo de la nota o la información de autenticación a la que llama.

Esta explicación no se extiende a la garantía de "registro cero" para toda la aplicación, el SDK externo y el sistema operativo. La transmisión de eventos de uso interno y AppsFlyer están habilitadas como mecanismos separados. El alcance de la adquisición se explicará en las preguntas frecuentes sobre el análisis de uso de este artículo y Política de privacidad.

5. Alcance de la protección de Outbox con cifrado AES-GCM

Las notas que esperan ser enviadas se gestionan en la cola llamada Outbox en la terminal. Al guardar, use CryptoKit de Apple para cifrar con AES-GCM. La nueva clave de cifrado se genera con 256 bits.

Mantén la llave en el llavero y usa kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly. Con esta configuración, puede acceder desde el primer desbloqueo después del reinicio hasta el siguiente reinicio, y la clave no se transferirá al restaurar la copia de seguridad a otro terminal. La aplicación lee la clave para el cifrado y el descifrado.

Esta es la protección de los datos almacenados, no para ocultar la pantalla que se muestra o garantizar la seguridad de todas las infracciones del terminal. Antes de cambiar el modelo, asegúrese de que las notas necesarias hayan llegado a la dirección de almacenamiento.

Cuando se utiliza el envío por correo, el contenido se procesa en nuestra Relay API y en la infraestructura de entrega, y permanece como correo en la bandeja de entrada. El cifrado dentro del dispositivo no implica cifrado de extremo a extremo (E2EE) durante la entrega del correo. Encontrarás los detalles en la política de privacidad y en el recorrido de los datos.

Para las colas de espera para la transmisión, consulte Explicación de la arquitectura de la Outbox.

6. Protección del cuerpo de la nota y el papel del SDK externo

En la aplicación iOS, use CryptoKit para cifrar el cuerpo de la nota, Keychain para almacenar la clave y URLSession para enviar el texto. Network.framework monitorea el estado de la conexión, y BackgroundTasks es responsable de programar la transmisión en segundo plano.

Por otro lado, la aplicación también utiliza un SDK externo. GoogleSignIn y Firebase Authentication se utilizan para introducir automáticamente correos electrónicos arbitrarios con la cuenta Google, y la comprobación de la aplicación de Firebase se inicializa al inicio para proteger el backend API. AppsFlyer se utiliza para el análisis de adquisición y uso, y establece un identificador de instalación que es común a su propio análisis.

Incluso si el diseño no incluye el cuerpo de la nota en el elemento del evento, la asociación de identificadores y registros de transmisión permanece. El alcance del análisis de uso, incluido el SDK, debe confirmarse por separado del cifrado del texto. Los artículos y usos se describen en Política de privacidad.

7 Especifique el alcance de la protección

El cifrado, el manejo de caché de comunicación y el análisis de utilización en el terminal tienen diferentes funciones. Incluso con el cifrado de Outbox y la URLSession efímera, no significa que se elimine la recopilación de eventos de uso.

Valora tanto poder dejar notas rápidamente como poder entender la información que se va a adquirir. Explica el destino, el identificador y el alcance de la asociación del análisis de uso, y revísalo de acuerdo con los cambios en la aplicación.

Preguntas frecuentes

P. ¿El contenido de la nota se guardará en el servidor?
Al enviar un correo, su contenido pasa por nuestra Relay API y la infraestructura de entrega. Nuestra Relay API no conserva el contenido de forma permanente, salvo cuando exista una necesidad legítima, como cumplir obligaciones legales o responder a incidencias. Esto es distinto del almacenamiento en el buzón del destinatario. La explicación para cada destino está enDiseño de privacidad.
Q. ¿La aplicación cifra la comunicación?
Sí. HTTPS se utiliza para la comunicación API. La sesión de URL efímera es una configuración que no almacena permanentemente la caché, la cookie y la información de autenticación de la sesión en el disco. No elimina el análisis de uso y los registros del lado del servidor que se llevan a cabo por separado.
P. Si pierdo mi terminal, ¿la nota es segura?
Outbox está encriptado y guardado con AES-GCM, y la nueva clave se genera con el bit 256. La clave utiliza la clase de protección de Keychain que no migra a otro terminal. Sin embargo, no es un mecanismo que protege la pantalla y el correo electrónico a la dirección de entrega. El cifrado en el terminal por sí solo no garantiza la seguridad de toda la información en caso de pérdida.
Q. ¿Hay algún análisis o seguimiento?
Sí. Utilizamos nuestro propio análisis de uso y AppsFlyer SDK. Los identificadores de instalación aleatorios, los identificadores de sesión, el tipo y la hora del evento, la versión de la aplicación, los resultados de la transmisión, etc. se enviarán a nuestro propio análisis. AppsFlyer envía eventos como la transmisión de notas iniciales exitosa, la autenticación exitosa, la visualización de la pantalla de facturación, la selección del plan y el éxito de la compra, y la cantidad, la moneda, el período, etc. pueden agregarse en el momento de la compra. El mismo identificador de instalación también se establece para el ID de usuario de cliente de AppsFlyer, de modo que se puedan asociar la información de adquisición y los eventos de uso. Los elementos del evento establecidos desde la aplicación no incluyen directamente una dirección de correo electrónico, el cuerpo de la nota o el código de autenticación, pero el ID de envío del análisis interno está vinculado al hash de la dirección de correo electrónico de destino, por lo que no es información completamente anónima. Para más detallesMedidas técnicas para la política de privacidad.
Q. ¿Cómo se utiliza el marco genuino Apple y el SDK externo por separado?
Utilice CryptoKit y Keychain para cifrar y almacenar el cuerpo de la nota dentro de la aplicación iOS, y envíe el texto a través de URLSession. Por otro lado, el SDK externo se utiliza para el inicio de sesión de Google, la protección del back-end por parte de Firebase y el análisis de adquisición y uso por parte de AppsFlyer. La protección del texto y el análisis de uso con identificadores se explican por separado.