#ios #swift #wkwebview
#iOS #swift #wkwebview
Вопрос:
Я хочу, чтобы мое видео транслировалось в режиме просмотра, а не занимало экран, я указал это всеми способами, переключил опцию в раскадровках и по-прежнему ничего. любые мысли или идеи, возможно, чего-то не хватает, пожалуйста, не стесняйтесь самостоятельно протестировать код и посмотреть результат (заполняет весь экран и по-прежнему не может воспроизводиться встроенным.)
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
let webConfiguration = WKWebViewConfiguration()
webConfiguration.allowsInlineMediaPlayback = true
webConfiguration.mediaTypesRequiringUserActionForPlayback = []
LiveStream = WKWebView(frame: CGRect(x: 0, y: 0, width: 375, height: 300), configuration: webConfiguration)
self.view.addSubview(LiveStream)
if let videoURL:URL = URL(string: "https://devstreaming-cdn.apple.com/videos/streaming/examples/img_bipbop_adv_example_ts/master.m3u8?playsinline=1") {
let request:URLRequest = URLRequest(url: videoURL)
LiveStream.load(request)
}
Отредактировал ссылку на время безотказной работы 24/7 ( https://devstreaming-cdn.apple.com/videos/streaming/examples/img_bipbop_adv_example_ts/master.m3u8?playsinline=1 )
Комментарии:
1. @rmaddy почему это не возможная проблема с xcode (вы удалили тег xcode?), я неправильно понимаю систему тегов?
2. Теги представляют, о чем идет речь. Ваш вопрос не об IDE Xcode. Тот факт, что вы используете Xcode для разработки своего приложения, не имеет отношения к вашему вопросу. Что было бы гораздо полезнее, так это добавить тег, указывающий, для какой ОС это предназначено (iOS или macOS).
Ответ №1:
Я вижу здесь некоторые ошибки.
Прежде всего, вы уже добавили WKWebView
в свою раскадровку, и я предполагаю, что из вашего
@IBOutlet var LiveStream: WKWebView!
и вы также снова добавляете его в свой просмотр с
self.view.addSubview(LiveStream)
Что является неправильным способом его добавления.
Для этого вы можете использовать UIView
.
Для этого добавьте UIView
в свою раскадровку и создайте IBOutlet
для этого
@IBOutlet weak var viewForEmbeddingWebView: UIView!
затем объявите экземпляр var LiveStream: WKWebView!
Теперь вы можете настроить LiveStream
, как показано ниже:
let webConfiguration = WKWebViewConfiguration()
webConfiguration.allowsInlineMediaPlayback = true
webConfiguration.mediaTypesRequiringUserActionForPlayback = []
LiveStream = WKWebView(frame: viewForEmbeddingWebView.frame, configuration: webConfiguration)
self.viewForEmbeddingWebView.addSubview(LiveStream)
if let videoURL:URL = URL(string: "https://www.youtube.com/embed/9n1e1N0Sa9k?playsinline=1") {
let request:URLRequest = URLRequest(url: videoURL)
LiveStream.load(request)
}
И ваш результат будет:
Как вы заметили, видео воспроизводится внутри WKWebView
не в полноэкранном режиме.
Примечание:
Ваш URL
у меня не работал, поэтому я использовал другой URL
для демонстрации.
Комментарии:
1. да, я понял, что тоже дважды объявлял это сам. этот метод, похоже, работает с видеороликами YouTube, но не со ссылкой .m3u8, поскольку он не обращает внимания на встроенную политику. @Dharmesh я также перезапустил тестовый поток, так что теперь он должен работать
2. попробуйте эту ссылку, если она перейдет в автономный режим, это приведет к тому же ошибочному результату: devstreaming-cdn.apple.com/videos/streaming/examples/… @Dharmesh