2013-09-23 11 views
13

iOS 7のアップデート以来、録画アプリケーションでいくつかの変更がありました。 iOS 5と6で動作していたアプリがありますが、iOS 7で実行しようとしたときに録音が応答しませんでした。requestRecordPermissionは何もしません

インターネットをチェックして、呼び出す必要がある新しい方法があることを確認しました。 私はviewDidAppearでこのコードを配置してみました:

if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7) { 
    if([[AVAudioSession sharedInstance] respondsToSelector:@selector(requestRecordPermission:)]) 
    { 
     [[AVAudioSession sharedInstance] requestRecordPermission:^(BOOL granted) { 
      NSLog(@"permission : %d", granted); 
     }]; 
    } 
} 

「付与された」私はすべての権限を付与したり任意の要求のポップアップを見ていなかったものの、常に1です。

Btw私はxcode 4.6.3を使用してこれを処理しようとしています。このメソッドはiOS 7でしか使用できないため、AVAudioSessionのcategoryをrequestRecordPermissionメソッドで作成しました。

ありがとうございました。

+0

私はYogesh Maheshwariの答えがより正確であり、答えとして設定されるべきだと思います。 –

答えて

25

iOS7シミュレータでテストしているときに同じ問題が発生しましたが、requestRecordPermissionがシミュレータで動作せず、 "granted"が常に返されるようです。実際のデバイスでテストする必要があります。

デバイスで一度テストして権限ポップアップに応答した場合は、&プライバシーのリセットが完了するまで、権限のポップアップが再度表示されません。場所&プライバシーをリセットするには

は、これらのステップのiOS 8 Simulatorの同じ

Go to Settings -> General -> Reset -> Reset Location & Privacy and then press "Reset Warnings" when asked. 
10

アプリケーションにオーディオ許可を与えた後。あなたのアプリは再びアクセス権のプロンプトを表示しません。

テストする場合は、アプリのバンドルIDを&に変更してください。

2

に従ってください。あなたはシミュレータ上でアプリケーションの設定を開くには

UIApplication.sharedApplication().openURL(NSURL(string: UIApplicationOpenSettingsURLString)!) 

を呼び出すときAVAudioSession.sharedInstance().requestRecordPermissionは常にtrue.Onにもう一方の手を返し、マイクがthere.Thatは、実際のデバイス上でテストする必要がリストされることはありません。

1

プライバシーの追加 - マイクの使用説明あなたの情報plistの説明では、アプリがアクセス権を要求するアクセス権を付与しています。これは私にThread13:signal SIGABRTエラーを引き起こしていました。 これが完了すると、エラーは自動的に解決されます。

+0

より良い品質の回答を提供するために、あなたの提案のコードを表示してみてください。 – yivi

関連する問題