Во-первых, я понимаю, что это копия похожего вопроса на основе цели С., но на него не было ответа.
Я использую 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, но она не работает, если она включена или выключена, я уверен, что она мне не нужна. Любые советы очень ценятся, так как я застрял на этом в течение нескольких дней: - (