gpt4 book ai didi

ios - MPRemoteCommandCenter 不生成远程控制事件 MPMusicPlayerController.applicationMusicPlayer()

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:31:09 27 4
gpt4 key购买 nike

我在 iPhone 上使用 MPRemoteCommandCenter 和 MPMusicPlayerController.applicationMusicPlayer。

我正在尝试在用户播放音乐并双击耳机按钮时接收远程控制事件。

如果我使用 AVAudioPlayer,则可以完美接收远程命令。

但是,如果我将 MPMusicPlayerController 与其任何播放器(systemMusicPlayer、applicationMusicPlayer 或 applicationQueuePlayer)一起使用,则不会收到命令。他们似乎被吞噬了。例如,当我双击 Remote 时,音乐会在播放和停止之间切换。相反,我需要将远程事件发送到我的应用程序。

下面是一个包含我的代码的示例应用程序。在 info.plist 中,我为播放音频的应用程序指定了所需的后台模式(尽管这不是必需的)。

import UIKit
import MediaPlayer

class ViewController: UIViewController {
var mpPlayer:MPMusicPlayerController!

func remoteHandler() {
print("success")
}

override func viewDidLoad() {
super.viewDidLoad()

mpPlayer = MPMusicPlayerController.applicationMusicPlayer()
//mpPlayer = MPMusicPlayerController.systemMusicPlayer()
assert(mpPlayer != nil)

let cc = MPRemoteCommandCenter.shared()
print("cc = \(cc)")

cc.nextTrackCommand.isEnabled = true
cc.nextTrackCommand.addTarget(self, action: #selector(ViewController.remoteHandler))
cc.previousTrackCommand.isEnabled = true
cc.previousTrackCommand.addTarget(self, action: #selector(ViewController.remoteHandler))
cc.playCommand.isEnabled = true
cc.playCommand.addTarget(self, action: #selector(ViewController.remoteHandler))

do {
try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback)
print("AVAudioSession successfully set AVAudioSessionCategoryPlayback")
} catch let error as NSError {
print("AVAudioSession setCategory error: \(error.localizedDescription)")
}
mpPlayer.setQueueWithStoreIDs(["270139033"]) // requires iOS 10.3
mpPlayer.play()

}
}

输出是:

cc = 0x123e086c0

AVAudioSession successfully set AVAudioSessionCategoryPlayback

remoteHandler is never called.

最佳答案

来自 Apple 开发人员 web site .

When you use either the system or application player, you do not get event notifications. Those players automatically handle events.

所以使用MPMusicPlayerController是无法接收远程控制事件的。期待看到这个功能!现在 MPMusicPlayerController 是播放 Apple Music 歌曲的唯一方式。

关于ios - MPRemoteCommandCenter 不生成远程控制事件 MPMusicPlayerController.applicationMusicPlayer(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45153040/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com