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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

مصادر إضافية