iPhone: MPMusicPlayerController останавливает AVAudioPlayer

Я играю тихую музыку с AVAudioPlayer, когда пользователь блокирует экран, чтобы мои таймеры не останавливались. Тем не менее, когда я играю музыку iPod с [MPMusicPlayerController applicationMusicPlayer], AVAudioPlayer останавливается, не получая никакого обратного звонка. Есть ли способ, чтобы я мог начать [MPMusicPlayerController applicationMusicPlayer] играть без остановки AVAudioPlayer играть?

РЕДАКТИРОВАТЬ: Спасибо, ребята, это приложение, над которым я работаю:

Это приложение "Тревога". Это приложение позволяет пользователю блокировать экран во время работы приложения, а когда наступает время будильника, приложение может воспроизводить музыку iPod, чтобы разбудить пользователя. Местное уведомление не может использовать музыку iPod в качестве звука оповещения, поэтому Я должен держать приложение запущенным, пока экран заблокирован.

Если пользователь выйдет из приложения, оно будет использовать локальное уведомление в качестве тревоги, звук которого ограничен файлами в комплекте.

Я не могу использовать UILocalNotification в качестве таймера, поскольку в состоянии блокировки экрана (в UIApplicationStatusInactive) приложение не может получать локальные уведомления, генерируемые системой.

3 ответа

Решение

Я понял это сам. Это не зовет [MPMusicPlayerController +applicationMusicPlayer] это останавливает AVAudioPlayer, но вызывает [MPMusicPlayerController -setShuffleMode:]Я не знаю, почему вызов этого остановит AVAudioPlayer, но именно в этом проблема. Спасибо всем, я думаю, что в следующий раз я должен вставить свой полный код.

Apple спроектировала их фоновую систему, чтобы реально ограничить подобные вещи. По сути, вы не можете поддерживать приложение в фоновом режиме, если оно не требуется. Если вы объясните, что вы пытаетесь достичь, возможно, будет найдено лучшее решение, но в качестве хорошей практики никогда не используйте случайные фоновые методы для выполнения других задач. Я предполагаю, что вы можете использовать слабую музыку как способ показать что-то особенное на главном экране, это не очень хорошая идея.

Ваше приложение будет отклонено, если вы будете воспроизводить тихий звук.

Также в соответствии с документацией Apple https://developer.apple.com/library/ios/#documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/IPhoneOSClientImp/IPhoneOSClientImp.html#//apple_ref/doc/uid/TP40008194-CH103 звуки не могут иметь (soundName), которые играют более 30 секунд.

Так что вы не сможете выпустить свое приложение в магазине.

Другие вопросы по тегам