Microphone Permission ایک نظامی اجازت ہے جو کسی ایپلیکیشن کے لیے ڈیوائس کے مائیکروفون تک رسائی حاصل کرنے کے لیے ضروری ہے۔ یہ آڈیو ریکارڈنگ، صوتی پیغامات، ویڈیو کالز اور اسپیچ ریکگنیشن کے لیے درکار ہے۔ Apple Developer Documentation, 2024 کے مطابق، تمام ایپلیکیشنز جو آڈیو کیپچر استعمال کرتی ہیں، وہ سسٹم ڈائیلاگ کے ذریعے صارف کی واضح رضامندی لینے کی پابند ہیں۔
اہم نکات
Microphone Permission ایک رازداری کے تحفظ کا طریقہ کار ہے جو ڈیوائس کے مائیکروفون سے غیر مجاز آڈیو ریکارڈنگ کو روکتا ہے۔ موبائل پلیٹ فارم مائیکروفون کو سب سے حساس وسائل میں سے ایک مانتے ہیں، کیونکہ آڈیو ریکارڈنگ ذاتی گفتگو، آس پاس کے ماحول اور خفیہ معلومات کو کیپچر کر سکتی ہے۔
Android RECORD_AUDIO کو ایک خطرناک اجازت کے طور پر درجہ بند کرتا ہے، اور iOS کو Info.plist میں NSMicrophoneUsageDescription کلید کے لازمی اضافے کی ضرورت ہے۔ دونوں پلیٹ فارمز پر، درخواست رن ٹائم پر کی جاتی ہے اور صارف سسٹم سیٹنگز کے ذریعے کسی بھی وقت اجازت منسوخ کر سکتا ہے۔ سسٹم ریکارڈنگ اشارہ (iOS پر نارنجی نقطہ، Android 12+ پر سبز اشارہ) صارف کو اشارہ کرتا ہے کہ ایپلیکیشن اس وقت مائیکروفون استعمال کر رہی ہے۔
Pew Research Center (2024) کی ایک تحقیق کے مطابق، 54% موبائل ڈیوائس صارفین نے کم از کم ایک بار کسی ایپلیکیشن کو مائیکروفون تک رسائی سے انکار کیا ہے۔ بنیادی وجہ یہ سمجھ نہ آنا ہے کہ ایپ کو آڈیو ریکارڈنگ کی کیوں ضرورت ہے۔ لہذا، ڈویلپر کو مائیکروفون استعمال کے مقصد کو زیادہ سے زیادہ شفاف طریقے سے بیان کرنا چاہیے۔
Android پر مائیکروفون کی اجازت مینی فیسٹ میں RECORD_AUDIO کا اعلان کر کے اور ایپلیکیشن کوڈ میں رن ٹائم درخواست کے ذریعے حاصل کی جاتی ہے۔ Android 10 سے شروع ہو کر، مائیکروفون تک رسائی اضافی طور پر پس منظر کی ایپلیکیشنز کے لیے پابندیوں سے منظم ہوتی ہے۔
پہلا قدم مینی فیسٹ فائل میں RECORD_AUDIO اجازت کا اعلان کرنا ہے۔ اس اعلان کے بغیر، رن ٹائم درخواست کا کوئی اثر نہیں ہوگا اور ایپلیکیشن مائیکروفون تک رسائی حاصل نہیں کر سکے گی۔
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.CAPTURE_AUDIO_OUTPUT" />
CAPTURE_AUDIO_OUTPUT ایک نظامی اجازت ہے جو تیسرے فریق کی ایپلیکیشنز کے لیے دستیاب نہیں ہے۔ یہ صرف سسٹم ایپلیکیشنز کے ذریعے آڈیو آؤٹ پٹ کیپچر کرنے کے لیے استعمال ہوتی ہے۔ عام ایپلیکیشنز کو مائیکروفون سے ریکارڈ کرنے کے لیے صرف RECORD_AUDIO کی ضرورت ہے۔
مینی فیسٹ میں اعلان کے بعد، رن ٹائم درخواست کرنا ضروری ہے۔ مائیکروفون سے آڈیو ریکارڈ کرنے کے لیے AudioRecord استعمال کرنے کی ایک مثال دیکھیں۔
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 پر مائیکروفون کی اجازت Info.plist میں NSMicrophoneUsageDescription کلید اور AVAudioSession.requestRecordPermission طریقہ کار کی کال کے ذریعے ترتیب دی جاتی ہے۔ Apple درخواست ڈائیلاگ میں مائیکروفون استعمال کی وجہ کی لازمی وضاحت کا تقاضا کرتا ہے۔
NSMicrophoneUsageDescription کلید کسی بھی ایپلیکیشن کے لیے لازمی ہے جو مائیکروفون تک رسائی کی درخواست کرتی ہے۔ اس کے بغیر، آڈیو ریکارڈ کرنے کی کوشش پر ایپلیکیشن کریش ہو جائے گی۔
<key>NSMicrophoneUsageDescription</key>
<string>صوتی نوٹس ریکارڈ کرنے اور آڈیو پیغامات بھیجنے کے لیے ایپ کو مائیکروفون تک رسائی کی ضرورت ہے۔</string>
iOS پر مائیکروفون تک رسائی کی درخواست AVAudioSession کے ذریعے کی جاتی ہے۔ جواب موصول ہونے کے بعد، ایپلیکیشن آڈیو سیشن ترتیب دیتی ہے اور ریکارڈنگ شروع کرتی ہے۔
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 کی درخواست کی جاتی ہے۔ ریکارڈنگ مکمل ہونے کے بعد، آڈیو سیشن کو روکنا ضروری ہے تاکہ دوسری ایپلیکیشنز مائیکروفون استعمال کر سکیں۔ iOS پر AVAudioSession اور Android پر AudioManager آڈیو فوکس کا انتظام کرتے ہیں۔
صوتی ان پٹ والی ایپلیکیشنز (تلاش، ڈکٹیشن، صوتی معاون) اسپیچ ریکگنیشن API کے ساتھ مل کر مائیکروفون استعمال کرتی ہیں۔ Android پر، یہ android.speech سے SpeechRecognizer ہے، iOS پر — Speech فریم ورک سے SFSpeechRecognizer۔ اسپیچ ریکگنیشن کے لیے ریکگنیشن سروسز (Android پر SPEECH، iOS پر SFSpeechRecognizer.requestAuthorization) کے لیے اضافی اجازت درکار ہو سکتی ہے۔
ویڈیو کالنگ ایپلیکیشنز (WebRTC، Zoom، Telegram) Camera Permission کے ساتھ Microphone Permission کی درخواست کرتی ہیں۔ اس تناظر میں، دونوں اجازتوں کو ایک ساتھ نہیں بلکہ ترتیب وار درخواست کرنا ضروری ہے، تاکہ صارف ڈائیلاگ سے مغلوب نہ ہو۔ WebRTC آڈیو اور ویڈیو کیپچر کے لیے getUserMedia استعمال کرتا ہے، لیکن موبائل پلیٹ فارمز پر پہلے سسٹم اجازتیں درکار ہیں۔
معیاری ریکارڈنگ کے لیے، آڈیو سیشن کے پیرامیٹرز کو صحیح طریقے سے ترتیب دینا ضروری ہے۔ iOS پر، .playAndRecord زمرہ بیک وقت آواز چلانے اور ریکارڈ کرنے کی اجازت دیتا ہے۔ Android پر، AudioSource.MIC کا انتخاب مرکزی مائیکروفون سے کیپچر فراہم کرتا ہے، جبکہ AudioSource.VOICE_COMMUNICATION صوتی مواصلات کے لیے ریکارڈنگ کو بہتر بناتا ہے۔ مزید برآں، معیاری CD کوالٹی کے لیے 44100 Hz کا نمونہ لینے کی شرح اور PCM 16 بٹ فارمیٹ سیٹ کیا جا سکتا ہے۔
آڈیو ریکارڈنگ کے دوران، سسٹم میں رکاوٹیں آ سکتی ہیں: آنے والی کال، الارم ایکٹیویشن، کسی دوسری ایپلیکیشن سے نوٹیفکیشن۔ iOS پر، AVAudioSessionDelegate beginInterruption اور endInterruption کو سنبھالتا ہے۔ Android پر، AudioManager.OnAudioFocusChangeListener ایپلیکیشن کو آڈیو فوکس کے کھونے یا واپسی کے بارے میں مطلع کرتا ہے۔ رکاوٹوں کا صحیح انتظام غیر متوقع واقعات کے دوران ریکارڈنگ کو محفوظ کرنے اور ڈیٹا کے نقصان سے بچنے کی اجازت دیتا ہے۔ فوکس کھونے پر ریکارڈنگ کو موقوف کرنے اور اس کی واپسی پر صارف کو اطلاع دے کر دوبارہ شروع کرنے کی سفارش کی جاتی ہے۔
آڈیو کیپچر کی اصلاح میں نمونہ لینے کی شرح، بفر کا سائز اور انکوڈنگ فارمیٹ کی ترتیب شامل ہے۔ صوتی پیغامات کے لیے، 44100 Hz فریکوئنسی اور مونو چینل کافی ہے۔ اسپیچ ریکگنیشن کے لیے، 16000 Hz فریکوئنسی درکار ہو سکتی ہے۔
iOS پر، ریکارڈنگ لیٹنسی ترتیب دینے کے لیے AVAudioSession.setPreferredIOBufferDuration استعمال کریں۔ چھوٹا بفر لیٹنسی کم کرتا ہے لیکن CPU لوڈ بڑھاتا ہے۔ Android پر، AudioRecord.getMinBufferSize دیے گئے پیرامیٹرز کے لیے کم از کم بفر سائز لوٹاتا ہے۔ زیادہ سسٹم لوڈ کے تحت ریکارڈنگ کرتے وقت ڈیٹا کے نقصان سے بچنے کے لیے اس کم از کم سے کم نہ ہونے والا بفر استعمال کرنے کی سفارش کی جاتی ہے۔
بہترین طریقے Microphone Permission کے لیے صارف کے اعتماد میں اضافہ اور پلیٹ فارم کی ضروریات کو پورا کرنے پر مرکوز ہیں۔
Microphone Permission کی درخواست کرنے سے پہلے، ایک اسکرین دکھائیں جو بتائے کہ ایپ کو مائیکروفون کی کیوں ضرورت ہے اور ریکارڈنگ کیسے استعمال ہوگی۔ بتائیں کہ آیا آڈیو سرور کو بھیجا جاتا ہے یا مقامی طور پر پروسیس کیا جاتا ہے۔ صارفین نمایاں طور پر زیادہ رسائی دیتے ہیں اگر وہ سمجھتے ہیں کہ ریکارڈنگ ڈیوائس سے باہر نہیں جاتی۔ مقامی پروسیسنگ (آن ڈیوائس ASR) اعتماد کے لیے ایک مضبوط دلیل ہے۔
اگر ایپلیکیشن کو پس منظر میں آڈیو ریکارڈنگ کی ضرورت نہیں ہے، تو پس منظر میں جانے پر مائیکروفون کو بند کرنا یقینی بنائیں۔ یہ نہ صرف بیٹری بچاتا ہے بلکہ ریکارڈنگ کا اشارہ دیکھ کر صارف کے منفی ردعمل کو بھی روکتا ہے۔ iOS پر، ریکارڈنگ موقوف کرنے کے لیے UIApplicationDelegate کے طریقہ کار applicationDidEnterBackground استعمال کریں۔ Android پر، Activity یا Service میں onPause اور onStop کو سنبھالیں۔
آڈیو کیپچر کے دوران اپنا ریکارڈنگ اشارہ (متحرک مائیکروفون آئیکن یا ویو فارم) دکھائیں۔ یہ صارف کو بتاتا ہے کہ مائیکروفون فعال ہے اور منفی ردعمل کے خطرے کو کم کرتا ہے۔ Apple اور Google زیادہ سے زیادہ شفافیت کے لیے سسٹم اشارے کو اپنے UI عنصر سے نقل کرنے کی تجویز دیتے ہیں۔
اکثر پوچھے گئے سوالات
نہیں، مائیکروفون کی اجازت صرف مائیکروفون سے آڈیو کیپچر کے لیے ضروری ہے۔ اسپیکر یا ہیڈ فون کے ذریعے آواز چلانے کے لیے Microphone Permission کی ضرورت نہیں ہے۔ چلانے کے لیے، iOS پر آڈیو سیشن یا Android پر AudioTrack ترتیب دینا کافی ہے۔
ContextCompat.checkSelfPermission(context, Manifest.permission.RECORD_AUDIO) استعمال کریں۔ طریقہ کار PackageManager.PERMISSION_GRANTED یا PERMISSION_DENIED لوٹاتا ہے۔ مزید برآں، PackageManager.hasSystemFeature کے ذریعے ڈیوائس پر مائیکروفون کی دستیابی چیک کریں۔
متبادل منظرنامہ پیش کریں: آواز کے بجائے ٹیکسٹ ان پٹ، آڈیو کے بغیر پیغام بھیجنا، آواز کے بغیر ویڈیو دیکھنا۔ اگر صوتی ان پٹ کی خصوصیت اہم ہے تو، سسٹم سیٹنگز میں اجازت فعال کرنے کے ہدایات اور وہاں جانے کے بٹن کے ساتھ ایک اسکرین دکھائیں۔
Android 12 سے شروع ہو کر، پس منظر میں کوئی ایپلیکیشن مائیکروفون تک رسائی حاصل نہیں کر سکتی۔ پس منظر میں جانے پر فعال ریکارڈنگ موقوف کر دی جاتی ہے۔ مزید برآں، Privacy Chip اشارہ ظاہر ہوا ہے — اسٹیٹس بار میں ایک سبز آئیکن جو دکھاتا ہے کہ کوئی ایپلیکیشن مائیکروفون استعمال کر رہی ہے۔
سب سے عام وجوہات: NSMicrophoneUsageDescription کلید کی کمی، غیر مخصوص وجہ کی وضاحت (“صوتی پیغامات ریکارڈ کرنے کے لیے” کے بجائے “سروس بہتر بنانے کے لیے”)، واضح صارف عمل کے بغیر اجازت کی درخواست، یا جواز شدہ فعالیت کے بغیر پس منظر میں مائیکروفون کا استعمال۔
خلاصہ
ہم ایک موبائل ایپلیکیشن ٹرنکی تیار کریں گے
IT Sectr 2017 سے اسٹارٹ اپس اور کاروبار کے لیے iOS اور Android ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔
مزید پڑھیں