1. لماذا تعتبر الخصوصية مهمة لتطبيقات المذكرات

أفكار العمل والمسودات الشخصية والسجلات اليومية. يجمع تطبيق المذكرة المعلومات قبل عرضها على الأشخاص. بنفس أهمية القدرة على الكتابة بسرعة، من المهم فهم مكان تخزينها وأين يتم إرسالها.

في هذه المقالة، سنشرح التشفير وذاكرة التخزين المؤقت للاتصال وعرض الشاشة وسجل التشخيص وتحليل الاستخدام في المحطة الطرفية بشكل منفصل. لا تضمن الحماية الواحدة حماية الطرق الأخرى.

6 سبتمبر 2026 تم تحديثه:تم تجميع مصدر نفس الإصدار (5.8.17) مثل الإصدار العام، وتم تصحيح شرح حماية الشاشة والسجل وتحليل الاستخدام. اكتب كل من ما يمكنك القيام به وما تحده.

2 لم يتم تمكين وظيفة إخفاء الملاحظات تلقائيا في مبدل التطبيق

iOS يستخدم الشاشة كلقطة بعد انتقال التطبيق إلى الخلفية. يرشدك Apple إلى إزالة المعلومات السرية على الشاشة عند الانتقال إلى الخلفية.

في مصدر 5.8.17 المؤكد، يقوم sceneWillResignActive وsceneDidEnterBackground بحفظ المسودة ولا تتصل بعملية عرض تراكب الخصوصية. تبقى وظيفة العرض السابقة، ولكنها ليست مسارا يعمل كحماية صالحة.

قد تبقى الملاحظة المعروضة ظاهرة في صورة مبدّل التطبيقات. تشفير Outbox لا يخفي صورة الشاشة. نصحح هنا وصف النسخة السابقة من المقالة الذي ادّعى إخفاء محتوى الملاحظات دائماً.

3. جلسة URL سريعة الزوال: تقليل تخزين القرص في ذاكرة التخزين المؤقت للاتصال

يخزن URLSession القياسي ذاكرة التخزين المخابئ وملفات تعريف الارتباط ومعلومات المصادقة على القرص. هذه ميزة مفيدة للتطبيقات العامة، ولكنها غير ضرورية لتطبيقات المذكرات ويمكن أن تشكل خطرا.

إذا بقيت ذاكرة التخزين المؤقت للاتصال على المحطة الطرفية، فهذا يعني أن هناك آثارا ل URL ومتى قمت بالوصول إليها على القرص. إذا تم حفظ ملف تعريف الارتباط، فهذا يعني أن معلومات الجلسة ستبقى على المحطة الطرفية.

يستخدم هذا التطبيق URLSessionConfiguration.ephemeral.

private let session: URLSession = {
    let config = URLSessionConfiguration.ephemeral
    config.httpCookieAcceptPolicy = .never
    config.httpShouldSetCookies = false
    config.urlCache = nil
    return URLSession(configuration: config)
}()
  • لا يوجد ذاكرة التخزين المؤقت للقرص:لا تحفظ ذاكرة التخزين المؤقت لجلسة عنوان URL هذه على القرص
  • تعطيل استخدام ملفات تعريف الارتباط:لا تقبل جلسة URL هذه ملفات تعريف الارتباط ولا تحدد الطلب
  • تم تعطيل ذاكرة التخزين المؤقت URL:تعيين تخزين ذاكرة التخزين المؤقت نفسه على nil
  • التكوين الذي لا يستخدم التخزين المستمر:لا يخزن معلومات جلسة URLSession إلى قرص

هذه حماية تتعلق بذاكرة التخزين المؤقت ل URLSession، وما إلى ذلك، وليست وظيفة تقضي على أحداث الاستخدام التي يخزنها التطبيق وينقلها بشكل منفصل أو سجلات الإرسال على جانب الخادم. يتم أيضا إجراء الارتباط بواسطة معرف تحليل الاستخدام بشكل منفصل عن هذا الإعداد.

4. نطاق الإخراج لسجل قياس الأداء

