2017-03-09 7 views
0

私はこのコードを私たちが作ったアプリケーションから取り出しました。これはすでにストアに入っています(まだ問題なく動作しています)。 しかし、私は新しいアプリでそれを実行しようとすると、私はSIGABRTを取得します。SIGABRT AVFoundationを使用しているとき

ここでは、DependencyService経由でXamarin.Formsのクラッシュを再現するために使用したサンプルクラスを示します。レコーダーの作成後、errorプロパティはnullのままです。

public class RedordDependencies : IRecordDependencies 
{ 
    NSObject[] values = new NSObject[] { 
     NSNumber.FromFloat (44100.0f), //Sample Rate 
     NSNumber.FromInt32 ((int)AudioToolbox.AudioFormatType.LinearPCM), //AVFormat 
     NSNumber.FromInt32 (2), //Channels 
     NSNumber.FromInt32 (16), //PCMBitDepth 
     NSNumber.FromBoolean (false), //IsBigEndianKey 
     NSNumber.FromBoolean (false) //IsFloatKey 
    }; 

    NSObject[] keys = new NSObject[] { 
     AVAudioSettings.AVSampleRateKey, 
     AVAudioSettings.AVFormatIDKey, 
     AVAudioSettings.AVNumberOfChannelsKey, 
     AVAudioSettings.AVLinearPCMBitDepthKey, 
     AVAudioSettings.AVLinearPCMIsBigEndianKey, 
     AVAudioSettings.AVLinearPCMIsFloatKey 
    }; 

    AVAudioRecorder recorder; 
    NSError error; 
    NSDictionary settings; 

    public RedordDep() 
    { 
     settings = NSDictionary.FromObjectsAndKeys(values, keys); 
    } 

    public string Prepare() 
    { 
     NSUrl path = NSUrl.FromString(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), DateTime.Now.Ticks.ToString() + ".wav")); 
     recorder = AVAudioRecorder.Create(path, new AudioSettings(settings), out error); 
     bool prepared = recorder.PrepareToRecord(); 
     return path.Path; 
    } 
} 

編集: 私はAVFoundationを使用している場合、これはまた、他の例で起こることが分かりました。 私の場合は、ビデオレコーダーとオーディオレコーダーを初期化しようとしたときに起きました。

答えて

0

この Stacktrace を研究した後、私はそれが私はちょうど私が必要な使用法説明キーを追加する必要がありましたiOSの10に導入されているセキュリティオプションに関連していることが分かりました。 "NSCameraUsageDescription"および "NSMicrophoneUsageDescription"

関連する問題