2011-06-17 75 views
0

我的用例是這樣的,我想從safari啓動我的應用程序,並從我的應用程序返回到Safari的相同會話。 第1步:在iOS中啓動和恢復Safari應用程序的會話

  • 啓動我的應用程序從Safari瀏覽器[能夠成功實現這一目標]

步驟2:通過維修器材從應用程序是在同一會話

  • 啓動野生動物園推出[步驟1]

如何實現步驟2?

下面的代碼是啓動野生動物園

NSString *strurl = @"http://www.google.com" 
NSURL *url = [NSURL URLWithtring:strurl]; 
[[UIApplication sharedApplication] openURL:url]; 

注:上面的代碼將推出Safari瀏覽器的URL specied。

- 我如何通過恢復以前的會話來啓動Safari?

  • 有沒有送我的頁面的唯一ID時,我從它啓動一個應用程序,所以,當我嘗試推出Safari瀏覽器從我的應用程序回來,這將是有益的Safari瀏覽器的任何posibility。[僅僅是一個模糊理念]。

PLease reply。

謝謝你, 的Suse

回答

0

我覺得肯定是有辦法來完成你在找什麼在這裏。既然你說你已經成功實現了第一步,那麼聽起來你已經爲你的應用程序註冊了一個自定義的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編碼)。

這有道理嗎?

相關問題