ユーザーがiOSアプリケーションでマイクの許可を拒否したことを検出したいと思います。マイクを録音しようとしたときにのみ、この値を取得します:-120.000000 db
しかし、これを取得する前に、AVAudioSessionをセットアップする必要があります。別の機能はありますか?
出力に次のメッセージが表示されました:Microphone input permission refused - will record only silence
ありがとう。
IOS SDK 6.0(私と同じ)でコンパイルしている場合、requestRecordPermissionメソッドが存在しないため、@ Luis E. Pradoよりももう少し間接的でなければなりません。
ここに私がそれをした方法があります。 ARCを使用している場合は、自動解放ビットを削除してください。 iOS6では何も起こりません。iOS7では、「マイクが有効です」というメッセージが記録されるか、アラートがポップアップされます。
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];
});
}
}];
}
[〜#〜] edit [〜#〜]:withObjectブロックはバックグラウンドスレッドで実行されるため、UIでの作業を行わないでください。アプリがハングする可能性があります。上記のコードを調整しました。あるクライアントがありがたいことにベータリリースであったことについてこれを指摘しました。間違いをおologiesびします。
これはXcode 5でビルドされた場合にのみ機能し、4.6ではビルドされないことに注意してください。
プロジェクトにAVFoundation Frameworkを追加します
次に、AVFoundationフレームワークからAVAudioSessionヘッダーファイルをインポートします。ここで、マイク設定が有効になっているかどうかを確認します。
#import <AVFoundation/AVAudioSession.h>
次に、このメソッドを呼び出すだけです
[[AVAudioSession sharedInstance] requestRecordPermission:^(BOOL granted) {
if (granted) {
// Microphone enabled code
}
else {
// Microphone disabled code
}
}];
このメソッドを初めて実行すると、マイクへのアクセスを許可するプロンプトが表示され、ユーザーの応答に基づいて完了ブロックが実行されます。 2回目以降は、デバイスに保存されている設定に基づいて動作します。
迅速な回答:
if AVAudioSession.sharedInstance().recordPermission() == .Denied {
print("Microphone permission refused");
}
または、PermissionScopeのようなフレームワークを使用して、アクセス許可を簡単に確認できます。 https://github.com/nickoneill/PermissionScope
編集:Swift 3答え:
import AVFoundation
...
if AVAudioSession.sharedInstance().recordPermission() == .denied {
print("Microphone permission refused");
}
Appleの開発フォーラム以外でiOS 7について話すことを許可されているかどうかは100%確信はありませんが 、あなたが探している答えが見つかりました 。
つまり、SDKのAVAudioSession.hヘッダーファイルにソリューションがあります。 iOS 6を引き続きサポートしながら使用したい場合は、必ず「respondsToSelector:
"APIの可用性を確認します。