VolumeButtonKit is a native iOS Swift package for listening to hardware volume button events and controlling system volume behavior.
- Detect volume button press and release events.
- Optional suppression of the system volume HUD by using an offscreen
MPVolumeView. - Read and set current output volume.
- Restore baseline volume after button interactions.
- iOS 13.0+
- Swift 5.9+
- Xcode 15+
In Xcode, add the package dependency:
https://github.com/Navideck/VolumeButtonKit.git
Or in Package.swift:
dependencies: [
.package(url: "https://github.com/Navideck/VolumeButtonKit.git", branch: "main")
]import VolumeButtonKit
let listener = VolumeButtonListener()
listener.volumeButtonPressed = { button in
print("Pressed:", button == .up ? "up" : "down")
}
listener.volumeButtonReleased = { button in
print("Released:", button == .up ? "up" : "down")
}Assigning either callback starts listening automatically.
listener.pause() // stops active listening
try listener.resume() // restarts listening if a callback is set- Internally this package activates an audio session and listens for system volume change notifications.
- The default for
showsVolumeUiisfalse. - While listening, button presses restore the baseline volume captured at listener start (or after explicit
setVolumecalls while active).