تكرار السؤال: …
الإجابة المختصرة
بطلب الإذن في سياق الاستخدام الفعلي (In-context) وشرح السبب للمستخدم مسبقاً، وإضافة التوصيفات الإلزامية في Info.plist و AndroidManifest.xml، والتعامل مع حالات الرفض الدائم.
الشرح
ترفض شركتا Apple و Google التطبيقات التي تطلب أذونات (كالكاميرا أو الموقع) فور تشغيل التطبيق دون مبرر واضح. يجب تقديم شاشة تمهيدية تشرح فائدة الميزة للمستخدم أولاً، وعند الرفض المتكرر يجب توجيه المستخدم برمجياً إلى إعدادات النظام عبر Linking.openSettings().
مثال بالكود
import { Camera } from 'expo-camera';
import { Linking, Alert } from 'react-native';
async function requestCameraPermission() {
const { status, canAskAgain } = await Camera.requestCameraPermissionsAsync();
if (status !== 'granted') {
if (!canAskAgain) {
Alert.alert('الإذن مطلوب', 'يرجى تفعيل إذن الكاميرا من إعدادات الهاتف للمتابعة', [
{ text: 'فتح الإعدادات', onPress: () => Linking.openSettings() }
]);
}
}
}أخطاء شائعة
- نسيان إضافة نصوص التبرير الإلزامية (مثل NSCameraUsageDescription في Info.plist) مما يتسبب في انهيار فوري للتطبيق على أجهزة iOS عند استدعاء الإذن.