iOS:可以直接在Safari中打开NSURLRequest吗?

时间:2012-03-26 22:38:19

标签: ios post mobile-safari nsurlrequest

我不是在谈论UIWebView,我想使用NSURLRequest打开移动版Safari游戏。

为什么呢?在我的应用程序中,用户已登录我们的Web服务器。我想让用户选择启动网页而无需重新输入凭据。但是,我无法使用GET因为这会将其凭据放入网址。

那么,我可以使用UIWebViewNSURLRequest以其他形式打开我的应用中的Safari应用(不是POST)吗?

2 个答案:

答案 0 :(得分:10)

我要把我的脖子放在线上说拒绝 - 没有办法将NSURLRequest直接传给Safari。 iOS上的(主要)应用程序间通信介质是访问URL;没有将对象从一个应用程序传递到另一个应用程序的通用机制。

我认为您能做的最好的事情就是从应用中的Web服务器获取one-time key,然后使用URL中的内容弹出Safari。并且,如果可以,通过HTTPS执行此操作,以便只有在TLS协商成功后,URL路径和查询组件才可见。这应该阻止任何其他人看到相关的凭据,并阻止它们有用,即使它们是通过其他方式获得的(例如你旁边有人从屏幕复制URL)。

答案 1 :(得分:0)

使用NSURL或仅使用NSString或仅使用char *会更简单。 我不确定它是否适用于iPhone,它应该是,因为iPhone就像OSX一样与Darwin并行运行,但在iPhone上有一些限制。 这肯定适用于Mac。

NSString *url = @"http://www.apple.com";
NSURL *myURL = [NSURL URLWithString:url];
system([ [NSString 
          stringWithFormat:@"Open -a Safari %@", 
          [NSString stringWithContentsOfURL:myURL encoding:NSUTF8StringEncoding error:NULL] ]
          cStringUsingEncoding:NSUTF8StringEncoding]);

另外,我可能会建议这是一个坏主意(如果可以避免)。作为一名iPhone用户,我确信当开发人员将我从我目前的应用程序中带走时,我并不是唯一一个感到非常恼火的人。