Как мне инициировать запуск iOS AVPlayer
, чтобы начать и остановить воспроизведение (используя Swift 2.2)?Каковы функции запуска и остановки выделенного AVPlayer?
Мое наблюдение Связи посылает команды сообщения «начать» и «остановить». Как мне закодировать функции здесь, чтобы реагировать и реагировать с игроком?
Сообщения о связях с часами работают правильно, чтобы воспроизводить аудио с помощью AudioPlayer в другом контроллере. Теперь я пытаюсь адаптировать это для управления видео.
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
let destination = segue.destinationViewController as!
AVPlayerViewController
let url = NSURL(string: self.specimen.filmMovieLink)
destination.player = AVPlayer(URL: url!)
}
// WATCH CONNECTIVITY MESSAGE TO TRIGGER START AND STOP VIDEO
func session(session: WCSession, didReceiveMessage message: [String : AnyObject], replyHandler: ([String : AnyObject]) -> Void) {
var replyValues = Dictionary<String, AnyObject>()
switch message["command"] as! String {
case "start" :
//play video - correct here
player.Play()
replyValues["status"] = "Playing"
case "stop" :
//stop video - correct here
player.stopPlay()
replyValues["status"] = "Stopped"
case "volume" :
let level = message["level"] as! Float
//player.adjustVolume(level)
replyValues["status"] = "Vol = \(level)"
default:
break
}
replyHandler(replyValues)
}
}
Я получаю сообщение об ошибке «Использование неразрешенного идентификатора 'игрока на линии player.Play() и player.StopPlay(). Я попытался заменить„игрок“с„AVPlayer“,' destination 'и' AVPlayerViewController ', но это не исправляет.
Благодарю вас, я изучаю это, очень полезно. Идея передать URL-адрес контроллеру вида для AV-плеера является хорошей, я попробую это сейчас. Это кодирование предназначено для прототипа (для целей тестирования/тестирования), поэтому «быстрый и грязный взлом» путем сокращения углов по-прежнему имеет значение (в качестве бизнес-решения это случай, когда «застревание» имеет значение в прототипировании сперва с быстрое и грязное решение/обходное решение, в то время как я смотрю ваши мудрые предложения для более устойчивых решений). Я попробую код в диспетчере сеансов и передаю URL другому VC. Еще раз спасибо –
Нет проблем! Хотя в прототипировании есть * значение *, имейте в виду, что технический долг складывается быстро! Быстрый и грязный код часто неожиданно превращает его в версию доставки, потому что люди слишком заняты реализацией других функций и не имеют времени, чтобы переписать взлом. «О, хорошо, мы позаботимся об этом в следующей версии». И тогда им приходится иметь дело с ошибками/сбоями в отгруженном приложении из-за утечек памяти, условий гонки, работы на более быстрых/медленных устройствах/сетях и т. Д. –