2011-08-06 112 views
3

我想實現一個類似於mailto在Safari中工作的自定義URL方案。在我的html中,我有一個鏈接到我的自定義方案(例如,myapp:// parms),它將調用我的應用程序,該應用程序定義了myapp方案。當myapp完成時,我想返回到Safari瀏覽器頁面。如果你有'mailto:',郵件應用程序有一個取消按鈕。如果你推送它,或者發送,完成後它會消失,Safari頁面在那裏。iOS URL Scheme,完成後返回Safari

我知道我不應該殺我的應用程序。如果我嘗試,它會回到家,而不是Safari。如何讓我的自定義方案應用程序消失(隱藏?)完成後調用應用程序回來?

回答

4

您可以讓方案指定一個回調URL,當您完成任務時您打開一個回調URL。例如,

myapp://dosomeaction?callback=http://referring-site.com 

,那麼只需在閱讀回調網址,並使用openURL:去那裏。你甚至可以添加一些額外的參數來指示調用者的成功/失敗。

+0

與此問題是調用自定義方案的網頁是一種形式,我想從窗體調用自定義應用程序並返回,我不能釋放窗體上的所有數據。再次調用瀏覽器會丟失表單上已經輸入的任何數據。 mailto:的處理方式正是我想要做的。 – sjay

+0

你不能像mailto那樣完成它:因爲這是由操作系統處理的,並且使用模式化的MFMailComposeViewController。您無法以相同的方式展示您的應用,只能切換到該應用。 – jtbandes

3

這裏最好的辦法就是將自己想要返回的URL傳遞到自定義方案的URL中。換句話說,您需要對「回調」網址進行網址編碼,並將其作爲用於打開您的應用的網址中的一個元素。

當您的應用程序完成其任務時,它將使用它在打開URL時使用的這些數據,以使用[[UIApplication sharedApplication] openURL:yourURL]方法再次打開該URL。

+0

按照OP的指示完成後,郵件應用程序返回到Safari時,它的工作方式是什麼? –