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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

مصادر إضافية