在iOS中启动和恢复Safari应用程序的会话

问题描述:

我的用例是这样的,我想从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

我觉得肯定是有办法来完成你在找什么在这里。既然你说你已经成功实现了第一步,那么听起来你已经为你的应用程序注册了一个自定义的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编码)。

这有道理吗?