كيف تعرف ما الذي تجمعه حزم SDK لديك
طريقة قابلة للتكرار، ومثال عملي بالجداول التي تنشرها Firebase نفسها، وأين تبحث حين لا ينشر المورّد شيئًا من ذلك.
افتح ملف التبعيات، وأدرج كل حزمة SDK تابعة لجهة خارجية، ثم اقرأ صفحة الإفصاح عن البيانات التي ينشرها كل مورّد بنفسه؛ فـFirebase مثلًا تنشر بالضبط البيانات التي يجمعها كل منتج من منتجاتها. هذه القائمة هي جوهر سياسة الخصوصية لديك، والمصدر الذي يجب أن تأتي منه إجاباتك في Data safety وApp Privacy.
أنجز هذا في دقائق بدلًا من ذلك
تستضيف AppFoyer الصفحات التي يتناولها هذا الدليل — سياسة الخصوصية والشروط والدعم وحذف الحساب وapp-ads.txt — على نطاق فرعي خاص بها، دون نطاق أو خادم خاص بك. تطبيق واحد مجاني، ولا شيء يشترطه المتجر يكون خلف جدار دفع أبدًا.
تمت المراجعة في 19 سبتمبر 2026. تتغير سياسات المتاجر، أحيانًا دون إشعار. كل ما يلي يربط بالتوثيق الرسمي، وتلك الصفحة — لا هذه — هي المرجع. إذا تعارضتا، فالمتجر هو المحق. هذا الدليل مترجم من الإنجليزية؛ والاقتباسات من توثيق المتاجر محفوظة بالإنجليزية الأصلية.
كل متطلب من متطلبات المتجر يخص البيانات يرجع إلى قائمة واحدة، ولا يكاد أحد يدوّنها. سياسة الخصوصية لديك، ونموذج Data safety، وإجاباتك في App Privacy، ثلاث صيغ للقائمة نفسها، لذا فإعدادها مرة واحدة كما ينبغي هو العمل كله.
كلا المتجرين صريح في أن سلوك حزم SDK يُحسب عليك. يقول Google Play إن جمع البيانات “includes data collected and handled through any third-party libraries or SDKs used in their apps” (وترجمته: «يشمل البيانات التي تُجمع وتُعالج عبر أي مكتبات أو حزم SDK تابعة لجهات خارجية مستخدمة في تطبيقاتهم»). وتطلب منك Apple تحديد البيانات التي “you or your third-party partners collect” (وترجمته: «تجمعها أنت أو شركاؤك من الجهات الخارجية»).
الخطوة 1: اعثر على كل حزمة SDK
اقرأ الملفات، ولا تعتمد على الذاكرة:
| المنصة | الملفات |
|---|---|
| Android | build.gradle / build.gradle.kts، وlibs.versions.toml، وAndroidManifest.xml (الأذونات، meta-data) |
| iOS | Podfile، وPackage.swift، و*.pbxproj، وInfo.plist (نصوص الاستخدام)، و*.entitlements |
| Flutter | pubspec.yaml |
| React Native / Expo | package.json، وapp.json |
ضمِّن التبعيات غير المباشرة التي لم تخترها: حزمة SDK تجلب معها مكتبة إعلانات تجمع ما تجمعه تلك المكتبة.
الخطوة 2: اقرأ إفصاح كل مورّد بنفسه
معظم المورّدين الجادين ينشرون صفحة تقول بالضبط ما ترسله حزمة SDK الخاصة بهم، لأن عملاءهم يحتاجون إليها لهذه النماذج نفسها. تلك الصفحة، لا تدوينة ولا إجابة في منتدى، هي مصدرك.
Firebase هي المثال العملي، لأن Google تنشر تفصيلًا لكل منتج مربوطًا بفئات App Privacy لدى Apple:
| منتج Firebase | ما يجمعه، وفقًا لوثائق Google |
|---|---|
| Analytics | App instance ID، وخصائص المستخدم، والأحداث، وعنوان IP |
| Crashlytics | تتبعات المكدس (stack traces) وحالة التطبيق لحظة العطل، ومعلومات الجهاز ونظام التشغيل، إضافة إلى أي مفاتيح مخصصة وسجلات ومعرّفات مستخدمين ترفقها أنت |
| Cloud Messaging | رمز الإشعارات (push token) المرتبط بمعرّف تثبيت التطبيق؛ وطراز الجهاز، واللغة، والمنطقة الزمنية، وإصدار نظام التشغيل، ومعرّف التطبيق وإصداره |
| Authentication | المعرّفات التي يولّدها، إضافة إلى عناوين البريد الإلكتروني وأرقام الهواتف وأسماء العرض القادمة من مزوّدي تسجيل الدخول الذين تفعّلهم |
| Performance Monitoring | مقاييس الأداء مثل زمن التشغيل وزمن استجابة الشبكة، ومعلومات الجهاز ونظام التشغيل، وعنوان IP للتقسيم الجغرافي |
| Remote Config | رمز البلد واللغة، والمنطقة الزمنية، وإصدار نظام التشغيل، ومعرّفات التطبيق والحزمة |
اقرأ هذا الجدول مرتين إن كنت تستخدم Crashlytics: العمود الأخير من صنعك جزئيًا. المفاتيح المخصصة ومعرّفات المستخدمين التي ترفقها بتقارير الأعطال بيانات اخترت أنت إرسالها، ومكانها في سياستك بكلماتك أنت.
مورّدون آخرون لديهم إفصاحات منشورة يستحق الرجوع إليها مباشرة: شبكات الإعلانات (AdMob وAppLovin وUnity وironSource)، وأدوات الإسناد (AppsFlyer وAdjust)، والإبلاغ عن الأخطاء (Sentry وBugsnag)، والمشتريات (RevenueCat وAdapty)، ومزوّدو المصادقة.
الخطوة 3: حين لا ينشر المورّد شيئًا
يحدث ذلك، وخاصة مع المكتبات الأصغر. عندها:
- اقرأ حركة الشبكة. شغّل التطبيق عبر خادم وكيل (proxy) وانظر إلى ما ترسله حزمة SDK. هذه هي الطريقة الوحيدة التي لا تقبل الجدال، وتحسم المسألة في فترة بعد ظهر.
- اقرأ الكود المصدري، إن كان مفتوحًا.
- اسأل المورّد كتابةً واحتفظ بالرد.
- فكّر في إزالتها. التبعية التي لا يصرّح أحد بسلوكها تجاه البيانات عبء تحمله من أجل راحة غيرك.
الخطوة 4: حوّل القائمة إلى الوثائق الثلاث
قائمة واحدة، وثلاث صيغ، بهذا الترتيب:
- سياسة الخصوصية: الفئات، والأغراض، والجهات الخارجية بأسمائها، ومدة الاحتفاظ، وطريقة التواصل.
- نموذج Data safety في Play Console: الحقائق نفسها في صورة مربعات اختيار.
- App Privacy في App Store Connect: الحقائق نفسها مرة أخرى، بفئات Apple.
املأها من القائمة، لا من بعضها البعض أبدًا. وحين يختلف اثنان منها، يصدّق المتجر الـSDK: يذكر Google Play أنه “when Google becomes aware of a discrepancy between your app behavior and your declaration, we may take appropriate action, including enforcement action” (وترجمته: «حين تعلم Google بوجود تعارض بين سلوك تطبيقك وإقرارك، قد نتخذ الإجراء المناسب، بما في ذلك إجراءات الإنفاذ»).
إبقاؤها صحيحة
الحدث الذي يُبطل الثلاث كلها هو نفسه دائمًا: تغيّرت إحدى التبعيات. أضف سطرًا واحدًا إلى قائمة التحقق الخاصة بالإصدار، هل تغيّرت أي تبعية في هذا الإصدار؟ إن كان الأمر كذلك، فأعد فحص السياسة والنموذجين، لأن كلا المتجرين يشترط أن تظل هذه الوثائق دقيقة، لا أن تكون قد كانت دقيقة عند الإطلاق فحسب.
ما الذي تفعله AppFoyer هنا
هذه الطريقة هي ما يؤتمته وكيلنا. وجّه وكيلًا برمجيًا إلى المستودع فيقرأ ملفات التبعيات تلك، ويطابق ما يجده مع خريطة لحزم SDK المعروفة، ويصوغ سياسة الخصوصية مسمّيًا الجهات الخارجية التي وجدها، مع ذكر الملف والسطر اللذين جاءت منهما كل حقيقة، كي تتحقق منها بدلًا من أن تثق بها. ومن دون وكيل، يطرح نموذج قصير الأسئلة نفسها.
ما ينتجه مسودة تراجعها أنت. لا يستطيع رؤية مكتبة لا يتعرف عليها، ولا ينشر أي شيء أبدًا دون نقرتك.
المصادر الرسمية
- Privacy and security in Firebase و App Store data collection — Google. الجدول أعلاه مأخوذ من هاتين الصفحتين؛ وهما المرجع، لا هذه الصفحة.
- Provide information for Google Play’s Data safety section — مساعدة Google Play Console
- App privacy details on the App Store — Apple