Надеюсь что кому-то поможет это небольшое руководство по написанию iPhone-клиента для интернет-радио. Недавно мне понадобилось написать такое. В самообразовательных целях. Постараюсь охватить тему как можно шире в будущем, но сейчас хотелось бы сосредоточится на конкретном моменте, который вызвал у меня затруднения не далее чем сегодня, а именно на проигрывании радио в фоновом режиме.
Для этого нам потребуются пара нехитрых манипуляций.
Во-первых, нужно сообщить нашему приложению, о том, что оно должно проигрывать музыку даже после нажатия на «HOME»
Делается это в файле Info.plist проекта:
Выбираем файл в Project Navigator
Щёлкаем правой кнопкой мыши по свободному месту и выбираем «Add row»
В поле «Key» введём «Required background modes»,
это создаст нам массив, в качестве значения для первого элемента мы добавим «App plays audio».
Всё, наша программа знает что в фоновом режиме она не должна засыпать полностью, а должна продолжать играть музыку.
Другой, быстрый способ сделать тоже самое это открыть Info.plist обычным редактором(по сути это просто XML-файл) и дописать
Теперь инициализируем наш плеер.
Вообще в iOS SDK есть несколько различных классов для работы со звуком. Я сначала использовал AVQueuePlayer, потом решил отдать предпочтение AVPlayer как самому, на мой взгляд, гибкому.
В любом случае AVFoundation вам в помощь, для работы с аудио.
А теперь создаём сессию:
Вот в принципе и всё, плеер умеет и будет работать в фоновом режиме. Вы можете свернуть программу нажатием на «Home» и музыка не прекратится.
И самый важный момент: воспроизведение фонового аудио почему-то не работает в симуляторе, поэтому запускать и тестировать обязательно на девайсе.
Для этого нам потребуются пара нехитрых манипуляций.
Во-первых, нужно сообщить нашему приложению, о том, что оно должно проигрывать музыку даже после нажатия на «HOME»
Делается это в файле Info.plist проекта:
Выбираем файл в Project Navigator
Щёлкаем правой кнопкой мыши по свободному месту и выбираем «Add row»
В поле «Key» введём «Required background modes»,
это создаст нам массив, в качестве значения для первого элемента мы добавим «App plays audio».
Всё, наша программа знает что в фоновом режиме она не должна засыпать полностью, а должна продолжать играть музыку.
Другой, быстрый способ сделать тоже самое это открыть Info.plist обычным редактором(по сути это просто XML-файл) и дописать
<key>UIBackgroundModes</key>
<array>
<string>audio</string>
</array>
Теперь инициализируем наш плеер.
Вообще в iOS SDK есть несколько различных классов для работы со звуком. Я сначала использовал AVQueuePlayer, потом решил отдать предпочтение AVPlayer как самому, на мой взгляд, гибкому.
В любом случае AVFoundation вам в помощь, для работы с аудио.
- (void)viewDidLoad {
[super viewDidLoad];
// Convert the file path to a URL.
NSString *urlAddress = @"http://www.example.com/stream";
//Create a URL object.
NSURL *urlStream = [NSURL URLWithString:urlAddress];
AVPlayer *player = [[AVPlayer alloc] initWithURL:urlStream];
//Starts playback
[player play];
}
А теперь создаём сессию:
// очень важная строчка, она должна быть ПОСЛЕ инициализации плеера.
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil];
Вот в принципе и всё, плеер умеет и будет работать в фоновом режиме. Вы можете свернуть программу нажатием на «Home» и музыка не прекратится.
И самый важный момент: воспроизведение фонового аудио почему-то не работает в симуляторе, поэтому запускать и тестировать обязательно на девайсе.