0Pricing
Android Academy · درس

معالجة الرفض وشرح السبب

اشرح سبب حاجتك إلى الإذن

معالجة الرفض وشرح السبب درس مجاني في Android Academy على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Android Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Android Academy 4 دروس في المجموع.

التعامل مع حالات الرفض

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

ثلاث حالات محتملة

بعد تقديم الطلب، قد تكون في إحدى الحالات الثلاث التالية:

  • ممنوحة: تابع تنفيذ الميزة
  • مرفوضة (يمكن السؤال مرة أخرى): اشرح السبب ثم أعد الطلب
  • مرفوضة نهائيًا: لن يظهر مربع الحوار مجددًا؛ وجّه المستخدم إلى الإعدادات

ما المقصود بالتبرير

التبرير هو شرح موجز لسبب حاجة تطبيقك إلى صلاحية. ويخبرك Android بموعد عرض التبرير عبر shouldShowRequestPermissionRationale.

shouldShowRequestPermissionRationale

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

val activity = LocalContext.current as Activity
val showRationale = ActivityCompat
    .shouldShowRequestPermissionRationale(
        activity,
        Manifest.permission.CAMERA
    )

قراءة الإشارة

فسّر القيمة بالاقتران مع التحقق من المنح:

  • ممنوحة: لا يلزم اتخاذ أي إجراء
  • غير ممنوحة وshouldShowRationale == true: اعرض شرحًا ثم أعد الطلب
  • غير ممنوحة وshouldShowRationale == false: إما أن يكون هذا أول طلب، أو أن الصلاحية مرفوضة نهائيًا

عرض مربع حوار للتبرير

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

if (showRationale) {
    AlertDialog(
        onDismissRequest = { },
        title = { Text("Camera needed") },
        text = { Text("We use the camera to scan codes.") },
        confirmButton = {
            TextButton(onClick = {
                launcher.launch(Manifest.permission.CAMERA)
            }) { Text("Continue") }
        }
    )
}

اكتشاف الرفض النهائي

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

تتبع ما إذا كنت قد سألت

بما أن shouldShowRationale تكون أيضًا false عند أول طلب، فتتبع علامة (مثلًا في DataStore) تسجل أنك سألت مرة واحدة على الأقل، حتى تميز بين الطلب الأول والرفض النهائي.

إرسال المستخدمين إلى الإعدادات

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

fun openAppSettings(context: Context) {
    val intent = Intent(
        Settings.ACTION_APPLICATION_DETAILS_SETTINGS,
        Uri.fromParts("package", context.packageName, null)
    )
    context.startActivity(intent)
}

تصميم واجهة حالة الرفض

لا تترك شاشة فارغة أو معطلة عند الرفض. اعرض رسالة واضحة، واشرح الأثر، ووفّر الإجراء المناسب: إعادة الطلب، أو فتح الإعدادات، أو المتابعة بوظائف محدودة.

احترم اختيار المستخدم

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

اختبار سريع

اختبر مدى فهمك لحالات الرفض والتبرير.

مراجعة

لقد تعلمت التعامل مع حالات الرفض:

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

التالي: أفضل ممارسات الخصوصية.

الأسئلة الشائعة

هل درس «معالجة الرفض وشرح السبب» مجاني؟

نعم — نص درس «معالجة الرفض وشرح السبب» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Android Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Android Academy 4 دروس في المجموع.

ماذا ستتعلم في «معالجة الرفض وشرح السبب»؟

اشرح سبب حاجتك إلى الإذن تتمرن على Android Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Android Academy؟

لا تُشترط خبرة سابقة. Android Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.

كم من الوقت يستغرق درس «معالجة الرفض وشرح السبب»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Android Academy هذا؟

نعم. كل درس في Android Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. نموذج الأذونات في Android
  2. طلب الأذونات في Compose
  3. معالجة الرفض وشرح السبب
  4. أفضل ممارسات الخصوصية
← العودة إلى Android Academy