gpt4 book ai didi

ios - ios-在WkWebView中禁用Youtube自动播放

转载 作者:行者123 更新时间:2023-12-01 19:58:33 25 4
gpt4 key购买 nike

我正在使用WKWebView打开pages in Youtube。问题是,打开后他们开始播放视频并进入全屏模式,这是不希望的行为。视频没有被嵌入,整个页面都有描述,评论等。

有办法阻止他们玩吗?

最佳答案

有用。
请阅读评论。

import UIKit
import WebKit
import RxSwift

class WebViewController: UIViewController {

let webview: WKWebView

init() {
// 🌟 add config
let config = WKWebViewConfiguration()
config.allowsInlineMediaPlayback = true
if #available(iOS 10.0, *) {
config.mediaTypesRequiringUserActionForPlayback = .video
}
self.webview = WKWebView(frame: .zero, configuration: config)

super.init(nibName: nil, bundle: nil)
webview.frame = view.bounds
subscribeURL()
}

private func subscribeURL() {
self.webview.rx.url
.shareReplay(1)
.subscribe(onNext: { [weak self] url in
guard let url = url else { return }
// 🌟 Navigation Delegate can not detect transition because YouTube is Single Page Application.
startInlinePlayApplyInterval()
})
.addDisposableTo(disposeBag)
}

private func startInlinePlayApplyInterval() {
// 🌟 There is time rag to come out new video element so start repeat interval.
//Useful Timer extension: http://stackoverflow.com/a/39600244/3276863
let loop = Timer.schedule(repeatInterval: 0.2) { [weak self] timer in
self?.applyInlinePlay { success in
if success {
timer?.invalidate()
}
}
}
Timer.schedule(delay: 2) { _ in
loop?.invalidate()
}
}

private func applyInlinePlay(completion: @escaping (Bool)->Void) {
// 🌟 add attributes 'webkit-playsinline','playsinline','controls' to video element
let script = "(function(){var applied=document.querySelector('video').attributes.playsinline!=undefined;if(applied){return false}var videos=document.querySelectorAll('video');var attrList=['webkit-playsinline','playsinline','controls'];for(video of videos){for(attr of attrList){video.setAttribute(attr,'');}}return true})();"
webview.evaluateJavaScript(script) { res, err in
let isSuccessToApply: Bool = (res as? Bool) ?? false
completion(isSuccessToApply)
}
}
}

关于ios - ios-在WkWebView中禁用Youtube自动播放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41005298/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com