Objective-C应用中YouTube嵌入视频需实现标题跳转至YouTube的问题
解决YouTube嵌入视频标题可点击跳转的问题
一、调整嵌入URL参数
YouTube嵌入链接默认会显示视频标题,但可以通过参数明确确保标题区域可交互。修改你的URL拼接代码,添加必要参数:
NSString *embedURLString = [NSString stringWithFormat:@"https://www.youtube.com/embed/%@?modestbranding=0&controls=1", rowViewModel.videoId]; NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:embedURLString]];
modestbranding=0:保留YouTube品牌元素(含标题栏),明确设置可避免意外隐藏标题controls=1:启用视频控制栏,保障标题区域的交互性
二、配置WKWebView导航代理处理跳转
默认情况下WKWebView会拦截外部跳转请求,需实现WKNavigationDelegate处理标题点击后的跳转逻辑:
- 为webView设置代理:
webView.navigationDelegate = self;
- 实现代理方法处理跳转:
- (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler { NSURL *requestURL = navigationAction.request.URL; // 判断是否为YouTube主站跳转请求(标题点击会触发此类请求) if ([requestURL.host containsString:@"youtube.com"] && ![requestURL.absoluteString containsString:@"/embed/"]) { // 调用系统应用打开跳转链接 if ([[UIApplication sharedApplication] canOpenURL:requestURL]) { [[UIApplication sharedApplication] openURL:requestURL options:@{} completionHandler:nil]; // 阻止WebView内部跳转 decisionHandler(WKNavigationActionPolicyCancel); return; } } // 允许视频内部的正常跳转 decisionHandler(WKNavigationActionPolicyAllow); }
- 在ViewController头文件声明遵循协议:
@interface YourViewController : UIViewController <WKNavigationDelegate>
三、验证效果
修改后重新运行应用,嵌入视频的标题会变为可点击状态,点击后将跳转至系统默认浏览器或YouTube应用,符合YouTube的要求。
内容的提问来源于stack exchange,提问作者Hayden
相关产品推荐
相关产品推荐

