iOS8以降は下記のようにすれば現在のマイクの許可がどうなっているか確認することが出来ます。
マイクを必須にしているので、AppDelegateの下記の中でチェックするようにしています。
AppDelegate.m
- (void)applicationDidBecomeActive:(UIApplication *)application
{
AVAuthorizationStatus status = [AVCaptureDevice authorizationStatusForMediaType:AVMediaTypeAudio];
}
そして、許可されていない場合はUIAlertViewControllerを表示し、iOS8から設定を呼び出すのが復活したので、
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs:root"]];
でアプリから設定を呼ぶことが出来ます。
そして、設定から許可をし、アプリに戻ってきて再度チェックしてみると(デバッガで見てるとアプリが一度終了してる)、あいかわらず、
AVAuthorizationStatusDenied
とされてしまいます。
さて、弱った。
が、これはデバッグ時だけで、普通に実行すればこんな挙動にはなりませんでした。ちょっと気持ち悪いですが、そういうものということにします。