Я прочитал другие темы в 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"} }