AVAudioSession не уважает mixWithOthers - PullRequest
0 голосов
/ 19 мая 2018

Я пытаюсь создать приложение для будильника.Чтобы воспроизводить сигналы тревоги, когда приложение находится в фоновом режиме, мое приложение воспроизводит абсолютно бесшумный звук (однако я слышу тихий шум, хотя, если я проигрываю тот же звуковой файл на моем компьютере, определенно ничего не слышно) в фоновом режиме донаступает время будильника, и AVPlayer воспроизводит звук будильника.Это работает, но когда мое приложение воспроизводит тихий звук в фоновом режиме, некоторые другие приложения (особенно некоторые игры) не воспроизводят их звук.Это немного странно, потому что в AppStore есть приложение Alarmy, которое определенно использует ту же систему с бесшумным звуком, но когда я устанавливаю будильник в этом приложении, оно не отключает никакой другой звук.

Как мне этого добиться?В настоящее время я устанавливаю свою AVAudioSession следующим образом (я устанавливаю ее в инициализаторе моего класса проигрывателя будильника, экземпляр которого у меня есть в моем AppDelegate):

let session = AVAudioSession.sharedInstance()
do {
    try session.setCategory(AVAudioSessionCategoryPlayback, with: .mixWithOthers)
    try session.setActive(true)
} catch {
    print("Failed to set audio session category.  Error: \(error)")
}

РЕДАКТИРОВАТЬ: Подробнее о приложении Alarmy см. Также Приложение "Alarmy" может воспроизводить песню iTunes из фонового состояния ... Как?

1 Ответ

0 голосов
/ 19 мая 2018

«Для воспроизведения сигналов тревоги, когда приложение находится в фоновом режиме, мое приложение воспроизводит звук полной тишины».Вы имеете в виду, что вы пытаетесь использовать игру в тишине, чтобы сохранить свое приложение живым?Это не разрешеноЕсли вы нашли другие приложения, которые делают это (откуда вы знаете, что они делают это таким образом?), Это не значит, что это разрешено.Тот факт, что кому-то это сошло с рук, не меняет правила AppStore (и не меняет того факта, что тихий звук является основным источником заряда батареи).

Правильный способ создания приложения, которое запускается привремя срабатывания будильника - UNNotificationRequest.Вы можете зарегистрировать уведомление, чтобы разбудить вас в определенную дату и время, и затем вы можете включить свою сигнализацию, или (часто лучше) просто сделать так, чтобы уведомление заботилось о тревоге, не будя вас будить, пока пользователь не нажмет на сообщение.

Подробные сведения см. В Руководстве по программированию локальных и удаленных уведомлений .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...