IOS AVAudioPlayer отключает фоновая музыка другого приложения - программирование
Подтвердить что ты не робот

IOS AVAudioPlayer отключает фоновая музыка другого приложения

У меня есть приложение для упражнений, которое должно воспроизводить звук. Я использую AVAudioPlayer для воспроизведения звука. Но когда звук начинает воспроизводиться, фоновая музыка из другого приложения (приложение для радиопотока) отключается.

Как я могу заставить его не прерывать фоновую музыку? Потому что я хочу, чтобы пользователь услышал музыку во время упражнений.

Спасибо.

4b9b3361

Ответ 1

Вы можете использовать следующий код, в котором вы используете AVAudioPlayer:

    // Set AudioSession
    NSError *sessionError = nil;
   [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryAmbient error:&sessionError];
   [[AVAudioSession sharedInstance] setActive:YES error:&sessionError];

Если вы хотите установить делегат, вы можете добавить эту строку кода:

   [[AVAudioSession sharedInstance] setDelegate:self];

Ответ 2

В моем случае я хотел, чтобы фоновый звук воспроизводился на более низкой громкости, так как звук, воспроизводимый моим приложением, больше напоминает предупреждение. Я использую это:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    // prevents our app from stopping other audio,
    // e.g. music, podcats, etc. that may be playing when launched
    // our audio will be played at a higher volume
    // and the background audio will "duck" until done
    [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryMultiRoute 
                                     withOptions:AVAudioSessionCategoryOptionDuckOthers
                                           error:nil];
}

Ответ 3

На основе SujithPt Ответ здесь одно и то же:

AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryAmbient, error: nil)

Ответ 4

Для Swift 2.2 добавьте это где угодно, прежде чем играть или готовить:

_ = try? AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryAmbient)

Ответ 5

Для Swift 4.2

import AVFoundation

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {

    do {
        try AVAudioSession.sharedInstance().setCategory(.ambient, mode: .default, options: AVAudioSession.CategoryOptions.mixWithOthers)
    } catch let error {
        print(error.localizedDescription)
    }

    return true
}