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

ios - 在 iOS 中通过嵌入式 youtube iframe 使用共享功能

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

正如标题已经指出的那样,我在 iOS 上使用嵌入式 youtube iframe 播放器时遇到了一些问题。但首先是关于我的问题的背景。我有一组存储在设备上并加载到 WKWebView 中的 HTML 文件。这些文件仅包含简单的文本,有时还包含使用 iframe 语法嵌入的 youtube 视频。

<iframe width="100%" height="100%" id="playerId" type="text/html" src="https://www.youtube.com/embed/XXXXXXXX?enablejsapi=0&rel=0&playsinline=0&autoplay=0" frameborder="0">

播放、声音、进入全屏……一切都按预期进行。除了 youtube 播放器的信息部分(右上角的箭头)之外的所有内容。当我按下箭头时,屏幕打开,但选择 url 或其中一个共享选项没有任何效果,只能破坏嵌入的视频。我仍然可以关闭信息部分,但缩略图会消失,并且在我重新加载 HTML 文档之前不会播放。

现在我的猜测是 WKWebView 沙箱中有安全设置阻止我加载任何嵌入式链接。我想我记得 WebView 不允许 iframe 中带有 _blank 目标的链接,但我不确定。无论如何都无法更改。

感谢任何提示,

维克多



Best Answer-推荐答案


好的,

我自己(至少部分地)设法解决了这个问题。我查看了 WKWebView 及其 Delegates 的 header ,发现在打开带有 _blank 目标的链接时提到了 WebViews 行为的评论。由于 WebView 无法打开新窗口(这是空白强制执行的操作),它将调用其 UIDelegate 来请求新的 WKWebView 实例以打开“新窗口”链接(另见 https://developer.apple.com/reference/webkit/wkuidelegate/1536907-webview)。

我现在做的是实现委托(delegate),检查 navigationActions targetFrame 是否为 nil(这意味着它指向一个新窗口),然后在 Safari 中打开链接。不幸的是,这种链接处理总是会破坏播放器,因此我还必须触发重新加载嵌入的网络内容,以便将播放器“重置”回其初始状态。这对于在返回应用程序时恢复播放来说有点遗憾,但总比完全无法播放视频要好。

func webView(webView: WKWebView, createWebViewWithConfiguration configuration: WKWebViewConfiguration, forNavigationAction navigationAction: WKNavigationAction, windowFeatures: WKWindowFeatures) -> WKWebView? {

    if navigationAction.targetFrame == nil { 

        guard let requestURL = navigationAction.request.URL
            else { return nil }

        UIApplication.sharedApplication().openURL(requestURL)
        webView.reload()
    }

    return nil
}

关于ios - 在 iOS 中通过嵌入式 youtube iframe 使用共享功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39598991/

回复

使用道具 举报

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

本版积分规则

关注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