Во-первых, я понимаю, что это копия аналогичного объективного вопроса на языке C, но ответа на него не было.
Я использую AVPlayer для звука в своем приложении. У меня он воспроизводит звук, правильно настраивая его аудиосеанс (я думаю, значок воспроизведения появляется в строке состояния, когда я воспроизводю аудиодорожки в моем приложении, а значок моего приложения появляется рядом с элементами управления плеером в многозадачной док-станции). Однако я не могу заставить его продолжать играть в фоновом режиме, когда я нажимаю кнопку «Домой». Музыка просто затихает и останавливается.
В моем info.plist есть следующий ключ:
<key>UIBackgroundModes</key>
<array>
<string>audio</string>
</array>
В моем классе, который обрабатывает воспроизведение, у меня есть:
AVAudioSession audioSession = AVAudioSession.SharedInstance();
NSError error;
audioSession.SetCategory(AVAudioSession.CategoryPlayback.ToString(),out error);
audioSession.SetActive(true,out error);
UIApplication.SharedApplication.BeginReceivingRemoteControlEvents();
int taskID = 0;
taskID = UIApplication.SharedApplication.BeginBackgroundTask(delegate
{
if(taskID !=0)
{
UIApplication.SharedApplication.EndBackgroundTask(taskID);
taskID = 0;
}
});
PlaylistManager = new ApolloPlaylistManager();
AudioPlayer = new AVPlayer();
Не уверен, нужна ли мне эта часть BeginBackgroundTask, но она не работает, если она включена или нет, я на самом деле почти уверен, что она мне не нужна. Любые советы приветствуются, так как я застрял на этом несколько дней :-(