Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 如何使用WkWebView内联播放视频_Iphone_Swift_Video_Wkwebview - Fatal编程技术网

Iphone 如何使用WkWebView内联播放视频

Iphone 如何使用WkWebView内联播放视频,iphone,swift,video,wkwebview,Iphone,Swift,Video,Wkwebview,当您使用iphone并在网络视图中播放视频时,此视频将在本机播放器中全屏打开 我们已尝试将UIWebView和WKWebView的“allowsInlineMediaPlayback”属性设置为true。但网络内容中的视频将在iphone iOS 10.2上全屏发布。你知道我能做什么吗 let webConfiguration = WKWebViewConfiguration() // Fix Fullscreen mode for video and autoplay webConfigura

当您使用iphone并在网络视图中播放视频时,此视频将在本机播放器中全屏打开

我们已尝试将UIWebView和WKWebView的“allowsInlineMediaPlayback”属性设置为true。但网络内容中的视频将在iphone iOS 10.2上全屏发布。你知道我能做什么吗

let webConfiguration = WKWebViewConfiguration()
// Fix Fullscreen mode for video and autoplay
webConfiguration.preferences.javaScriptEnabled = true
webConfiguration.mediaPlaybackRequiresUserAction = false
webConfiguration.allowsInlineMediaPlayback = true

webView = WKWebView(frame: CGRect(x: 0, y: 0, width:self.backgroundView.frame.width, height:self.backgroundView.frame.height), configuration: webConfiguration)
Env:Xcode 8,swift 3

我最后这样做了:

func load(url: String) {
    let html = "<video playsinline controls width=\"100%\" src=\"\(url)\"> </video>"
    self.webView.loadHTMLString(html, baseURL: nil)
}
func加载(url:String){
让html=“”
self.webView.loadHTMLString(html,baseURL:nil)
}

将web视图加载为HTML,并添加一些视频标记以自定义用户体验。

以下是无需HTML字符串即可完成此操作的最佳方法。还添加了一个托管在archive.org上的测试视频,这样您就可以避免观看“大公兔”测试视频恐怖秀:

Swift 4:

if let mediaURL:URL = URL(string: "https://ia800307.us.archive.org/14/items/electricsheep-flock-244-32500-9/00244%3D32649%3D22645%3D23652_512kb.mp4") {
    let request:URLRequest = URLRequest(url: mediaURL);
    self.webView.load(request)
}
Obj-C:

NSURL *mediaURL = [NSURL URLWithString:@"https://ia800307.us.archive.org/14/items/electricsheep-flock-244-32500-9/00244%3D32649%3D22645%3D23652_512kb.mp4"];

NSURLRequest *request = [NSURLRequest requestWithURL:mediaURL]
[self.webView loadRequest:request];

代码没有问题,但您还需要一个步骤,您使用的视频
URL
应始终带有参数
playsinline=1

//step1
if let videoURL:URL = URL(string: "https://somevideo.mp4?playsinline=1")
//step2
webConfiguration.allowsInlineMediaPlayback = true

然后你可以做剩下的事情。

这里有一个你想要的解决方案,我通过编程制作播放器,并更改一些代码,在线播放视频。

var myPlayer: WKWebView!

    override func viewDidLoad() {
        super.viewDidLoad()

        let webConfiguration = WKWebViewConfiguration()
        webConfiguration.allowsInlineMediaPlayback = true
        webConfiguration.mediaTypesRequiringUserActionForPlayback = []

        myPlayer = WKWebView(frame: CGRect(x: 0, y: 0, width: 375, height: 300), configuration: webConfiguration)
        self.view.addSubview(myPlayer)

        if let videoURL:URL = URL(string: "https://www.youtube.com/embed/9n1e1N0Sa9k?playsinline=1") {
             let request:URLRequest = URLRequest(url: videoURL)
             myPlayer.load(request)
        }

        //OR to show player control also, use this
        /*if let videoURL:URL = URL(string: "https://www.youtube.com/embed/9n1e1N0Sa9k?playsinline=1&controls:1") {
             let request:URLRequest = URLRequest(url: videoURL)
             myPlayer.load(request)
        }*/
    }
这对我很有用:

let configuration = WKWebViewConfiguration()
if #available(iOS 10.0, *) {
   configuration.mediaTypesRequiringUserActionForPlayback = []
}
configuration.allowsInlineMediaPlayback = true
let webView = WKWebView(frame: frame, configuration: configuration)

你好你得到答案了吗?这对我来说也很有效。但我确实包括:
第1步也可以通过设置web视频的脚本来完成。别忘了,您可能需要mediaTypesRequiringUserActionForPlayback=[]注意,如果您的WKWebView是通过故事板初始化的,则必须检查“内联播放”框,而不是以编程方式传入WKWebView配置。@Hardik媒体播放或暂停时,如何获得通知?您需要在WKWebView中播放视频?或者你正在寻找youtube播放器?