4

为了在 youtube 应用程序上启动视频,我使用以下代码。

NSURL *instagramURL = [NSURL URLWithString:@"youtube://foo"];
if ([[UIApplication sharedApplication] canOpenURL:instagramURL]) {
    NSLog(@"opening youtube app...");
    NSString *stringURL = @"http://www.youtube.com/watch?v=H9VdapQyWfg";
    NSURL *url = [NSURL URLWithString:stringURL];
    [[UIApplication sharedApplication] openURL:url];
} else {
    // open in UIWebView in WebViewViewController
    WebViewViewController *secondView = [self.storyboard instantiateViewControllerWithIdentifier:@"webinterface"];

    secondView.headerLabel = @"YouTube";
    secondView.webPath = @"http://www.youtube.com/watch?v=H9VdapQyWfg";

    [self.navigationController pushViewController:secondView animated:YES];
}

现在客户改变主意并要求将频道放入 iPhone 应用程序中。

为了测试,我使用了链接http://www.youtube.com/user/richarddawkinsdotnet

但是当我使用这个链接不是 youtube 应用程序时,它总是在 SAFARI 中打开。:(

关于如何通过提供的链接在 YouTube 应用中打开频道的任何想法/建议?

4

3 回答 3

12

您的代码出错了,因为尽管您正在检查是否可以或多或少正确地打开 youtube URL,但您只是打开了一个网址,该网址将始终在 Safari 中打开。

这是我刚刚使用的代码,它对我有用。如果您想回退到使用 webviewcontroller,您可能需要修改 else 语句,因为如果未安装 youtube 应用程序,这将打开 Safari。

NSString *channelName = @"TheNameOfTheChannel";

NSURL *linkToAppURL = [NSURL URLWithString:[NSString stringWithFormat:@"youtube://user/%@",channelName]];
NSURL *linkToWebURL = [NSURL URLWithString:[NSString stringWithFormat:@"http://www.youtube.com/user/%@",channelName]];

if ([[UIApplication sharedApplication] canOpenURL:linkToAppURL]) {
    // Can open the youtube app URL so launch the youTube app with this URL
    [[UIApplication sharedApplication] openURL:linkToAppURL];
}
else{
    // Can't open the youtube app URL so launch Safari instead
    [[UIApplication sharedApplication] openURL:linkToWebURL];
}
于 2013-10-15T15:39:21.403 回答
1

相同的答案,但更短:

if (![[UIApplication sharedApplication] openURL: [NSURL URLWithString: @"youtube://user/%channelName%"]]) {
  NSURL *webURL = [NSURL URLWithString:@"http://www.youtube.com/user/%channelName%"];
  [[UIApplication sharedApplication] openURL: webURL];
}

和推特:

if (![[UIApplication sharedApplication] openURL: [NSURL URLWithString: @"twitter://user?screen_name=%channelName%"]]) {
  NSURL *webURL = [NSURL URLWithString:@"http://twitter.com/%channelName%"];
  [[UIApplication sharedApplication] openURL: webURL];
}

这是更详尽的应用程序列表:

http://wiki.akosma.com/IPhone_URL_Schemes

于 2014-01-30T15:21:08.347 回答
0

youtube://user/<channel-id>停止工作,iOS 9所以我研究并发现它现在在 iOS 9 中运行良好

youtube://www.youtube.com/channel/<channel-id>

于 2015-09-28T12:31:47.697 回答