#ios #swift #watchkit #apple-watch #watchapp
#iOS #swift #watchkit #apple-watch #watchapp
Вопрос:
Здесь я прилагаю свой код и снимок экрана с разрешением, пожалуйста, сообщите, в чем здесь проблемы
я попробовал руководство Apple для разработчиков с этим URLhttps://developer.apple.com/documentation/watchkit/playing_background_audio
но все еще не работает.
func play(url : URL) {
if #available(watchOSApplicationExtension 5.0, *) {
do {
WKExtension.shared().isFrontmostTimeoutExtended = true
try AVAudioSession.sharedInstance().setCategory(AVAudioSession.Category(rawValue: AVAudioSession.Category.playback.rawValue), mode: AVAudioSession.Mode.moviePlayback, options: AVAudioSession.CategoryOptions.duckOthers)
} catch let error {
print("** Unable to set up the audio session: (error.localizedDescription) **")
// Handle the error here.
return
}
do {
self.player = try AVAudioPlayer(contentsOf: url)
// player!.prepareToPlay()
player?.delegate = self
} catch let error {
print("** Unable to set up the audio player: (error.localizedDescription) **")
// Handle the error here.
return
}
print("nPlaying audio!")
self.player?.play()
// Activate and request the route.
audioSession?.activate(options: []) { (success, error) in
print("Success (success)")
print("error (String(describing: error))")
guard error == nil else {
print("** An error occurred: (error!.localizedDescription) **")
// Handle the error here.
return
}
// Play the audio file.
if success {
} else {
print("audio session activation failded")
}
}
} else {
print("alert")
}
}
Ответ №1:
Вам необходимо установить категорию перед активацией опции
Приведенный ниже список кодов показывает все шаги, необходимые для настройки сеанса, его активации и начала воспроизведения.
// Set up the session.
let audioSession = AVAudioSession.sharedInstance()
do {
try audioSession.setCategory(AVAudioSession.Category.playback,
mode: .default,
policy: .longForm,
options: [])
} catch let error {
fatalError("*** Unable to set up the audio session: (error.localizedDescription) ***")
}
// Set up the player.
let player: AVAudioPlayer
do {
player = try AVAudioPlayer(data: audioData)
} catch let error {
print("*** Unable to set up the audio player: (error.localizedDescription) ***")
// Handle the error here.
return
}
// Activate and request the route.
audioSession.activate(options: []) { (success, error) in
guard error == nil else {
print("*** An error occurred: (error!.localizedDescription) ***")
// Handle the error here.
return
}
// Play the audio file.
player.play()
}
Комментарии:
1. здесь я сделал то же самое с кодом, но не с gos с активацией и запросом маршрута. часть, которая всегда возвращает false