在iOS 9.0.2中的Webview中播放管视频

时间:2015-10-12 09:43:37

标签: ios objective-c webview youtube ios9

使用youtube播放webView视频时遇到问题。我提供了一个html字符串作为输入,其中提供了youtube视频url。我的webView已成功加载。同样在webViewDidFinishLoad的代表中,我可以使用 - webView.request.URL.absoluteString

获取正确的网址

但奇怪的是,除了webview的背景颜色外,我看不到任何界面。这发生在iOS 9.0.2. simulator iOS 9.0.的{​​{1}}工作正常。

此外,在iOS 8.3的设备上,它工作正常。仅在iOS 9.0.2的设备上,它无效。

以下是我到目前为止编写的代码 -

NSString *strLink = [NSString stringWithFormat:@"https://www.youtube.com/embed/%@/clean",strVidID];

            youTubeVideoHTML = [NSString stringWithFormat:@"\
                             <html>\
                             <head>\
                             <style type=\"text/css\">\
                             iframe {position:absolute; margin-top:-0px;}\
                             body {background-color:#000; margin:0;}\
                             </style>\
                             </head>\
                             <body>\
                             <iframe width=\"100%%\" height=\"100%%\" src=\"%@\" frameborder=\"0\" allowfullscreen></iframe>\
                             </body>\
                             </html>", strLink];

            [self.webVwVideoPlayer loadHTMLString:youTubeVideoHTML baseURL:baseURL];

其中,self.webVwVideoPlayerUIWebView的出口。

此外,根据新的应用传输安全性,我已将plist文件修改为 -

<key>NSAppTransportSecurity</key>
    <dict>
        <key>NSAllowsArbitraryLoads</key>
        <true/>
    <key>NSExceptionDomains</key>
    <dict>
    <key>youtube.com</key>
    <dict>
    <!--Include to allow subdomains-->
    <key>NSIncludesSubdomains</key>
    <true/>


    <!--Include to allow insecure HTTP requests-->
    <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
    <true/>


    <!--Include to specify minimum TLS version-->
    <key>NSTemporaryExceptionMinimumTLSVersion</key>
    <string>TLSv1.1</string>
    </dict>
    </dict>
    </dict>

如果有人知道,请告诉我。

2 个答案:

答案 0 :(得分:2)

您可以使用XCDYouTubeVideoPlayerViewController。它无缝地将youtube视频添加到您的应用程序,而无需UIWebView。

它使用渐进式下载+ MoviePlayer和AVFoundation框架。只需提供一个youtube视频ID,就可以了。

它支持全屏和全屏非全屏和iOS模拟器上的工作!!!

示例:

XCDYouTubeVideoPlayerViewController *videoPlayerViewController = [[XCDYouTubeVideoPlayerViewController alloc] initWithVideoIdentifier:@"9bZkp7q19f0"];
[self presentMoviePlayerViewControllerAnimated:videoPlayerViewController];

答案 1 :(得分:0)

 UIWebView *video=[[UIWebView alloc]initWithFrame:CGRectMake(10, 10, SCREEN_WIDTH-20, 180)];
            video.scrollView.scrollEnabled = NO;
            NSString *strHtml = [NSString stringWithFormat:@"<iframe src=\"https://www.youtube.com/embed/%@\" width=\"280\" height=\"185\" frameborder=\"0\" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>",@"8syP39rL2kY"];
            NSString *htmlStringToLoad = [NSString stringWithFormat:@"https://www.youtube.com/%@",@"8syP39rL2kY"];
            [video loadHTMLString:strHtml baseURL:[NSURL URLWithString:htmlStringToLoad]];
            [self.view addSubview:video];