شرح إمكانية الوصول إلى معلومات حساسة

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

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

على وجه الخصوص، تأكَّد من تنفيذ ما يلي في تطبيقك:

  • عليك الانتظار للوصول إلى كاميرا الجهاز إلى أن يمنح المستخدم إذن CAMERA لتطبيقك.
  • عليك الانتظار للوصول إلى ميكروفون الجهاز إلى أن يمنح المستخدم إذن RECORD_AUDIO لتطبيقك.
  • انتظِر إلى أن يتفاعل المستخدم مع إحدى الميزات في تطبيقك التي تتطلب تحديد الموقع الجغرافي، وذلك قبل طلب إذن ACCESS_COARSE_LOCATION أو إذن ACCESS_FINE_LOCATION، على النحو الموضّح في الدليل حول كيفية طلب أذونات الموقع الجغرافي.
  • انتظِر إلى أن يمنح المستخدِم إذن ACCESS_COARSE_LOCATION أو ACCESS_FINE_LOCATION قبل طلب إذن ACCESS_BACKGROUND_LOCATION.

لوحة بيانات الخصوصية

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

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

توضيح أسباب الوصول إلى البيانات

يمكن أن يقدِّم تطبيقك مبررًا منطقيًا للمستخدمين لمساعدتهم في فهم سبب وصول تطبيقك إلى معلومات الموقع الجغرافي أو الكاميرا أو الميكروفون. ويمكن أن تظهر هذه الأسباب في شاشة "لوحة بيانات الخصوصية" الجديدة أو شاشة أذونات التطبيق أو كليهما.

لتوضيح سبب وصول تطبيقك إلى معلومات الموقع الجغرافي والكاميرا والميكروفون، أكمِل الخطوات التالية:

  1. أضِف نشاطًا يوفّر عند بدئه بعض الأسباب المنطقية لأداء تطبيقك لنوع معيّن من إجراءات الوصول إلى البيانات. ضمن هذا النشاط، اضبط السمة android:permission على START_VIEW_PERMISSION_USAGE.

    إذا كان تطبيقك يستهدف الإصدار 12 من نظام التشغيل Android أو إصدارًا أحدث، عليك تحديد قيمة للسمة android:exported بشكل صريح.

  2. أضِف فلتر الأهداف التالي إلى النشاط الذي تمت إضافته حديثًا:

    <!-- android:exported required if you target Android 12. -->
    <activity android:name=".DataAccessRationaleActivity"
              android:permission="android.permission.START_VIEW_PERMISSION_USAGE"
              android:exported="true">
           <!-- VIEW_PERMISSION_USAGE shows a selectable information icon on
                your app permission's page in system settings.
                VIEW_PERMISSION_USAGE_FOR_PERIOD shows a selectable information
                icon on the Privacy Dashboard screen. -->
        <intent-filter>
           <action android:name="android.intent.action.VIEW_PERMISSION_USAGE" />
           <action android:name="android.intent.action.VIEW_PERMISSION_USAGE_FOR_PERIOD" />
           <category android:name="android.intent.category.DEFAULT" />
           ...
        </intent-filter>
    </activity>
    
  3. حدِّد ما يجب أن يعرضه نشاط الوصول إلى البيانات. على سبيل المثال، قد تعرض الموقع الإلكتروني لتطبيقك أو مقالة في مركز المساعدة. لتقديم شرح أكثر تفصيلاً حول أنواع البيانات التي يصل تطبيقك إليها، بالإضافة إلى وقت حدوث ذلك، عليك التعامل مع الميزات الإضافية التي يشملها النظام عند استدعاء الإذن باستخدام الإذن:

بناءً على فلاتر الأهداف التي تضيفها، يظهر للمستخدمين رمز معلومات بجانب اسم التطبيق على شاشات معيّنة:

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

وعندما ينقر المستخدمون على ذلك الرمز، يبدأ النشاط المنطقي لتطبيقك.

مستطيل مستدير في أعلى يسار الشاشة يتضمّن رمز الكاميرا ورمز الميكروفون
الشكل 2. مؤشرات الميكروفون والكاميرا التي تعرض عمليات الوصول الحديثة إلى البيانات

المؤشرات

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

تحديد موقع شاشة المؤشرات

فإذا كان تطبيقك متوافقًا مع الوضع المجسم أو واجهة المستخدم بملء الشاشة، قد تتداخل المؤشرات مؤقتًا مع واجهة مستخدم تطبيقك. للمساعدة في تكييف واجهة المستخدم مع هذه المؤشرات، يقدّم النظام طريقة getPrivacyIndicatorBounds() التي يوضحها مقتطف الرمز التالي. باستخدام واجهة برمجة التطبيقات هذه، يمكنك تحديد الحدود التي قد تظهر فيها المؤشرات. قد تقرر بعد ذلك تنظيم واجهة المستخدم للشاشة بشكل مختلف.

Kotlin

view.setOnApplyWindowInsetsListener { view, windowInsets ->
    val indicatorBounds = windowInsets.getPrivacyIndicatorBounds()
    // change your UI to avoid overlapping
    windowInsets
}

التبديلات

يظهر قسم &quot;الإعدادات السريعة&quot; ضمن &quot;الوصول إلى الكاميرا&quot;
         و&quot;الوصول إلى الميكروفون&quot;.
الشكل 3. إيقاف/تفعيل الميكروفون والكاميرا في "الإعدادات السريعة"

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

عند تفعيل زرَي إيقاف/تفعيل الكاميرا والميكروفون، يتم تطبيقهما على جميع التطبيقات على الجهاز:

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

عندما يوقِف المستخدم الوصول إلى الكاميرا أو الميكروفون، ثم يشغِّل تطبيقًا يتطلّب الوصول إلى معلومات الكاميرا أو الميكروفون، يذكّر النظام المستخدم بأنّ مفتاح التبديل على مستوى الجهاز غير مفعَّل.

التحقّق من توافق الجهاز

للتحقق مما إذا كان الجهاز متوافقًا مع أزرار إيقاف الميكروفون والكاميرا، أضِف المنطق الذي يظهر في مقتطف الرمز التالي:

Kotlin

val sensorPrivacyManager = applicationContext
        .getSystemService(SensorPrivacyManager::class.java)
        as SensorPrivacyManager
val supportsMicrophoneToggle = sensorPrivacyManager
        .supportsSensorToggle(Sensors.MICROPHONE)
val supportsCameraToggle = sensorPrivacyManager
        .supportsSensorToggle(Sensors.CAMERA)

Java

SensorPrivacyManager sensorPrivacyManager = getApplicationContext()
        .getSystemService(SensorPrivacyManager.class);
boolean supportsMicrophoneToggle = sensorPrivacyManager
        .supportsSensorToggle(Sensors.MICROPHONE);
boolean supportsCameraToggle = sensorPrivacyManager
        .supportsSensorToggle(Sensors.CAMERA);