Microphone Permission: الجوهر، أنواع الوصول ومبدأ العمل

المؤلف: IT Sectr نُشر: 2026-05-21 وقت القراءة: 8 دق

Microphone Permission هو إذن نظام ضروري للتطبيق للوصول إلى ميكروفون الجهاز. وهو مطلوب لتسجيل الصوت والرسائل الصوتية ومكالمات الفيديو والتعرف على الكلام. وفقًا لـ Apple Developer Documentation, 2024، جميع التطبيقات التي تستخدم التقاط الصوت ملزمة بطلب موافقة صريحة من المستخدم من خلال حوار نظام.

الرئيسية

  • Microphone Permission هو إذن إلزامي لأي تطبيق يسجل الصوت على جهاز محمول.
  • Android يستخدم Manifest.permission.RECORD_AUDIO مع طلب في وقت التشغيل بدءًا من API 23.
  • iOS يتطلب مفتاح NSMicrophoneUsageDescription في Info.plist واستدعاء AVAudioSession.requestRecordPermission.
  • الطلب في لحظة تنشيط الميكروفون (زر «تسجيل رسالة صوتية») يزيد من فرص الموافقة.
  • العمل في الخلفية مع الميكروفون يتطلب أذونات إضافية وتبريرًا صارمًا.

جوهر Microphone Permission

Microphone Permission هو آلية حماية للخصوصية تمنع التسجيل غير المصرح به للصوت من ميكروفون الجهاز. تصنف المنصات المحمولة الميكروفون كأحد أكثر الموارد حساسية، لأن تسجيل الصوت يمكن أن يلتقط المحادثات الشخصية والبيئة المحيطة والمعلومات السرية.

يصَنف Android الإذن RECORD_AUDIO كإذن خطير، ويتطلب iOS الإضافة الإلزامية لمفتاح NSMicrophoneUsageDescription في Info.plist. على كلا المنصتين، يتم الطلب في وقت التشغيل، ويمكن للمستخدم إلغاء الإذن في أي وقت من خلال إعدادات النظام. مؤشر التسجيل في النظام (النقطة البرتقالية على iOS، المؤشر الأخضر على Android 12+) يشير للمستخدم أن التطبيق يستخدم الميكروفون في تلك اللحظة.

وفقًا لدراسة Pew Research Center (2024)، رفض 54% من مستخدمي الأجهزة المحمولة الوصول إلى الميكروفون لتطبيق ما مرة واحدة على الأقل. السبب الرئيسي هو عدم فهم لماذا يحتاج التطبيق إلى تسجيل الصوت. لذلك، يجب على المطور شرح هدف استخدام الميكروفون بأكبر شفافية ممكنة.

إذن الميكروفون على Android

إذن الميكروفون على Android يتم طلبه من خلال التصريح بـ RECORD_AUDIO في البيان (manifest) وطلب وقت التشغيل في كود التطبيق. بدءًا من Android 10، يتم تنظيم الوصول إلى الميكروفون بشكل إضافي بواسطة قيود للتطبيقات في الخلفية.

التصريح في AndroidManifest.xml

الخطوة الأولى هي التصريح بالإذن RECORD_AUDIO في ملف البيان. بدون هذا التصريح، لن يكون لطلب وقت التشغيل أي تأثير، ولن يتمكن التطبيق من الوصول إلى الميكروفون.

xml
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.CAPTURE_AUDIO_OUTPUT" />

CAPTURE_AUDIO_OUTPUT هو إذن نظام غير متاح للتطبيقات الخارجية. يُستخدم فقط من قبل تطبيقات النظام لالتقاط مخرجات الصوت. التطبيقات العادية تحتاج فقط RECORD_AUDIO للتسجيل من الميكروفون.

طلب وقت التشغيل في Kotlin

بعد التصريح في البيان، يجب تنفيذ طلب وقت التشغيل. لننظر في مثال باستخدام AudioRecord لتسجيل الصوت من الميكروفون.

kotlin
private val recordAudioPermission =
    registerForActivityResult(ActivityResultContracts.RequestPermission()) { granted ->
    if (granted) {
        startRecording()
    } else {
        showMicrophoneExplanation()
    }
}

