我在锁定屏幕(iOS 11.2)上显示播放器控件时遇到问题。我已经完成的工作如下:
在AppDelegate.swift中,我初始化了AVAudioSession:
import MediaPlayer
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
UIApplication.shared.beginReceivingRemoteControlEvents()
do {
try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback)
try AVAudioSession.sharedInstance().setActive(true)
} catch {
}
return true
}
}
Run Code Online (Sandbox Code Playgroud)
然后,我的应用程序由一个具有多个视图的TabHostController组成。其中之一是音频选项卡。在那里,我尝试处理远程按钮:
import UIKit
import Foundation
import MediaPlayer
class AudioTabViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let commandCenter = MPRemoteCommandCenter.shared()
commandCenter.playCommand.addTarget { (event) -> MPRemoteCommandHandlerStatus in
self.audioPlayClicked()
return .success
}
commandCenter.pauseCommand.addTarget { (event) -> MPRemoteCommandHandlerStatus in
self.audioPauseClicked()
return .success
}
commandCenter.stopCommand.addTarget { (event) -> MPRemoteCommandHandlerStatus in
self.audioStopClicked()
return .success
}
}
}
Run Code Online (Sandbox Code Playgroud)
最后,我在Info.plist中添加了背景模式:
<key>UIBackgroundModes</key>
<array>
<string>audio</string>
</array>
Run Code Online (Sandbox Code Playgroud)
怎么了?我可以毫无问题地构建项目,然后在iPhone 8上运行它。我的音乐可以播放。
但是锁定屏幕上没有音频控件(屏幕为空)。
而且,如果我查看iOS控制中心,则会找到一些音频控件,但是通过单击其中的“播放”按钮,只会播放我以前使用过的Apple音乐应用程序的音轨。
因此,我认为我的应用未在系统范围内“注册”为当前的音频播放器。
我不知道您能解决问题,但也许有人遇到问题,这篇文章可以帮助他们。
我有同样的问题,
我终于找到了问题,
当我设置AVAudioSession时,我正在使用此行-> try
AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback, with: AVAudioSessionCategoryOptions.duckOthers)
Run Code Online (Sandbox Code Playgroud)
一旦我将该行更改为以下内容,锁定屏幕控件就会显示并正常工作->
try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback, with: [])
Run Code Online (Sandbox Code Playgroud)
所以我想问题出在传入AVAudioSessionCategoryPlaybackOptions的参数。我尝试传递.duckOthers和.mixWithOthers,在两种情况下,它都导致锁定屏幕控件根本不显示
| 归档时间: |
|
| 查看次数: |
856 次 |
| 最近记录: |