【问题标题】:How do I open another application with tvOS?如何使用 tvOS 打开另一个应用程序?
【发布时间】:2015-09-20 08:22:00
【问题描述】:

UIApplication:openURL 有效吗?

NSString *iTunesLink = @"http://www.youtube.com/watch?v=TFFkK2SmPg4";
BOOL did = [[UIApplication sharedApplication] openURL:[NSURL URLWithString:iTunesLink]];

这没有任何作用。

【问题讨论】:

  • 您要打开通常由 safari 处理的 iTunesLink,在 TVOS 中不可用,您可以通过打开设置进行测试 [[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];
  • 这有什么结果吗?我也有同样的问题...

标签: objective-c tvos


【解决方案1】:

我假设您想要测试 Custom URL Scheme。您将需要使用canOpenURL 来查看是否可以先打开 URL。 canOpenURL 返回一个 BOOL 值,指示 URL 的方案是否可以由设备上安装的某些应用程序处理。如果canOpenURL 返回YES,那么您将继续使用openURL 打开网址。

默认情况下,YouTube 链接会在 iOS 设备上打开 YouTube 应用。由于 YouTube 的应用无法在 tvOS 测试版中访问,因此此行为尚未在新 Apple TV 上进行测试。

下面是一个示例,说明如何使用canOpenURL 来查看 Facebook 是否使用其自定义 URL 方案安装在 iOS 设备上:

对象-C:

// Check if FB app installed on device
if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"fb://"]]) {
   [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"fb://profile/355356557838717"]];
}
else {
   // FB not installed
   // Do something else
}

斯威夫特:

// Check if FB app installed on device
if UIApplication.sharedApplication().canOpenURL(NSURL(string:"fb://")!) {
    UIApplication.sharedApplication().openURL(NSURL(string:"fb://profile/355356557838717")!)
}
else {
    // FB not installed
    // Do something else
} 

我预计 Facebook 等应用程序将采用与 iOS 对应的相同方式实现其自定义 URL 方案。

【讨论】:

  • 谢谢。有什么方法可以在模拟器上测试吗?
  • @PrasannaPrasad 创建一个应用程序并实现一个自定义 URL 方案,即。 ApplicationOne://。然后创建另一个应用程序,通过您声明的自定义 URL 方案打开第一个应用程序。例如,if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"ApplicationOne://"]])Here's a nice screenshot 如何实现自定义 URL 方案。
  • @DanielStorm 您能否为这个问题编写一个基于 Swift 的答案? :)
  • @Hlung 你需要使用 Swift 3 语法。