fun startRecording() {
    val sampleRate = 44100
    val bufferSize = AudioRecord.getMinBufferSize(sampleRate,
        AudioFormat.CHANNEL_IN_MONO,
        AudioFormat.ENCODING_PCM_16BIT)
    val recorder = AudioRecord(MediaRecorder.AudioSource.MIC,
        sampleRate, AudioFormat.CHANNEL_IN_MONO,
        AudioFormat.ENCODING_PCM_16BIT, bufferSize)
    recorder.startRecording()
    // تسجيل بيانات الصوت في المخزن المؤقت
}

معالجة حالة التسجيل

من المهم معالجة دورة حياة تسجيل الصوت بشكل صحيح. عندما ينتقل التطبيق إلى الخلفية على Android 9 وما فوق، قد يتم إيقاف تسجيل الميكروفون مؤقتًا بواسطة النظام. بدءًا من Android 10، يتم تقييد الوصول إلى الميكروفون في الخلفية بشكل إضافي: التطبيق في الخلفية لا يمكنه بدء التسجيل، ويتم إيقاف التسجيل النشط مؤقتًا. التسجيل في الخلفية يتطلب MediaProjection أو Service مع إشعار.

إذن الميكروفون على iOS

إذن الميكروفون على iOS يتم تكوينه من خلال مفتاح NSMicrophoneUsageDescription في Info.plist واستدعاء طريقة AVAudioSession.requestRecordPermission. تطلب Apple شرحًا إلزاميًا لسبب استخدام الميكروفون في حوار الطلب.

تكوين Info.plist

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

xml
<key>NSMicrophoneUsageDescription</key>
<string>يحتاج التطبيق إلى الوصول إلى الميكروفون لتسجيل الملاحظات الصوتية وإرسال الرسائل الصوتية.</string>

الطلب في Swift

يتم طلب الوصول إلى الميكروفون على iOS من خلال AVAudioSession. بعد تلقي الرد، يقوم التطبيق بتكوين جلسة الصوت ويبدأ التسجيل.

swift
import AVFAudio

func requestMicrophoneAccess() {
    AVAudioSession.sharedInstance().requestRecordPermission { granted in
        DispatchQueue.main.async {
            if granted {
                self.configureAudioSession()
                self.startAudioRecording()
            } else {
                self.redirectToSettings()
            }
        }
    }
}

private func configureAudioSession() {
    let session = AVAudioSession.sharedInstance()
    do {
        try session.setCategory(.playAndRecord, mode: .default)
        try session.setActive(true)
    } catch {
        print("Audio session error: \(error)")
    }
}

مؤشر التسجيل

على iOS 14 وما فوق، يعرض التطبيق الذي يستخدم الميكروفون مؤشرًا برتقاليًا في شريط الحالة. يمكن للمستخدم رؤية أي تطبيق يسجل الصوت حاليًا. إذا كان التطبيق يستخدم الميكروفون في الخلفية بدون سبب وجيه، قد ترفض Apple التحديث. AVAudioSession يسمح بتكوين فئة ووضع جلسة الصوت، مما يحدد سلوك التطبيق عند الانتقال إلى الخلفية.

سيناريوهات التقاط الصوت

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

الرسائل الصوتية والملاحظات

تستخدم تطبيقات المراسلة وتدوين الملاحظات الميكروفون لتسجيل الرسائل الصوتية. في هذه الحالة، يتم طلب Microphone Permission عند الضغط على زر التسجيل. بعد اكتمال التسجيل، من المهم إيقاف جلسة الصوت حتى تتمكن التطبيقات الأخرى من استخدام الميكروفون. AVAudioSession على iOS و AudioManager على Android يديران تركيز الصوت.

التعرف على الكلام

تستخدم التطبيقات ذات الإدخال الصوتي (البحث، الإملاء، المساعدات الصوتية) الميكروفون جنبًا إلى جنب مع واجهات برمجة تطبيقات التعرف على الكلام. على Android، هذا هو SpeechRecognizer من android.speech، على iOS — SFSpeechRecognizer من إطار Speech. قد يتطلب التعرف على الكلام إذنًا إضافيًا لخدمات التعرف (SPEECH على Android، SFSpeechRecognizer.requestAuthorization على iOS).

