Я нашел решение этой проблемы.
Если вы хотите, чтобы AVAudioPlayer и AVAssetWriter вели себя правильно вместе, вы должны иметь и категорию аудио-сеанса, которая является «смешиваемой».
Вы можете использовать смешиваемую категорию, например AVAudioSessionCategoryAmbient.
Однако мне нужно было использовать AVAudioSessionCategoryPlayAndRecord.
Вы можете установить смешиваемость любой категории, выполнив это:
OSStatus propertySetError = 0;
UInt32 allowMixing = true;
propertySetError = AudioSessionSetProperty (
kAudioSessionProperty_OverrideCategoryMixWithOthers, // 1
sizeof (allowMixing), // 2
&allowMixing // 3
);