var engine:AVAudioEngine!
var format = engine.inputNode.inputFormat(forBus: 0)
engine.connect(engine.inputNode, to: engine.mainMixerNode, format: format)
in function AVAudioEngine.connect make my app crash only on hardware but in simulator it's fine.
When I run on hardware it's error says.
Terminating app due to uncaught exception 'com.apple.coreaudio.avfaudio', reason: 'required condition is false: IsFormatSampleRateAndChannelCountValid(format)'
terminating with uncaught exception of type NSException
I figure it out. I just set the AVAudioSession category type wrong. If you have the same error take a look at AVAudioSession and make sure that your AVAudioSession category is in the right setting for microphone permission. for instance
with this setting will allow app to use microphone and play sound in the same time.