В моей игре iOS есть музыка и звуковые эффекты. Я хотел бы позволить пользователям слушать свою музыку вместо фоновой музыки игры.Может ли мое приложение быть уведомленным, когда другое приложение запускает/останавливает воспроизведение аудио?
Простым решением является добавление нового пункта меню, который отключает фоновую музыку игры. Тем не менее, я бы хотел избежать создания нового элемента меню, если не могу убедиться, что этот подход для пользователя еще хуже.
Мой текущий подход:
- Установите аудио категорию сеанса
AVAudioSessionCategoryAmbient
, чтобы смешивать игры аудио с IPod (или другой музыки приложение) воспроизведения. - В
applicationDidBecomeActive
, проверьте[[AVAudioSession sharedInstance] isOtherAudioPlaying]
и выключите музыку, если в фоновом режиме воспроизводится другое приложение.
Это похоже на работу в большинстве случаев. Когда игра запускается, она прерывает воспроизведение фонового музыкального приложения. Если вы хотите играть свою собственную музыку, вам необходимо сознательно вернуться и нажать кнопку воспроизведения в стороннем музыкальном приложении или использовать панель управления iOS 7. В противном случае собственная музыка игры возьмет верх.
Это приходит с парой недостатков:
- Он не обнаруживает при воспроизведении музыкального приложения стороннего является старт/стоп с помощью щелчка кнопки пульта дистанционного управления, встроенного в iPhone/IPod наушники.
- Хотя он работает с iPod, он не работает с приложением SoundCloud. Я не тестировал других.
Вопрос:
Есть ли способ, чтобы получать уведомления, когда сторонние музыкальные приложения (например, АРР, Айпод) начать воспроизведение/стоп? В качестве альтернативы, есть ли способ получить уведомление при изменении значения @property BOOL otherAudioPlaying
?
Может ли такой подход получить обратный эффект? Неразумно ли просто использовать пункт меню?
Вид не яблоко, нет ли для этого делегата или уведомлений? – s1ddok