即使YouTube应用程序现在不是Apple的内置应用程序,但是当点击以http://www.youtube.com开头的youtube链接(例如邮件)时,它会立即打开YouTube应用程序。
对于iOS 6中的自定义应用,有没有办法解决这个问题?我只知道自定义方案是通过URL启动应用程序的方式。
答案 0 :(得分:2)
我不确定我理解你的问题,但这是我尝试回答的问题。你问是否有办法从另一个应用程序中打开第三方应用程序。答案是,如果应用程序已实现自定义URL方案,您可以使用(请参阅here并导航至“与其他应用程序通信”部分)。
但你似乎也说你已经知道了这一点。在这种情况下,我很确定没有别的办法。
答案 1 :(得分:2)
注册应用的网址类型
在应用的Info.plist文件中包含CFBundleURLTypes键。 CFBundleURLTypes键包含一个字典数组,每个字典都定义了应用程序支持的URL方案。
调用网址(注册如上)
NSURL *myURL = [NSURL URLWithString:@"todolist://www.acme.com?Quarterly%20Report#200806231300"];
[[UIApplication sharedApplication] openURL:myURL];
处理对自定义网址方案的调用
具有自己的自定义网址方案的应用必须能够处理传递给它的网址。所有网址都会在发布时或在您的应用运行时或在后台传递给您的应用代表。要处理传入的URL,您的委托应实现以下方法:
使用application:willFinishLaunchingWithOptions:
和application:didFinishLaunchingWithOptions:
方法检索有关URL的信息,并决定是否要将其打开。如果任一方法返回NO,则不会调用应用程序的URL处理代码。
在iOS 4.2及更高版本中,使用application:openURL:sourceApplication:annotation:
方法打开文件。
在iOS 4.1及更早版本中,使用application:handleOpenURL:
方法打开文件。
如果您的应用在URL请求到达时未运行,则会启动并移至前台,以便可以打开该URL。您的application:willFinishLaunchingWithOptions:
或application:didFinishLaunchingWithOptions:
方法的实施应从其选项词典中检索URL,并确定该应用是否可以打开它。如果可以,请返回YES并让您的application:openURL:sourceApplication:annotation:
(或application:handleOpenURL:
)方法处理实际打开的网址。 (如果实现这两种方法,则必须先返回YES才能打开URL。)
如果您的应用正在运行但处于后台或在URL请求到达时被暂停,则会将其移至前台以打开该URL。此后不久,系统调用代理人application:openURL:sourceApplication:annotation:
检查URL并将其打开。如果您的委托未实现此方法(或当前系统版本为iOS 4.1或更早版本),系统将调用您的委托的application:handleOpenURL:
方法。
注意强>
如果两个或多个应用程序注册了相同的自定义URL,则无法保证在调用自定义URL时iOS将打开哪个应用程序。
进一步阅读
答案 2 :(得分:0)
我认为本机邮件应用程序使用所有应用程序用来打开URL的相同方法(如果没有已安装的应用程序可以处理该URL,则会打开应用程序或使用Mobile Safari完成请求。)
您应该能够使用以下内容完成相同的结果:
NSString *youtubeURL = @"http://www.youtube.com/watch?v=c2JTu22qxms";
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:youtubeURL]];
如果已安装YouTube应用,则会打开该应用;如果未安装YouTube应用,则会使用Safari来播放视频。
----更新-----
我决定调查一下YouTube应用程序是如何做到的。
我找到了一些有趣的东西!
以下是YouTube应用声明的网址:
fb [appID]
vnd.youtube
的YouTube
这意味着http://www.youtube.com将请求重定向到列表中的一个URL。但是当我尝试它时,我看不到Mobile Safari打开然后重定向。
我会继续调查,这很有趣。