问题 如何使用tvOS打开另一个应用程序?


是否 UIApplication:openURL 工作?

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

这没什么。


3929
2017-09-20 08:22


起源

你想打开通常由TVOS中没有的safari处理的iTunesLink,你可以通过打开设置来测试它[[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]]; - Adnan Aftab
有什么事吗?我也有同样的问题... - El Dude


答案:


我假设你想要测试一个 自定义URL方案。你会想要使用 canOpenURL 查看是否可以先打开URL。 canOpenURL 返回一个 BOOL 指示URL的方案是否可以由设备上安装的某个应用程序处理的值。如果 canOpenURL 回报 YES 然后你会继续打开URL openURL

YouTube链接默认在iOS设备上打开YouTube应用。此行为尚未在新的Apple TV上测试,因为YouTube的应用程序无法在tvOS测试版中访问。

这是一个如何使用的例子 canOpenURL 使用其Cutsom URL方案查看Facebook是否安装在iOS设备上:

OBJ-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方案。


10
2017-09-20 11:10



谢谢。有没有一种方法可以在模拟器上测试? - Prasanna Prasad
@PrasannaPrasad创建一个应用程序并实现自定义URL方案,即。 ApplicationOne://。然后创建另一个应用程序,通过您声明的自定义URL方案打开第一个应用程序。例如, if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"ApplicationOne://"]])。 这是一个很好的截图 如何实现自定义URL方案。 - Daniel Storm
@DanielStorm你能为这个问题做一个基于Swift的答案吗? :) - esaruoho
它说openURL不可用,Xcode 8.2.1 - Hlung
@Hlung你需要使用Swift 3语法。 - Daniel Storm