مكالمات الفيديو والبث

تطبيقات مكالمات الفيديو (WebRTC، Zoom، Telegram) تطلب Microphone Permission بالتزامن مع Camera Permission. في هذا السياق، من المهم طلب كلا الإذنين بشكل تسلسلي وليس في وقت واحد، حتى لا يتم إرهاق المستخدم بالحوارات. WebRTC يستخدم getUserMedia لالتقاط الصوت والفيديو، ولكن على المنصات المحمولة، تتطلب أذونات النظام أولاً.

إعدادات جلسة الصوت

للتسجيل عالي الجودة، تحتاج إلى تكوين معلمات جلسة الصوت بشكل صحيح. على iOS، الفئة .playAndRecord تسمح بتشغيل وتسجيل الصوت في وقت واحد. على Android، اختيار AudioSource.MIC يوفر التقاطًا من الميكروفون الرئيسي، بينما AudioSource.VOICE_COMMUNICATION يحسن التسجيل للاتصال الصوتي. بالإضافة إلى ذلك، يمكن ضبط معدل أخذ العينات 44100 هرتز وتنسيق PCM 16 بت لتحقيق جودة CD قياسية.

معالجة انقطاعات التسجيل

أثناء تسجيل الصوت، قد تحدث انقطاعات في النظام: مكالمة واردة، تفعيل المنبه، إشعار من تطبيق آخر. على iOS، يعالج AVAudioSessionDelegate beginInterruption و endInterruption. على Android، AudioManager.OnAudioFocusChangeListener يخطر التطبيق بفقدان أو استعادة تركيز الصوت. المعالجة الصحيحة للانقطاعات تسمح بحفظ التسجيل أثناء الأحداث غير المتوقعة وتجنب فقدان البيانات. يُوصى بإيقاف التسجيل مؤقتًا عند فقدان التركيز واستئنافه بعد عودته مع إشعار للمستخدم.

تحسين التقاط الصوت

تحسين التقاط الصوت يشمل تكوين معدل أخذ العينات وحجم المخزن المؤقت وتنسيق الترميز. للرسائل الصوتية، يكفي تردد 44100 هرتز وقناة أحادية. للتعرف على الكلام، قد يكون تردد 16000 هرتز مطلوبًا.

على iOS، استخدم AVAudioSession.setPreferredIOBufferDuration لتكوين زمن وصول التسجيل. مخزن مؤقت أصغر يقلل زمن الوصول ولكنه يزيد من حمل المعالج. على Android، يعيد AudioRecord.getMinBufferSize الحد الأدنى لحجم المخزن المؤقت للمعلمات المحددة. يُوصى باستخدام مخزن مؤقت لا يقل عن هذا الحد الأدنى لمنع فقدان البيانات عند التسجيل تحت حمل نظام عالٍ.

أفضل الممارسات للعمل مع الميكروفون

أفضل الممارسات لـ Microphone Permission تهدف إلى زيادة ثقة المستخدم والامتثال لمتطلبات المنصات.

اشرح الهدف قبل التسجيل

قبل طلب Microphone Permission، اعرض شاشة تشرح لماذا يحتاج التطبيق إلى الميكروفون وكيف سيتم استخدام التسجيل. وضح ما إذا كان الصوت يُنقل إلى الخادم أو يُعالج محليًا. يوافق المستخدمون على الوصول بشكل أكبر إذا فهموا أن التسجيل لا يغادر الجهاز. المعالجة المحلية (ASR على الجهاز) هي حجة قوية للثقة.

أوقف التسجيل في الخلفية

إذا كان التطبيق لا يتطلب تسجيل الصوت في الخلفية، تأكد من إيقاف الميكروفون عند الانتقال إلى الخلفية. هذا لا يوفر البطارية فحسب، بل يمنع أيضًا رد فعل سلبي من المستخدم عند رؤية مؤشر التسجيل. على iOS، استخدم طرق UIApplicationDelegate applicationDidEnterBackground لإيقاف التسجيل مؤقتًا. على Android، تعامل مع onPause و onStop في Activity أو Service.

