Accessing Bluetooth Media Keys on Watch?

I am developing a WatchOS app for a companion Bluetooth speaker.

The device has typical the Play/Pause, Volume Up and Volume Down keys of a usual Bluetooth Speaker.


The following code works great at playing the audio, and I can control the volume using the up and down keys, but for some reason I can only stop the audio player using the Play/Pause button on the device. If I try to press the Play/Pause button again, nothing happens.


func playSong(song: Song) {
        do {
            try self.session.setCategory(AVAudioSession.Category.playback, mode: .default, policy: .longFormAudio, options: [])
        } catch let error {
            fatalError("*** Unable to set up the audio session: \(error.localizedDescription) ***")
        }
        do {
            print("Attempting to play ", song.url)
            let newPlayer = AVPlayer(url: song.url)
            newPlayer.play()
            self.player = newPlayer
        } catch let error as NSError {
            print(error.description)
        }
    }


Is there a function or method I can listen on in order to implement the expected play/pause functionality?


I expect I'll have to handle the self.player.pause() events myself, which is no problem, but I can't find any reference for handling any Bluetooth Media Key events (except for the global Play Pause it seems).