使用libAVFAudio.dylib测试飞行应用程序崩溃:AVAE_RaiseException(NSString *,...)+ 60

时间:2015-10-31 07:55:21

标签: ios iphone crash testflight avaudioengine

我在应用程序商店上传了一个档案,当我试图播放介绍声时,我正在崩溃。我使用AVAudioEngine播放声音。当我通过Xcode编译和运行代码时,一切正常。当我上传TestFlight并尝试将我的应用程序作为内部测试程序运行时,我的应用程序崩溃了。崩溃报告是:

enter image description here

如果我使用AVAudioPlayer播放该声音,那就没关系。我无法理解AVAudioEngine的问题是什么。有什么建议吗?

1 个答案:

答案 0 :(得分:1)

我只在我的应用程序的发布版本中遇到了同样的例外,并且特定于iPhone7。 异常似乎发生在音频会话类别的变化点。 就我而言,改为

private async Task dispatcherTimer_Tick()
{
    DispatcherTimer timer = new DispatcherTimer();
    TaskCompletionSource<bool> tcs = null;
    EventHandler tickHandler = (s, e) => tcs.TrySetResult(true);

    timer.Interval = TimeSpan.FromSeconds(10);
    timer.Tick += tickHandler;
    timer.Start();

    while (true)
    {
        tcs = new TaskCompletionSource<bool>();

        await Task.Run(() =>
        {
       // Run your background service and UI update here
        await tcs.Task;
    }

}

AVAudioSessionCategorySoloAmbient

我找到了一种至少适合我的解决方法。

以下文章 https://forums.developer.apple.com/thread/65656 告诉我这种异常发生在多个输入音频单元的初始化时。

为了防止多输入音频单元的初始化, 我在更改音频会话类别之前添加了以下代码

AVAudioSessionCategoryPlayAndRecord, with:  AVAudioSessionCategoryOptions.defaultToSpeaker

引擎是AudioOutputUnitStop((engine.inputNode?.audioUnit)!) AudioUnitUninitialize((engine.inputNode?.audioUnit)!)

的实例

我希望它会帮助你们!