تحمي طلبات الأذونات المعلومات الحساسة المتاحة من الجهاز، ولا ينبغي استخدامها إلا عند الحاجة إلى الوصول إلى المعلومات لتشغيل تطبيقك. يقدّم هذا المستند نصائح حول الطرق التي قد تتمكّن من خلالها من تحقيق الوظيفة نفسها (أو أفضل) بدون الحاجة إلى الوصول إلى هذه المعلومات، وهو ليس مناقشة شاملة حول كيفية عمل الأذونات في نظام التشغيل 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> ...
- إدراج الأذونات والحالة حسب المجموعة:
- حلِّل تطبيقك بحثًا عن الخدمات التي تستخدم الأذونات.
مصادر إضافية
- إرشادات التصميم المتوافق مع لغة Material Design لأذونات Android
- Android Marshmallow 6.0: طلب الإذن: يوضّح هذا الفيديو النموذج المُستخدَم في نظام التشغيل Android للحصول على أذونات التشغيل والطريقة الصحيحة لطلب أذونات من المستخدمين.
- توضيح سبب احتياج التطبيق إلى الأذونات
- أفضل الممارسات المتعلّقة بالمعرّفات الفريدة