iOS 9.1 - iPhone 6S
MPVolumeView\'s route button (airplay) is not showing when app launches even when there are wireless routes available.
I have tried query
As @kvr said, first test on hardware device
Airplay route button appears when more than one route is available.
Trick I found to show permanently Airplay Button is to hide MPVolumeView route button, remove user MPVolumeView user interaction and target the route button action with a UIButton Wrapper.
var airplayRouteButton: UIButton?
private func airPlayButton() -> UIButton {
let wrapperView = UIButton(frame: CGRect(x: 0, y: 0, width: 44, height: 44))
wrapperView.setImage(YOUR_AIRPLAY_IMAGE, for: UIControlState.normal)
wrapperView.backgroundColor = .clear
wrapperView.addTarget(self, action: #selector(PlayerView.replaceRouteButton), for: UIControlEvents.touchUpInside)
let volumeView = MPVolumeView(frame: wrapperView.bounds)
volumeView.showsVolumeSlider = false
volumeView.showsRouteButton = false
volumeView.isUserInteractionEnabled = false
self.airplayRouteButton = volumeView.subviews.filter { $0 is UIButton }.first as? UIButton
wrapperView.addSubview(volumeView)
return wrapperView
}
@objc private func replaceRouteButton() {
airplayRouteButton?.sendActions(for: .touchUpInside)
}