如何为我的音乐播放器控制耳机?

时间:2018-02-28 08:05:59

标签: ios swift xcode swift3 avplayer

我正在创建一个音乐播放器iOS应用并从firebase获取数据。我可以在模拟器或iPhone中控制播放,暂停,下一个和上一个。耳机连接到设备播放时,下一个和上一个功能无法正常工作。     这是我使用过的代码;

 func setupRemoteCommandCenter() {

    // Get the shared MPRemoteCommandCenter

    let commandCenter = MPRemoteCommandCenter.shared()

    // Add handler for Play Command

    commandCenter.playCommand.addTarget { event in

            player?.play()

        print("headset play")

        return .success
    }

    // Add handler for Pause Command

    commandCenter.pauseCommand.addTarget { event in

        player?.pause()

        print("headset pause")

        return .success
    }        

    // Add handler for Next Command

    commandCenter.nextTrackCommand.addTarget { event in

        return .success
    }

    // Add handler for Previous Command

    commandCenter.previousTrackCommand.addTarget { event in

        return .success
    }
}

setupRemoteCommandCenter

中调用viewdidload函数

1 个答案:

答案 0 :(得分:1)

This document says要接收您需要的播放器事件通知

  1. 开始播放音频
  2. 是“正在播放的应用”
  3. “正在播放应用程序”的定义很难确定,但似乎似乎是任何具有活动,不可混合的音频会话并正在播放音频的应用程序(或 >最近播放音频,这里似乎有一段短暂的宽限期。一种可能的不可混合的音频会话是:

    let session = AVAudioSession.sharedInstance()
    do {
        try session.setCategory(AVAudioSessionCategoryPlayback)
        try session.setActive(true)
    } catch let err as NSError {
        print("Error setting up non mixable audio session \(err)")
    }
    

    P.S。如果您希望在屏幕锁定时耳机控件可以正常工作(或者您希望锁屏控件能够正常工作),您需要将音频添加到后台模式,因为从技术上讲,如果屏幕被锁定,那么您的应用已经背景:

    enter image description here