यदि आप अभी भी आईओएस एसडीके 6.0 (जैसा कि मैं हूं) के साथ संकलित कर रहे हैं तो आपको अनुरोध के रूप में @Luis E. Prado से थोड़ा अधिक अप्रत्यक्ष होना होगा, अनुरोध के रूप में रिकार्डप्रमिशन विधि मौजूद नहीं है।
यहां मैंने यह कैसे किया। अगर आप एआरसी का उपयोग कर रहे हैं तो ऑटोरेलीज बिट को हटा दें। आईओएस 6 पर कुछ नहीं होता है, और आईओएस 7 पर या तो 'माइक्रोफोन सक्षम है' संदेश लॉग होता है या अलर्ट पॉप अप हो जाता है।
AVAudioSession *session = [AVAudioSession sharedInstance];
if ([session respondsToSelector:@selector(requestRecordPermission:)]) {
[session performSelector:@selector(requestRecordPermission:) withObject:^(BOOL granted) {
if (granted) {
// Microphone enabled code
NSLog(@"Microphone is enabled..");
}
else {
// Microphone disabled code
NSLog(@"Microphone is disabled..");
// We're in a background thread here, so jump to main thread to do UI work.
dispatch_async(dispatch_get_main_queue(), ^{
[[[[UIAlertView alloc] initWithTitle:@"Microphone Access Denied"
message:@"This app requires access to your device's Microphone.\n\nPlease enable Microphone access for this app in Settings/Privacy/Microphone"
delegate:nil
cancelButtonTitle:@"Dismiss"
otherButtonTitles:nil] autorelease] show];
});
}
}];
}
संपादित: ऐसा लगता है कि withObject ब्लॉक एक पृष्ठभूमि सूत्र में निष्पादित किया जाता है, इसलिए वहाँ किसी भी यूआई काम नहीं करते हैं, या आपके एप्लिकेशन लटका कर सकते हैं। मैंने ऊपर दिए गए कोड को समायोजित किया है। एक ग्राहक ने बीटा रिलीज के शुक्रिया के बारे में बताया। गलती के लिए माफी
स्रोत
2013-09-30 09:11:27
ध्यान दें कि यह विधि iOS7 और इसके बाद के संस्करण पर ही उपलब्ध है। https://developer.apple.com/library/ios/documentation/AVFoundation/Reference/AVAudioSession_ClassReference/Reference/Reference।एचटीएमएल # // apple_ref/occ/instm/AVAudioSession/requestRecordPermission: –