我们在基于iOS7的iPhone应用程序中发生了崩溃,但似乎很难再现。我们的一些客户正在体验它,我们正在从Crashlytics获取尽可能多的信息。我在这里附上了堆栈跟踪的截图,遗憾的是(看似)不是很有用,因为它完全局限于AudioToolbox AV类:
我们也有面包屑,这表明它肯定发生在用户点击我们的应用程序中的“记录”按钮后(虽然我不确定崩溃是立即发生还是在记录持续时间之后)。
关于“录制”代码,应用程序实际上没有做任何特殊或自定义/唯一的操作。以下是我们的记录器和设置的属性访问器的设置(如果需要知道,采样率为8000.0,通道数为1):
- (AVAudioRecorder *)recorder {
if (!_recorder) {
NSError *error = nil;
_recorder = [[AVAudioRecorder alloc] initWithURL:_tmpRecordingUrl settings:self.audioSettings error:&error];
_recorder.meteringEnabled = YES;
_recorder.delegate = self;
[_recorder prepareToRecord];
if (error) {
DLog(@"Could not create audio recorder: %@", error);
return nil;
}
}
return _recorder;
}
- (NSDictionary *)audioSettings {
if (!_audioSettings) {
_audioSettings = @{
AVFormatIDKey: @(kAudioFormatLinearPCM),
AVSampleRateKey: @(kSampleRate),
AVNumberOfChannelsKey: @kNumberOfChannels,
AVLinearPCMBitDepthKey: @16,
AVLinearPCMIsBigEndianKey: @NO,
AVLinearPCMIsFloatKey: @NO,
AVEncoderAudioQualityKey: @(AVAudioQualityMedium)
};
}
return _audioSettings;
}
然后要记录,我们只需调用[self.recorder record]
方法,当它完成时,它需要tmpRecodingUrl并将其移动到永久位置(尽管在这种情况下它永远不会达到这一点)。启动录制时会发生一些其他事情,例如一些UI叠加层和类级布尔设置/跟踪计时器,但它们都在AudioToolbox之外,所以我不相信任何导致问题的原因。
我知道这不是太多了,但有没有人经历过这种类似的崩溃?任何方向都会非常有帮助,谢谢!