• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

ios - 在 Safari 中打开 Swift 3 UIWebView(视频中的 YouTube Logo /水印超链接)

[复制链接]
菜鸟教程小白 发表于 2022-12-11 19:07:08 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

使用 Swift 3 和 UIWebView 如何强制通过网页 IFrame 播放的 YouTube 视频中显示的 YouTube Logo /水印“超链接”在 Safari 中打开?

我正在使用 UIWebView(目前还不能转换到 WKWebView。)来显示一个在 IFrame 中播放 YouTube 视频的网页。

按照 https://developers.google.com/youtube/player_parameters?csw=1#modestbranding 上的“YouTube 嵌入式播放器和播放器参数”说明进行操作.我可以使用 showinfo=0 从视频顶部删除标题和分享按钮。这只会留下 YouTube Logo /水印。

当您点击 YouTube Logo /水印时,它会在我的应用中打开 YouTube,这不利于用户导航体验。

如果用户单击 YouTube Logo /水印,我需要在 Safari 中打开此链接。我尝试使用下面显示的代码,但没有成功。该代码适用于 UIWebView 中的所有其他链接,但不适用于嵌入实际视频中的 YouTube Logo /水印超链接。

//ViewController.swift

导入 UIKit

类 ViewController: UIViewController, UIWebViewDelegate {

@IBOutlet var webView: UIWebView!
override func viewDidLoad() {
    super.viewDidLoad()
    webView.delegate = self
    if let url = URL(string: "http://www.example.com") {
        let request = URLRequest(url: url)
        webView.loadRequest(request)
    }
}


//Force all links to open in Safari.
func webView(_ webView: UIWebView, shouldStartLoadWith request: URLRequest, navigationType: UIWebViewNavigationType) -> Bool {
    if let url = request.url, navigationType == UIWebViewNavigationType.linkClicked {
        UIApplication.shared.openURL(url)
        return false
   }
    return true
}}

我能够使用 WebView link click open default browser 中的示例在我的应用程序的 android 版本中实现这一点.

我花了一周的时间试图弄清楚这一点,以免浪费任何人的时间来解决已经回答的问题。 任何帮助解决这个问题将不胜感激。谢谢!



Best Answer-推荐答案


我正在寻找完全相同的解决方案,我想知道是否有人可以帮助解决这个问题

我用下面的代码片段试了一下

func webView(_ webView: UIWebView, shouldStartLoadWith request: URLRequest, navigationType: UIWebViewNavigationType) -> Bool {
    if navigationType == UIWebViewNavigationType.linkClicked {
        guard let abURL = request.url else { return true }
        let abRequest = URLRequest(url: abURL)
        print(abURL)
        print(abRequest)
        if abURL.absoluteString.range(of: "youtube") != nil {
            // Open links in Safari
            if #available(iOS 10.0, *) {
                UIApplication.shared.open(abURL, options: [:], completionHandler: nil)
            } else {
                UIApplication.shared.openURL(abURL)
            }
        } else {
            // Open links in Webview
            webView.loadRequest(abRequest)
        }
        return false
    }
    return true
}

在第 5/6 行,如果点击链接,我会打印 url,当我点击视频中的 Youtube 水印(包含在 iframe 中)时,我没有打印出该 url,所以我的猜测是 swift不“知道”链接被点击。所有其他链接都在工作并打印网址。

我还包含了一个 iframe,其中只有一个指向 youtube 的链接

<a href="https://youtube.com">Youtube Link</a>

这个链接有效,我可以打印网址并在 safari 中打开,所以问题一定出在 youtube 嵌入容器内的链接

关于ios - 在 Safari 中打开 Swift 3 UIWebView(视频中的 YouTube Logo /水印超链接),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42516744/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap