web-dev-qa-db-ja.com

WkWebViewでビデオをインラインで再生する方法

IPhoneを使用してWebビューでビデオを再生すると、このビデオはネイティブプレーヤーでフルスクリーンで開かれます。

「allowsInlineMediaPlayback」プロパティをtrueに設定してUIWebViewとWKWebViewを試しました。しかし、Webコンテンツのビデオは、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

18
UBLearn

コードに問題はありませんが、もう1つの手順が必要です。使用するビデオURLは常にパラメーターplaysinline=1

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

その後、あなたは左の事をすることができます。

13
onewh

ここにあなたが望む解決策があります、私はプレーヤーをプログラムで作り、いくつかのコードを変更して、ビデオをオンラインで再生します。

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)
        }*/
    }
6
Hardik Thakkar

私はそうしました:

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

WebビューをHTMLとしてロードし、ビデオタグを追加してUXをカスタマイズします。

HTML文字列を必要とせずにそれを行うための最良の方法は次のとおりです。また、archive.orgでホストされるテストビデオを追加して、大金バニーのテストビデオホラーショーを回避できるようにしました。

スウィフト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];
2
crow

これは私のために働いた:

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