我覺得肯定是有辦法來完成你在找什麼在這裏。既然你說你已經成功實現了第一步,那麼聽起來你已經爲你的應用程序註冊了一個自定義的URL方案,並且在Safari中設置了一個URL,用戶點擊它打開你的應用程序。讓我們假設你的自定義URL方案是myApp://
在這種情況下,所有你需要做的就是嵌入任何信息,你的應用程序需要知道在哪裏發送Safari瀏覽器作爲URL的一部分,像myapp://mysite.com/page/to/display
然後,在應用程序委託的application:openURL:sourceApplication:annotation:
方法,您可以查看用於打開應用程序的URL,並存儲您需要通知Safari返回的部分,本例中爲mysite.com/page/to/display
。 (如果您使用的是iOS版本早於4.2,那麼簡單的方法application:handleOpenURL:
將改爲調用。)
因此,讓我們假設,在這個方法中,我們保存我們的財產openedURL
按如下方法給出的URL(本當你要重新啓動Safari瀏覽器,只需使用保存的信息,打開Safari瀏覽器,以正確的地方
- (BOOL)application:(UIApplication *)application
openURL:(NSURL *)url
sourceApplication:(NSString *)sourceApplication
annotation:(id)annotation {
self.openedURL = openURL;
}
然後:代碼放在你的應用程序代理)。你需要換出myApp:
方案與http:
,使其被髮送到Safari瀏覽器:
NSURL *safariURL = [[NSURL alloc] initWithScheme:@"http"
host:[openedURL host]
path:[openedURL path]];
[[UIApplication sharedApplication] openURL:[safariURL autorelease]];
如果打開需要發其他信息到您的應用程序,這似乎是有可能的URL,那麼你需要做的事情更復雜一些,但是你仍然可以在Safari中嵌入你想返回的頁面作爲查詢參數或者類似的東西:myApp://process?arg1=foo,arg2=bar,safariContext=mysite.com/page/to/display
(當然有正確的URL編碼)。
這有道理嗎?