Как воспроизвести звук, когда iPhone включен? - PullRequest
0 голосов
/ 10 января 2019

Я пытаюсь создать приложение реагирования на родную тревогу для iOS. Я взглянул на пару библиотек, и одна из них, которая казалась мне лучшей для моего проекта, является response-native-alarm, однако у меня возникла проблема с этим. Когда мое устройство находится в беззвучном режиме, запланированное локальное уведомление, которое используется для пробуждения устройства и воспроизведения звука, этого не делает. Я видел, как люди говорили, что они решили эту проблему с помощью API AVAudioPlayer, который предоставляет Apple, но я не могу заставить его работать. Немного руководства и помощи может быть полезным.

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

Вот мой код

-(void)userNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^ (UNNotificationPresentationOptions))completionHandler {

    completionHandler(UNNotificationPresentationOptionAlert | UNNotificationPresentationOptionSound);

    [[AVAudioSession sharedInstance] setCategory: AVAudioSessionCategoryPlayback error: nil];
    NSString *soundPath = [[NSBundle mainBundle] pathForResource:@"/Library/Ringtones/Constellation" ofType:@"m4r"];
    NSURL *url = [NSURL fileURLWithPath:soundPath];
    audioPlay = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:nil];

    [audioPlay play];
}

Если я что-то не так делаю или есть альтернативная библиотека, которую можно использовать в реагирующем языке, я бы хотел это услышать. Я не очень опытен, когда дело доходит до объективного-c, поэтому я мог бы сделать что-то глупое в этом фрагменте кода.

1 Ответ

0 голосов
/ 10 января 2019

Вы забыли установить активный сеанс:

[[AVAudioSession sharedInstance] setActive:YES error:nil];
...