在 swift 中禁用来自 WKWebview 的 Youtube 应用程序重定向
Disable Youtube app redirect from WKWebview in swift
我在 Swift 中使用 WKWebView 开发了简单的网络浏览器。
当我点击 Youtube link 时,Youtube 应用程序自动启动。
我希望在我的网络浏览器中播放 Youtube 视频。
我不需要启动 Youtube 应用程序。
请帮助我。
这是我的示例代码。
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
let webViewConfiguration = WKWebViewConfiguration()
webViewConfiguration.allowsInlineMediaPlayback = true
wkWebView.configuration.allowsInlineMediaPlayback = true
wkWebView.navigationDelegate = self
let myURL = URL(string: "https://www.google.com")
let youtubeRequest = URLRequest(url: myURL!)
wkWebView.load(youtubeRequest)
}
很遗憾,您不能以编程方式执行此操作。以下是手动实现所需内容的步骤。
- 从主屏幕打开 YouTube 应用程序
- 点击右上角的头像。
- 转到“设置”并点击 Google 应用程序设置
- 检查 Safari 选项。
是的,你可以这样做。
首先您需要在您的 webview 中设置一个 WKNavigationDelegate,然后在 webview:decidePolicyFor 方法中取消任何 link 激活的 youtube 请求,并强制它在您的 webview 中加载。
func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {
if navigationAction.navigationType == .linkActivated && navigationAction.request.url?.host?.hasSuffix("youtube.com") {
decisionHandler(.cancel)
DispatchQueue.main.async {
webView.load(navigationAction.request)
}
} else {
decisionHandler(.allow)
}
}
我在 Swift 中使用 WKWebView 开发了简单的网络浏览器。 当我点击 Youtube link 时,Youtube 应用程序自动启动。 我希望在我的网络浏览器中播放 Youtube 视频。 我不需要启动 Youtube 应用程序。 请帮助我。
这是我的示例代码。
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
let webViewConfiguration = WKWebViewConfiguration()
webViewConfiguration.allowsInlineMediaPlayback = true
wkWebView.configuration.allowsInlineMediaPlayback = true
wkWebView.navigationDelegate = self
let myURL = URL(string: "https://www.google.com")
let youtubeRequest = URLRequest(url: myURL!)
wkWebView.load(youtubeRequest)
}
很遗憾,您不能以编程方式执行此操作。以下是手动实现所需内容的步骤。
- 从主屏幕打开 YouTube 应用程序
- 点击右上角的头像。
- 转到“设置”并点击 Google 应用程序设置
- 检查 Safari 选项。
是的,你可以这样做。
首先您需要在您的 webview 中设置一个 WKNavigationDelegate,然后在 webview:decidePolicyFor 方法中取消任何 link 激活的 youtube 请求,并强制它在您的 webview 中加载。
func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {
if navigationAction.navigationType == .linkActivated && navigationAction.request.url?.host?.hasSuffix("youtube.com") {
decisionHandler(.cancel)
DispatchQueue.main.async {
webView.load(navigationAction.request)
}
} else {
decisionHandler(.allow)
}
}