استخدم مؤشرات التسجيل

اعرض مؤشر التسجيل الخاص بك (أيقونة ميكروفون متحركة أو موجة صوتية) أثناء التقاط الصوت. هذا يخبر المستخدم أن الميكروفون نشط ويقلل من خطر رد الفعل السلبي. توصي Apple و Google بتكرار مؤشر النظام بعنصر واجهة مستخدم خاص بك لتحقيق أقصى شفافية.

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

هل أحتاج إلى Microphone Permission لتشغيل الصوت؟

لا، إذن الميكروفون مطلوب فقط لالتقاط الصوت من الميكروفون. تشغيل الصوت عبر مكبر الصوت أو سماعات الرأس لا يتطلب Microphone Permission. للتشغيل، يكفي تكوين جلسة الصوت على iOS أو AudioTrack على Android.

كيف أتحقق من حالة Microphone Permission على Android؟

استخدم ContextCompat.checkSelfPermission(context, Manifest.permission.RECORD_AUDIO). يعيد الأسلوب PackageManager.PERMISSION_GRANTED أو PERMISSION_DENIED. بالإضافة إلى ذلك، تحقق من توفر الميكروفون على الجهاز عبر PackageManager.hasSystemFeature.

ماذا أفعل إذا رفض المستخدم Microphone Permission؟

قدم سيناريو بديل: إدخال نص بدلاً من الصوت، إرسال رسالة بدون صوت، مشاهدة فيديو بدون صوت. إذا كانت وظيفة الإدخال الصوتي حرجة، اعرض شاشة مع تعليمات حول كيفية تمكين الإذن في إعدادات النظام وزر للانتقال إليها.

كيف يعمل Microphone Permission على Android 12+؟

بدءًا من Android 12، لا يمكن للتطبيق في الخلفية الوصول إلى الميكروفون. يتم إيقاف التسجيل النشط مؤقتًا عند الانتقال إلى الخلفية. بالإضافة إلى ذلك، ظهر مؤشر Privacy Chip — أيقونة خضراء في شريط الحالة تظهر أن التطبيق يستخدم الميكروفون.

لماذا رفض App Store تطبيقًا يحتوي على Microphone Permission؟

الأسباب الأكثر شيوعًا: عدم وجود مفتاح NSMicrophoneUsageDescription، وصف غير محدد للسبب («لتحسين الخدمة» بدلاً من «لتسجيل الرسائل الصوتية»)، طلب الإذن بدون إجراء مستخدم صريح، أو استخدام الميكروفون في الخلفية بدون وظائف مبررة.

الخلاصة

  • Microphone Permission هو إذن نظام لالتقاط الصوت، إلزامي على كلتا المنصتين المحمولتين.
  • Android يستخدم RECORD_AUDIO مع طلب وقت التشغيل وتقييد الوصول في الخلفية بدءًا من Android 10.
  • iOS يتطلب NSMicrophoneUsageDescription في Info.plist واستدعاء AVAudioSession.requestRecordPermission مع وصف إلزامي للسبب.
  • مؤشرات النظام (النقطة البرتقالية على iOS، Privacy Chip على Android) تخطر المستخدم بنشاط الميكروفون.
  • سيناريوهات الاستخدام تشمل الرسائل الصوتية والتعرف على الكلام ومكالمات الفيديو وتسجيل الصوت.
  • التسجيل في الخلفية مقيد بشدة على كلا المنصتين ويتطلب أذونات إضافية وتبريرًا.
  • السيناريوهات البديلة عند الرفض (إدخال نص، إرسال بدون صوت) إلزامية للتشغيل الصحيح للتطبيق.

سنقوم بتطوير تطبيق جوال جاهز

تقدم IT Sectr تطبيقات iOS وAndroid للشركات الناشئة والشركات منذ عام 2017. سوف نقدم لك النصح ونقترح أفضل حل.

مناقشة المشروع

اقرأ أيضًا