2012-09-20 32 views
9

即使YouTube应用目前不是一个内置苹果的应用程序,它看起来敲击时一个YouTube链接(邮件等),这与http://www.youtube.com开始喜欢,打开的YouTube应用程序马上。启动自定义应用程序通过域

有没有办法来此为iOS 6的自定义应用程序?我只知道自定义方案是通过URL启动应用程序的方式。

+0

[这里](http://www.absoluteripple.com/1/post/2012/02/using-custom-url-scheme-to-launch- application.html)是我之前尝试在我的答案中发布的链接被删除的链接。对不起,@ChrisF ...仍在学习绳索。 – codeqi

+0

我发布了一个尽可能深的答案,我认为你可能需要。我在注册自定义网址的应用时遵循了完全相同的步骤。你能否看到我的答案是否回答你的问题? – SashaZd

+0

@SashaZd您的深度答案与答案无关,因为它没有解释YouTube应用程序的功能。 –

回答

2

我不知道我理解你的问题,但这里是我的上述问题的回答。你问是否有方法从另一个应用程序中打开第三方应用程序。如果应用程序实施了自定义URL方案,则答案是可以的(请参阅here并导航至“与其他应用程序通信”部分)。

但你似乎也说,你已经知道这一点。在这种情况下,我很确定没有其他办法。

0

我想象中的原生邮件应用程序使用的所有应用程序使用打开的网址(这将打开一个应用程序,或者使用移动Safari浏览器来完成请求,如果没有安装的应用程序可以处理的URL相同的方法)。

您应该能够使用来实现相同的结果如下:

NSString *youtubeURL = @"http://www.youtube.com/watch?v=c2JTu22qxms"; 
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:youtubeURL]]; 

如果已安装,这将打开YouTube应用或使用Safari播放视频,如果没有安装YouTube应用。

---- ----- UPDATE

我决定看看YouTube应用究竟是如何做到的。

我发现了一些有趣的东西!

这里有YouTube应用声明网址:

  • FB [APPID]

  • vnd.youtube

  • 的YouTube

这意味着http://www.youtube.com重定向将请求发送至li上的其中一个URL ST。但是,当我尝试它时,我没有看到Mobile Safari打开然后重定向。

我会继续调查,这是非常有趣的。

+0

问题是如何模仿除YouTube之外的自定义应用程序的此行为。 – Danra

+0

@Danra你绝对是对的!我对这个措辞感到困惑。 – Zebs

2

要为您的应用程序注册一个URL类型

在应用程式的Info.plist文件中CFBundleURLTypes关键。 CFBundleURLTypes键包含一个字典数组,每个字典都定义了应用程序支持的URL方案。

Keys and values of the CFBundleURLTypes property

调用URL(如上述注册)

NSURL *myURL = [NSURL URLWithString:@"todolist://www.acme.com?Quarterly%20Report#200806231300"]; 
[[UIApplication sharedApplication] openURL:myURL]; 

处理呼叫到自定义URL方案

,有它自己的自定义URL方案必须能的应用处理传递给它的URL。所有网址都会在启动时或您的应用运行时或在后台传递给您的应用代理。要处理传入的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:)方法处理实际打开的URL。 (如果您实施了这两种方法,则在打开URL之前,两者都必须返回YES)

如果您的应用程序正在运行但处于后台或在URL请求到达时被暂停,它将移至前台以打开URL。此后不久,系统调用代理的application:openURL:sourceApplication:annotation:来检查URL并将其打开。如果您的委托没有实现此方法(或当前系统版本为iOS 4.1或更低版本),则系统会调用您的代理的application:handleOpenURL:方法。

注意

如果两个或多个应用程序已注册了相同的自定义URL,没有一种机制保障其应用的,如果自定义URL被称为iOS版将打开。

进一步阅读

iOS App Programming Guide :: Advanced Tips and Trics

+0

谢谢,我在提到的问题中已经提到了自定义网址方案,并且正在寻找一种没有它们的方式,就像youtube一样。 – Danra

+1

Youtube使用自定义网址方案。是什么让你觉得它不? www.youtube.com/watch?是分配给YouTube的自定义URL模式 – SashaZd

+0

您认为“www.youtube.com/watch?”是一个URL方案吗? – Bogdacutu

相关问题