MPRemoteCommandCenter SomeTimes не отображается
У меня есть музыкальный проигрыватель, который использует Superpowered в качестве аудиоплеера. Я следовал этой статье, чтобы реализовать виджет игрока. Тем не менее, виджет иногда появляется, а часто нет.Я хочу, чтобы виджет проигрывателя отображался при воспроизведении аудио.
RemoteCommandManager.swift: (из статьи)
AppDelegate.swift:
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
UIApplication.shared.beginReceivingRemoteControlEvents()
// Override point for customization after application launch.
// Initializer the `RemoteCommandManager`.
remoteCommandManager = RemoteCommandManager()
// Always enable playback commands in MPRemoteCommandCenter.
remoteCommandManager.activatePlaybackCommands(true)
// Setup AVAudioSession to indicate to the system you how intend to play audio.
let audioSession = AVAudioSession.sharedInstance()
do {
try audioSession.setCategory(AVAudioSessionCategoryPlayback, mode: AVAudioSessionModeDefault)
}
catch {
print("An error occured setting the audio session category: \(error)")
}
return true
}
PlayerManager.swift:
func play() {
let _ = try? AVAudioSession.sharedInstance().setActive(true)
superpowered.play()
}
ОБНОВИТЬ:
Я заметил следующий сценарий:
Если воспроизводится дорожка iTunes (т. Е. Присутствует виджет плеера), то я воспроизводю аудиофайл с помощью своего приложения, виджет плеера изменяется так, что он отображает информацию о моем приложении.
Я предполагаю, что когда я активирую аудио сеанс, виджет проигрывателя переключается с iTunes на мое приложение. Однако, когда виджет проигрывателя отсутствует, активация аудиосеанса не может его представить.
1 ответ
Попробуйте настроить audioSession на активное в AppDelegate, чуть выше возвращаемой функции func application(_ application: UIApplication, didFinishLaunchingWithOptions....
// Set the AVAudioSession as active. This is required so that your application becomes the "Now Playing" app.
do {
try audioSession.setActive(true, with: [])
}
catch {
print("An Error occured activating the audio session: \(error)")
}
и проверьте, помогает ли это.