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

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

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

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

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

زيادة السياق الظرفي

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

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

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

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

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

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

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

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

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

معرفة المكتبات التي تستخدمها

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

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

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

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

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

في الإصدار 6.0 من نظام التشغيل Android (المستوى 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> ...
  • تحليل تطبيقك بحثًا عن الخدمات التي تستخدم الأذونات

مراجع إضافية