أفضل ممارسات أذونات التطبيقات

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

للحصول على نظرة عامة على أذونات Android، يُرجى الاطلاع على نظرة عامة على الأذونات. للحصول على تفاصيل حول طريقة التعامل مع الأذونات في الرمز، راجِع طلب أذونات التطبيق.

الأذونات في Android 6.0 أو الإصدارات الأحدث

في نظام التشغيل Android 6.0 (المستوى 23 من واجهة برمجة التطبيقات) والإصدارات الأحدث، يمكن للتطبيقات طلب أذونات من المستخدم في وقت التشغيل، بدلاً من طلبها قبل التثبيت. ويتيح هذا الإجراء للتطبيقات طلب الأذونات عندما يطلب التطبيق الحصول على الخدمات أو البيانات المحمية بموجب الخدمات. ومع أنّ هذا الإجراء لا يؤدي إلى تغيير السلوك العام للتطبيق (بالضرورة)، إلا أنّه يؤدي إلى بعض التغييرات المرتبطة بطريقة التعامل مع بيانات المستخدمين الحساسة:

سياق ظرفي متزايد

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

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

مرونة أكبر في منح الأذونات

ويمكن للمستخدمين رفض الوصول إلى الأذونات الفردية في وقت طلبها وفي الإعدادات، إلا أنّهم قد يتفاجأون إذا كانت الوظائف معطّلة نتيجة لذلك. ننصحك بمراقبة عدد المستخدمين الذين يرفضون الأذونات (مثل استخدام "إحصاءات Google") حتى تتمكّن من إعادة ضبط تطبيقك لتجنُّب الاعتماد على هذا الإذن أو تقديم شرح أفضل لسبب الحاجة إلى الحصول على إذن لكي يعمل تطبيقك بشكل سليم. يجب أيضًا التأكّد من أنّ تطبيقك يتعامل مع الاستثناءات عندما يرفض المستخدمون طلبات الأذونات أو يوقفون إيقاف الأذونات في الإعدادات.

تزايد أعباء المعاملات

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

الأذونات التي تتطلب أن تصبح معالِجًا تلقائيًا

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

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

التعرف على المكتبات التي تتعامل معها

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

ومثلما يختار المستخدمون التطبيقات التي تستخدم أذونات أقل للوظيفة نفسها، على المطوّرين مراجعة مكتباتهم واختيار حِزم تطوير برامج (SDK) تابعة لجهات خارجية لا تستخدم أذونات غير ضرورية. على سبيل المثال، إذا كنت تستخدم مكتبة توفّر وظيفة الموقع الجغرافي، تأكّد من عدم طلب إذن FINE_LOCATION إلا إذا كنت تستخدم وظيفة الاستهداف المستند إلى الموقع الجغرافي.

تقييد الوصول إلى الموقع الجغرافي في الخلفية

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

اختبار نموذجَي الأذونات

في نظام التشغيل Android 6.0 (المستوى 23 من واجهة برمجة التطبيقات) والإصدارات الأحدث، يمنح المستخدمون أذونات التطبيق ويبطلونها في وقت التشغيل، بدلاً من إجراء ذلك عند تثبيت التطبيق. ونتيجةً لذلك، سيكون عليك اختبار تطبيقك وفقًا لمجموعة أكبر من الشروط. قبل الإصدار 6.0 من نظام التشغيل Android، كان من المعقول أن يُفترض أنّ تطبيقك يتضمّن جميع الأذونات التي يتضمّنها في بيان التطبيق إذا كان يعمل في الأساس. أما الآن، فيمكن للمستخدم تفعيل الأذونات أو إيقافها لأي تطبيق، بغض النظر عن مستوى واجهة برمجة التطبيقات. يجب إجراء اختبار للتأكّد من أنّ تطبيقك يعمل بشكل صحيح على مستوى مختلف سيناريوهات الأذونات.

ستساعدك النصائح التالية في العثور على مشاكل الرموز المرتبطة بالأذونات على الأجهزة التي تستخدم المستوى 23 من واجهة برمجة التطبيقات أو مستوى أعلى:

  • حدِّد الأذونات الحالية لتطبيقك ومسارات الرموز ذات الصلة.
  • يمكنك اختبار مسارات المستخدم على مستوى الخدمات والبيانات المحمية بأذونات.
  • اختبِر مجموعات مختلفة من الأذونات التي تم منحها أو إبطالها. على سبيل المثال، قد يدرج تطبيق الكاميرا CAMERA وREAD_CONTACTS وACCESS_FINE_LOCATION في ملف البيان. يجب اختبار التطبيق مع تفعيل كل إذن من هذه الأذونات وإيقافه للتأكُّد من أنّه يمكن للتطبيق التعامل مع جميع إعدادات الأذونات بشكل آمن.
  • استخدِم أداة adb لإدارة الأذونات من سطر الأوامر:
    • إدراج الأذونات والحالة حسب المجموعة:
      $ adb shell pm list permissions -d -g
    • منح إذن واحد أو أكثر أو إبطاله:
      $ adb shell pm [grant|revoke] <permission-name> ...
  • تحليل تطبيقك للخدمات التي تستخدم الأذونات

مراجع إضافية