使用GData库在UIWebView中嵌入YouTube视频



我正在构建一个应用程序,可以访问特定用户的YouTube上传内容。为此,我使用了谷歌的GDataObjective-C客户端库。我用它来访问用户的上传源,并返回一个GDataEntryYouTubeVideos的NSArray。使用GDataEntryYouTubeVideo的htmlLink方法,我用一些特殊的HTML代码将url加载到UIWebView中。但是,UIWebView只显示了一个红色页面。

htmlLink返回的url是https。当我手动将https替换为http时,视频会按预期加载到UIWebView中。以下代码不加载YouTube视频:

- (void)viewDidLoad
{
    [super viewDidLoad];
    GDataServiceGoogleYouTube *youtubeService = [[GDataServiceGoogleYouTube alloc] init];
    NSURL *uploadUrl = [GDataServiceGoogleYouTube youTubeURLForUserID:@"higaara" userFeedID:kGDataYouTubeUserFeedIDUploads];
    void(^handler)(GDataServiceTicket *ticket, GDataFeedBase *feed, NSError *error) = ^(GDataServiceTicket *ticket, GDataFeedBase *feed, NSError *error)
    {
        NSLog(@"handler");
        // Get the link from the youtube entry
        GDataEntryYouTubeVideo *youTubeVideo = [feed firstEntry];
        NSString *htmlLinkString = [[youTubeVideo HTMLLink] href];
        // Create an html string to load into the web view
        NSString *htmlString = [NSString stringWithFormat:@"<html><head><meta name =
        "viewport" content = "initial-scale = 1.0, user-scalable = no, width =
        212"/></head><body style="background:#F00;margin-top:0px;margin-
        left:0px"><div><object width="212" height="172"><param name="movie"
        value="%@"></param><param name="wmode" value="transparent"></param><embed
        src="%@"type="application/x-shockwave-flash" wmode="transparent"
        width="212" height="172"></embed></object></div></body></html>",
        htmlLinkString, htmlLinkString];
        NSURL *tempurl = [NSURL URLWithString:@"http://onnati.net/apptrap"];
        [webView loadHTMLString:htmlString tempurl];
    };
    [youtubeService fetchFeedWithURL:uploadUrl completionHandler:handler];
}

htmlString中的html代码来自YouTube API博客上的这篇博客文章。

如果我用以下内容替换htmlLinkString创建行:

NSString *htmlLinkString = [[[youTubeVideo HTMLLink] href] stringByReplacingOccurrencesOfString:@"https://" withString:@"http://"];

则UIWebView正确地加载视频。

我不确定我在这里错过了什么为了将https url加载到UIWebView中,我还需要做些什么吗或者在返回标准非安全URL的GData库中缺少什么?

希望能解决这个老问题:

一些旧版本的移动Safari会自动将YouTube Flash嵌入到可点击的缩略图中,该缩略图将使用另一种播放机制,因为iOS显然不支持Flash。将这些嵌入转换为可点击链接的逻辑可能有一个硬编码模式,用于检查http://而不是https:// URL。

建议在iOS UIWebView中嵌入YouTube视频的方法是使用iframe嵌入。您可以从数据API获取视频id,然后使用它来构造iframe URL。

相关内容

  • 没有找到相关文章

最新更新