Нет задокументированного пути к этому, но вы можете использовать этот обходной путь.Зарегистрируйтесь для получения уведомления AVSystemController_SystemVolumeDidChangeNotification
и добавьте MPVolumeView
, который предотвратит отображение системного тома.
MPVolumeView *volumeView = [[MPVolumeView alloc] initWithFrame:CGRectMake(-100, 0, 10, 0)];
[volumeView sizeToFit];
[self.view addSubview:volumeView];
И не забудьте запустить аудиосеанс
AudioSessionInitialize(NULL, NULL, NULL, NULL);
AudioSessionSetActive(true);
В этом случае MPVolumeView
скрыто от пользователя.
Что касается проверки, нажата ли громкость вверх или вниз, просто возьмите громкость текущего приложения
float volumeLevel = [[MPMusicPlayerController applicationMusicPlayer] volume];
и сравните еес новой громкостью после нажатия кнопки в обратном вызове уведомлений
Если вы не хотите делать это самостоятельно, в github есть доступный класс
https://github.com/blladnar/RBVolumeButtons