iOS10のWKWebViewではビデオのインライン再生はできない→できます!
2016/10/28追記: 初回投稿時に「iOS10のWKWebViewではビデオのインライン再生はできない」として作成した記事ですが、その後の検証によりインライン再生できることが分かりました。
そのため現在の内容は初出時の内容を一部修正したものになっています。ご了承ください。
iOS 10からmobile Safariでビデオをインライン再生できるようになりました。<video>
タグにplaysinline
を指定することで、ビデオがインラインで再生されるようになります。
developer.apple.com uupaa.hatenablog.com
同じことがWKWebViewでできないかを確認してみたのですが…残念ながらまだできませんでした。ところ、同様にインライン再生出来ることが分かりました。
確認した環境は以下のとおりです。
ソースコードは以下のとおりで、WKWebViewConfiguration
を用意しそのallowsInlineMediaPlayback
プロパティをtrue
にしているのがポイントです。
let config = WKWebViewConfiguration() config.allowsInlineMediaPlayback = true // ⭐ここがポイント! let webView = WKWebView(frame: self.view.frame, configuration: config) // configと共にインスタンス化 self.view.addSubview(webview) let url = URL(string: "ここにvideo+playsinlineなURLを入力") let request = URLRequest(url: url!) self.webnavigation = self.webview?.load(request)
HTML側のコードは以下のとおり。こちらのサイトにあるコードを使わせてもらっています。
<video>
の中にplaysinline
と、念のためのwebkit-playsinline
がありますが、これがiOS10(のSafari)でインライン再生するために必要な属性です。
<!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1, user-scalable=no"> <meta charset="utf-8"> </head><body> <video src="http://devimages.apple.com.edgekey.net/streaming/examples/bipbop_4x3/bipbop_4x3_variant.m3u8", controls playsinline webkit-playsinline style="position:absolute;top:0;left:0;outline:1px solid red;width:320px"> </video> <p style="position:absolute;top:100px;left:10px;color:lime"> Hello inline player </p> </body></html>
で、これを確認するとmobileSafariと同様にインラインで再生してくれます。あれだけ苦労していたインライン再生が、いとも簡単にできてしまいました。
余談
ちなみにWKWebViewを2つ並べて再生してみたのですが、それだと片方ずつのガクガクな再生になってしまいました。高望みしてはいけませんね。