WooHoo!
// kAudioSessionOverrideAudioRoute_Speaker would only work once.
// kAudioSessionProperty_OverrideCategoryDefaultToSpeaker works
// until the session changes.
SET_PROPERTY( kAudioSessionProperty_OverrideCategoryDefaultToSpeaker, UInt32, (UInt32) YES );
в основном у iPhone есть 2 внутренних динамика, «ресивер», который гудит в ухо при получении вызова, и гораздо больший внешний динамик (эти 2 гриля расположены по обе стороны от гнезда питания, левый - внешний Правильный динамик - это микрофон - сбивает с толку: однажды я взял свой iPhone в ремонтную мастерскую в Таиланде, потому что мой «правый динамик» не работал, и они даже предложили починить его для меня ?! К счастью, я этого не сделал нравится цена ...)
во всяком случае, по абсолютно никакой веской причине, которую я могу придумать,
SET_PROPERTY( kAudioSessionProperty_AudioCategory, UInt32,
kAudioSessionCategory_PlayAndRecord );
сеанс по умолчанию использует ресивер, поэтому нужно просто сказать, что вместо него используется динамик.