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

我不是在谈论一个UIWebView ,我想打开使用NSURLRequest的移动Safari浏览器应用程序。

为什么? 在我的应用程序中,用户已经login到我们的Web服务器。 我想给用户select启动网页,而不必重新input他们的凭据。 但是,我不能使用GET因为这会将其凭据放在URL中。

所以,我可以从我的应用程序打开Safari应用程序(而不是一个UIWebView )与一个NSURLRequest或一个其他forms的POST

我要把我的脖子上线,并说不 – 没有办法将NSURLRequest直接传递给Safari。 iOS上的(主要)应用程序间通信媒体是访问URL; 没有通用机制将对象从一个应用程序传递到另一个应用程序。

我认为你能做的最好的方法就是从应用程序中的Web服务器获取一次性密钥 ,然后使用URL中的URL访问Safari。 而且,如果可以,请通过HTTPS执行此操作,以便URLpath和查询组件只有在TLS协商成功后才可见。 这应该阻止其他人看到相关的证书,并阻止他们的有用,即使他们是通过其他方式获得的(比如你旁边的人从你的屏幕上复制url)。

使用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]); 

此外,我可能会build议这是一个坏主意(如果可以避免的话)。 作为一名iPhone用户,我确信当开发者把我从现在的应用程序中带走的时候,我并不孤单。