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

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

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

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

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

زيادة السياق السياقي

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

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

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

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

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

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

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

تعتمد بعض التطبيقات على الوصول إلى معلومات المستخدمين الحسّاسة المرتبطة بسجلّات المكالمات والرسائل القصيرة. إذا كنت تريد طلب الأذونات الخاصة بسجلّات المكالمات والرسائل القصيرة 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> ...
  • حلِّل تطبيقك بحثًا عن الخدمات التي تستخدم الأذونات.

مصادر إضافية