При попытке показать видео YouTube в моем приложении с помощью встроенного способа отображается код ошибки: 152 – 4.
Я просто хочу создать представление, в котором передача идентификатора YouTube будет воспроизводить видео YouTube на определенных экранах/представлениях моего приложения. Теперь эта ошибка возникает при попытке воспроизвести видео.
Какое решение этой проблемы? Пока не могу найти.
Мой код:
final class YouTubePlayerViewController: UIViewController, WKNavigationDelegate {
var youtubeId: String
private var webView: WKWebView!
init(youtubeId: String) {
self.youtubeId = youtubeId
super.init(nibName: nil, bundle: nil)
}
required init?(coder: NSCoder) { fatalError() }
override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = .black
setupWebView()
loadPlayer()
}
private func setupWebView() {
let config = WKWebViewConfiguration()
config.allowsInlineMediaPlayback = true
config.allowsAirPlayForMediaPlayback = true
config.allowsPictureInPictureMediaPlayback = true
config.mediaTypesRequiringUserActionForPlayback = []
// Required — tells WKWebView it is allowed to autoplay / inline play
let prefs = WKWebpagePreferences()
prefs.allowsContentJavaScript = true
config.defaultWebpagePreferences = prefs
webView = WKWebView(frame: view.bounds, configuration: config)
webView.autoresizingMask = [.flexibleWidth, .flexibleHeight]
webView.navigationDelegate = self
webView.scrollView.isScrollEnabled = false
webView.scrollView.bounces = false
webView.backgroundColor = .black
webView.isOpaque = true
view.addSubview(webView)
}
func loadPlayer() {
// The critical trick: we load a real youtube.com URL as the *base*
// and inject an autoplay embed via HTML. Because the base URL is
// genuinely youtube.com, WKWebView passes YouTube's origin check.
let html = """
html, body {
margin: 0; padding: 0;
background: #000;
width: 100%; height: 100%;
overflow: hidden;
}
iframe {
position: absolute;
top: 0; left: 0;
width: 100%; height: 100%;
border: none;
}
"""
// baseURL MUST be a real youtube.com origin — this is what fixes Error 152
webView.loadHTMLString(html, baseURL: URL(string: "https://www.youtube.com"))
}
func updateYoutubeId(_ newId: String) {
guard newId != youtubeId else { return }
youtubeId = newId
loadPlayer()
}
}
Подробнее здесь: https://stackoverflow.com/questions/799 ... code-152-4
Это видео недоступно | Код ошибки: 152 – 4. ⇐ IOS
Программируем под IOS
-
Anonymous
1772653549
Anonymous
При попытке показать видео YouTube в моем приложении с помощью встроенного способа отображается код ошибки: 152 – 4.
Я просто хочу создать представление, в котором передача идентификатора YouTube будет воспроизводить видео YouTube на определенных экранах/представлениях моего приложения. Теперь эта ошибка возникает при попытке воспроизвести видео.
Какое решение этой проблемы? Пока не могу найти.
Мой код:
final class YouTubePlayerViewController: UIViewController, WKNavigationDelegate {
var youtubeId: String
private var webView: WKWebView!
init(youtubeId: String) {
self.youtubeId = youtubeId
super.init(nibName: nil, bundle: nil)
}
required init?(coder: NSCoder) { fatalError() }
override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = .black
setupWebView()
loadPlayer()
}
private func setupWebView() {
let config = WKWebViewConfiguration()
config.allowsInlineMediaPlayback = true
config.allowsAirPlayForMediaPlayback = true
config.allowsPictureInPictureMediaPlayback = true
config.mediaTypesRequiringUserActionForPlayback = []
// Required — tells WKWebView it is allowed to autoplay / inline play
let prefs = WKWebpagePreferences()
prefs.allowsContentJavaScript = true
config.defaultWebpagePreferences = prefs
webView = WKWebView(frame: view.bounds, configuration: config)
webView.autoresizingMask = [.flexibleWidth, .flexibleHeight]
webView.navigationDelegate = self
webView.scrollView.isScrollEnabled = false
webView.scrollView.bounces = false
webView.backgroundColor = .black
webView.isOpaque = true
view.addSubview(webView)
}
func loadPlayer() {
// The critical trick: we load a real youtube.com URL as the *base*
// and inject an autoplay embed via HTML. Because the base URL is
// genuinely youtube.com, WKWebView passes YouTube's origin check.
let html = """
html, body {
margin: 0; padding: 0;
background: #000;
width: 100%; height: 100%;
overflow: hidden;
}
iframe {
position: absolute;
top: 0; left: 0;
width: 100%; height: 100%;
border: none;
}
"""
// baseURL MUST be a real youtube.com origin — this is what fixes Error 152
webView.loadHTMLString(html, baseURL: URL(string: "https://www.youtube.com"))
}
func updateYoutubeId(_ newId: String) {
guard newId != youtubeId else { return }
youtubeId = newId
loadPlayer()
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79901141/this-video-is-unavilable-error-code-152-4[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия