Воспроизведение аудио, когда приложение находится в фоновом режиме - PullRequest
0 голосов
/ 05 июля 2019

Я прочитал другие темы в SO, но, похоже, ни один из них не подходит для моего случая.

Мое приложение будет воспроизводить аудиофайл при получении push-уведомления.Если мое приложение находится на переднем плане, это нормально.Но когда я кладу телефон в спящий режим нажатием кнопки блокировки.

[audioSession setCategory:AVAudioSessionCategoryPlayback
                                         mode:AVAudioSessionModeDefault
                           routeSharingPolicy:AVAudioSessionRouteSharingPolicyDefault
                                      options:AVAudioSessionCategoryOptionMixWithOthers error:&error];
                    NSLog(@"###########START set category with error: %@",error.description);
                    [audioSession setActive:true error:&error];
                    NSLog(@"###########START set active with error: %@",error.description);

При попытке активировать звуковую сессию появляется ошибка.

###########START set category with error: (null) 2019-07-05 15:51:35.149386+0800 [1936:804557] 
###########START set active with error: Error Domain=NSOSStatusErrorDomain Code=561015905 "(null)"

Ошибка 561015905: AVAudioSessionErrorCodeCannotStartPlaying

из документа Apple:

Этот тип ошибки может возникать, если список свойств информации приложения не позволяет использовать аудио, или если приложение находится в фоновом режиме и использует категорию, которая не допускает фоновое аудио.

но я включил аудио в фоновом режиме в Capabilities, а также разрешил использование звука.

что-то не так с настройкой моей категории ??

Я проверил журнал консоли.Я получил это

default 17:10:19.487601 +0800   mediaserverd    1242: { "action":"set_category", "session":{"ID":"0x1ac7d","PID":2181,"name":"MY_APP"}, "details":{"key":"AudioCategory","value":"MediaPlayback"} }
default 17:10:19.489471 +0800   mediaserverd    2832: { "action":"set_property", "session":{"ID":"0x1ac7d","PID":2181,"name":"MY_APP"}, "details":{"key":"InterruptionStyle","value":"Mix with others"} }
default 17:10:19.491276 +0800   mediaserverd    2832: { "action":"set_property", "session":{"ID":"0x1ac7d","PID":2181,"name":"MY_APP"}, "details":{"key":"WantsToPauseSpokenAudio","value":false} }
default 17:10:19.494890 +0800   mediaserverd    2919: { "action":"activate", "session":{"ID":"0x1ac7d","PID":2181,"name":"MY_APP"}, "details":"entry" }
default 17:10:19.501012 +0800   mediaserverd    -CMSUtilities- CMSUtility_IsAllowedToStartPlaying: CMSession: Client sid:0x1ac7d, MY_APP(2181), 'prim' with category MediaPlayback and mode Default and mixable does not have assertions to start mixable playback
default 17:10:19.501838 +0800   mediaserverd    -CMSessionMgr- _CMSessionBeginInterruption_WithFlags: CMSession: CMSessionBeginInterruption failed as client 'sid:0x1ac7d, MY_APP(2181), 'prim'' has insufficient privileges to take control
error   17:10:19.503217 +0800   mediaserverd    259: { "action":"cm_session_begin_interruption", "error":"translating CM session error", "session":{"ID":"0x1ac7d","PID":2181,"name":"MY_APP"}, "details":{"calling_line":2949,"error_code":-16980,"error_string":"Operation denied. Cannot start playing"} }

1 Ответ

0 голосов
/ 09 июля 2019

Я обнаружил проблему, я должен разбудить свой телефон с VoIP-уведомлением вместо обычного Push-уведомления

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