我不是在谈论UIWebView
,我想使用NSURLRequest
打开移动版Safari游戏。
为什么呢?在我的应用程序中,用户已登录我们的Web服务器。我想让用户选择启动网页而无需重新输入凭据。但是,我无法使用GET
因为这会将其凭据放入网址。
那么,我可以使用UIWebView
或NSURLRequest
以其他形式打开我的应用中的Safari应用(不是POST
)吗?
答案 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用户,我确信当开发人员将我从我目前的应用程序中带走时,我并不是唯一一个感到非常恼火的人。