2012-09-20 56 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

相關問題