PerformanceLogger محاط ب #if DEBUG. في الإنشاءات التي لا يتم فيها تعريف DEBUG، لا يتم تضمين معالجة إخراج السجل لهذا المسجل.

يسجل logError الخاص بالمسجل هذا النوع، وليس البيان التفصيلي للخطأ. على سبيل المثال، استخدم نوع URLError ولا تقم بتحرير localizedDescription كما هو، والذي قد يحتوي على مسارات ملفات ومدخلات المستخدم.

من ناحية أخرى، فهي ليست آلية تجعل تلقائيا جميع أسماء الأحداث والسلاسل الإضافية التي يتم تمريرها إلى logEvent غير ضارة. من الضروري عدم تمرير عنوان البريد الإلكتروني أو نص المذكرة أو معلومات المصادقة لدى المتصل.

لا ينبغي تعميم هذا الشرح بوصفه ضماناً لعدم وجود أي سجلات في التطبيق أو حزم SDK الخارجية أو نظام التشغيل بأكمله. يظل إرسال أحداث الاستخدام الخاصة بنا وAppsFlyer مفعّلين كآليتين منفصلتين. نشرح نطاق البيانات المجموعة في الأسئلة الشائعة عن تحليل الاستخدام في هذه المقالة وفي سياسة الخصوصية.

5. نطاق حماية Outbox بتشفير AES-GCM

تتم إدارة المذكرات التي تنتظر الإرسال في قائمة انتظار تسمى Outbox في المحطة الطرفية. عند الحفظ، استخدم CryptoKit من Apple للتشفير باستخدام AES-GCM. يتم إنشاء مفتاح التشفير الجديد باستخدام بتات 256.

احتفظ بالمفتاح في سلسلة المفاتيح واستخدم kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly. باستخدام هذا الإعداد، يمكنك الوصول من إلغاء القفل الأول بعد إعادة التشغيل إلى إعادة التشغيل التالية، ولن يتم نقل المفتاح عند استعادة النسخة الاحتياطية إلى محطة طرفية أخرى. يقرأ التطبيق مفتاح التشفير وفك التشفير.

هذه هي حماية البيانات المخزنة، وليس لإخفاء الشاشة المعروضة أو ضمان الأمان من أي انتهاك طرفي. قبل تغيير النموذج، يرجى التأكد من أن الملاحظات الضرورية قد وصلت إلى عنوان التخزين.

عند استخدام إرسال البريد الإلكتروني، تتم معالجة النص بواسطة Relay API ومنصة التسليم، ويظل كبريد إلكتروني في صندوق الوارد. التشفير في المحطة الطرفية لا يعني التشفير من طرف إلى طرف (E2EE) لتسليم البريد. يتم شرح التفاصيل في سياسة الخصوصية و مسار البيانات.

للاطلاع على قوائم انتظار الإرسال، راجع شرح بنية Outbox.

6 حماية نص المذكرة ودور SDK الخارجي

iOS في التطبيق، استخدم CryptoKit لتشفير نص المذكرة، وسلسلة المفاتيح لتخزين المفاتيح، وURLSession لإرسال النص. Network.framework يراقب حالة الاتصال، و BackgroundTasks مسؤول عن جدولة نقل الخلفية.

من ناحية أخرى، يستخدم التطبيق أيضا SDK خارجي. يتم استخدام GoogleSignIn وFirebase Authentication لإدخال رسائل البريد الإلكتروني التعسفية تلقائيا باستخدام حساب Google، ويتم تهيئة فحص تطبيق Firebase عند بدء التشغيل لحماية الواجهة الخلفية API. يستخدم AppsFlyer لتحليل الاستحواذ والاستخدام، ويحدد معرف التثبيت الشائع في تحليلك الخاص.

حتى لو لم يتضمن التصميم نص المذكرة في عنصر الحدث، يظل ارتباط المعرفات وسجلات الإرسال قائما. يجب تأكيد نطاق تحليل الاستخدام، بما في ذلك SDK، بشكل منفصل عن تشفير النص. يتم وصف العناصر والاستخدامات في سياسة الخصوصية.

7. حدد نطاق الحماية

التشفير في المحطة الطرفية، والتعامل مع ذاكرة التخزين المؤقت للاتصالات، وتحليل الاستخدام لكل منها أدوار مختلفة. حتى مع تشفير Outbox وجلسة URL سريعة الزوال، فإن هذا لا يعني أنه سيتم التخلص من مجموعة أحداث الاستخدام.

نحن نقدر القدرة على ترك الملاحظات بسرعة وفهم المعلومات التي سيتم الحصول عليها. اشرح الوجهة والمعرف ونطاق الارتباط لتحليل الاستخدام، وراجعه وفقا للتغييرات في التطبيق.

الأسئلة الشائعة

س. هل سيتم حفظ محتويات المذكرة على الخادم؟
عند إرسال بريد إلكتروني، يمر النص عبر Relay API ومنصة التسليم. لا يحتفظ Relay API بالنص بشكل دائم ما لم تكن هناك حاجة مشروعة للامتثال القانوني أو استجابة الفشل. إنه يختلف عن الحفظ في صندوق البريد لوجهة التسليم. وصف كل وجهة تخزين هوتصميم الخصوصية.
س. هل يقوم التطبيق بتشفير الاتصال؟
نعم. يستخدم HTTPS للاتصال API. جلسة عنوان URL سريعة الزوال هي تكوين لا يخزن بشكل دائم ذاكرة التخزين المؤقت وملفات تعريف الارتباط ومعلومات المصادقة الخاصة بالجلسة على القرص. إنه لا يلغي تحليل الاستخدام وسجلات جانب الخادم التي يتم تنفيذها بشكل منفصل.
س. إذا فقدت محطتي، هل المذكرة آمنة؟
يتم تشفير Outbox وحفظه باستخدام AES-GCM، ويتم إنشاء المفتاح الجديد باستخدام بت 256. يستخدم المفتاح فئة حماية سلسلة المفاتيح التي لا تهاجر إلى محطة طرفية أخرى. ومع ذلك، فهي ليست آلية تحمي شاشة العرض والبريد الإلكتروني إلى عنوان التسليم. التشفير في المحطة وحدها لا يضمن أمان جميع المعلومات في حالة الفقدان.
س. هل هناك أي تحليلات أو تتبع؟
نعم. نحن نستخدم تحليل الاستخدام الخاص بنا وAppsFlyer SDK. سيتم إرسال معرفات التثبيت العشوائي ومعرفات الجلسة ونوع الحدث والوقت وإصدار التطبيق ونتائج الإرسال وما إلى ذلك إلى تحليلنا الخاص. يرسل AppsFlyer أحداثا مثل إرسال المذكرة الأولية الناجحة والمصادقة الناجحة وعرض شاشة الفوترة واختيار الخطة ونجاح الشراء، ويمكن إضافة المبلغ والعملة والفترة وما إلى ذلك في وقت الشراء. تم تعيين نفس معرف التثبيت أيضا لمعرف مستخدم عميل AppsFlyer، بحيث يمكن ربط معلومات الاستحواذ وأحداث الاستخدام. لا تتضمن عناصر الحدث المحددة من التطبيق مباشرة عنوان بريد إلكتروني أو نص مذكرة أو رمز مصادقة، ولكن معرف إرسال التحليل الداخلي مرتبط بتجزئة عنوان البريد الإلكتروني الوجهة، لذلك فهي ليست معلومات مجهولة المصدر تماما. لمزيد من التفاصيلالتدابير الفنية لسياسة الخصوصية.
س. كيف تستخدم إطار عمل Apple الأصلي وSDK الخارجي بشكل منفصل؟
iOS استخدم CryptoKit وسلسلة المفاتيح لتشفير وتخزين نص المذكرة في التطبيق، وإرسال النص باستخدام URLSession. من ناحية أخرى، يتم استخدام SDK الخارجي لتسجيل الدخول إلى Google، وحماية الواجهة الخلفية بواسطة Firebase، وتحليل الاستحواذ والاستخدام بواسطة AppsFlyer. يتم شرح حماية النص وتحليل الاستخدام بالمعرفات بشكل منفصل.